Skip to content

스크립트 개발 / 커넥터 객체 DFF.CONN / Redis

Redis 커넥터 작업 객체는 주로 Redis의 작업 메서드를 제공합니다.

DFF.CONN(...)의 매개변수는 다음과 같습니다.

매개변수 유형 필수 / 기본값 설명
connector_id str 필수 커넥터 ID
database str None 커넥터 구성의 데이터베이스 번호를 재정의합니다
client_name str None 이번 연결의 클라이언트 이름을 설정합니다

Redis Cluster는 논리 데이터베이스 선택을 지원하지 않으므로 클러스터 연결은 database를 무시합니다.

메시지 구독

커넥터에서 메시지 구독에 관한 내용은 스크립트 개발 / 커넥터 구독을 참조하십시오.

.query(...)

Redis의 execute_command(...)를 직접 호출하여 명령을 실행하며, 매개변수는 다음과 같습니다.

매개변수 유형 필수 / 기본값 설명
command str 필수 Redis 명령
*args - - Redis 명령 매개변수
**kwargs - - redis-py에 전달되는 매개변수
예제
1
2
3
db.query('SET', 'myKey', 'myValue', 'nx')
result = db.query('GET', 'myKey')
# b'myValue'

.query(...)는 redis-py의 반환값을 변환하지 않으며, 문자열 결과는 일반적으로 bytes입니다. 실제 사용 시 데이터 형식에 따라 변환할 수 있습니다.

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import json

result = db.query('GET', 'intValue')
print(int(result))

result = db.query('GET', 'strValue')
print(result.decode('utf-8'))

result = db.query('GET', 'jsonValue')
print(json.loads(result.decode('utf-8')))

.run(...)

redis-py의 메서드 이름을 사용하여 클라이언트 메서드를 호출하며, 시그니처는 .run(command, *args, **kwargs)입니다. 예를 들어:

예제
1
result = db.run('set', 'myKey', 'myValue', nx=True)

command는 대소문자를 구분하는 redis-py 메서드 이름이며, 일반적으로 소문자를 사용합니다. 반환값은 해당 redis-py 메서드와 동일합니다.

자주 사용하는 편의 메서드

커넥터는 다음과 같은 편의 메서드를 제공합니다. 읽기 계열 메서드는 해당 구현에서 bytes를 재귀적으로 UTF-8 문자열로 디코딩하므로 .query(...)의 원시 반환값과 다를 수 있습니다.

데이터베이스와 키

메서드 설명
.ping() 연결을 확인합니다
.info() Redis 정보를 가져옵니다
.dbsize() 현재 데이터베이스의 키 개수를 가져옵니다
.type(key) 키 유형을 가져옵니다; 키가 없으면 None을 반환합니다
.memory_usage(key, samples=0) 키가 차지하는 메모리를 가져옵니다
.keys(pattern='*', limit=None) SCAN을 사용하여 일치하는 키를 가져오고, 반환 개수를 제한할 수 있습니다
.exists(key) 키 존재 여부를 확인하고 bool을 반환합니다
.expire(key, expires) 초 단위 만료 시간을 설정합니다
.expireat(key, timestamp) 절대 만료 시간을 설정합니다
.ttl(key) / .pttl(key) 초 단위 / 밀리초 단위 남은 시간을 가져옵니다
.rename(key, new_key) 키 이름을 변경합니다
.renamenx(key, new_key) 새 키가 없을 때만 이름을 변경합니다
.delete(keys) 키 또는 키 목록을 삭제하고 삭제된 개수를 반환합니다

문자열과 해시

메서드 설명
.set(key, value, expires=None, not_exists=False, exists=False, get_old_value=False) 값을 설정하고, 만료 시간 및 NX, XX, GET 옵션을 설정할 수 있습니다
.mset(key_values) 딕셔너리의 키-값을 일괄 설정합니다
.get(key) 단일 값을 가져와 디코딩합니다
.mget(keys) 일괄적으로 가져와 {key: value}를 반환합니다
.getset(key, value) 새 값을 설정하고 이전 값을 반환합니다
.incr(key) / .incrby(key, step=1) / .incrbyfloat(key, step=1) 숫자 값을 증가시킵니다
.hkeys(key, pattern='*', with_values=False) HSCAN을 사용하여 필드를 가져옵니다; 값을 함께 반환할 수 있습니다
.hset(key, field=None, value=None, field_values=None) 하나의 필드 또는 필드 매핑을 설정합니다
.hmset(key, field_values) 필드를 일괄 설정합니다
.hsetnx(key, field, value) 필드가 없을 때만 설정합니다
.hget(key, field) / .hgetall(key) 필드 값을 가져와 디코딩합니다
.hmget(key, fields) 일괄적으로 가져와 {field: value}를 반환합니다
.hstrlen(key, field) / .hstrlenall(key) 하나 또는 모든 필드 값의 바이트 길이를 가져옵니다
.hincr(key, field) / .hincrby(key, field, step=1) / .hincrbyfloat(key, field, step=1) 필드 숫자 값을 증가시킵니다
.hdel(key, field) 하나의 필드 또는 필드 목록을 삭제합니다

리스트, 셋 및 정렬된 셋

메서드 설명
.lpush(key, value) / .rpush(key, value) 왼쪽 / 오른쪽에서 하나의 값 또는 값 목록을 푸시합니다
.lpop(key, count=None) / .rpop(key, count=None) 왼쪽 / 오른쪽에서 하나 이상의 값을 팝합니다
.blpop(key, timeout=0) / .brpop(key, timeout=0) 차단 팝
.rpoplpush(key, dest_key=None) 팝한 후 다른 리스트로 푸시합니다
.brpoplpush(key, dest_key=None, timeout=0) 차단 방식으로 팝한 후 푸시합니다
.llen(key) / .lrange(key, start=0, stop=-1) 리스트 길이 / 범위를 가져옵니다
.ltrim(key, start, stop) 리스트를 자릅니다
.push(...) / .pop(...) / .bpop(...) .lpush(...) / .rpop(...) / .brpop(...) 의 별칭
.sadd(key, member) / .srem(key, member) 하나의 멤버 또는 멤버 목록을 추가 / 삭제합니다
.scard(key) / .smembers(key) / .sismember(key, member) 셋의 크기, 멤버를 가져오거나 멤버인지 확인합니다
.zadd(key, member_scores) / .zrem(key, member) 정렬된 셋 멤버를 추가 / 삭제합니다
.zcard(key) 정렬된 셋 멤버 수를 가져옵니다
.zrange(key, start=0, stop=-1, with_scores=False) 위치 기준으로 멤버를 가져옵니다
.zrangebyscore(key, min_score='-inf', max_score='+inf', with_scores=False) 점수 기준으로 멤버를 가져옵니다

.publish(...)

Redis 채널에 메시지를 게시하고 메시지를 수신한 구독자 수를 반환합니다. .pub(...)는 그 별칭입니다.

예제
1
subscriber_count = db.publish('events', 'hello')

확장 메서드

메서드 설명
.eval(lua_script, key_count, *args) Lua 스크립트를 실행하고 반환값을 디코딩합니다
.push_limit(key, value, limit) 왼쪽에서 푸시한 후 리스트를 지정된 길이로 제한합니다
.get_pattern(pattern) 일치하는 키-값을 가져와 {key: value}를 반환합니다
.delete_pattern(pattern) 일치하는 모든 키를 삭제합니다
.hget_pattern(key, pattern) 일치하는 해시 필드와 값을 가져옵니다
.lock(lock_key, lock_value, max_lock_time) SET EX NX를 사용하여 잠금을 획득합니다
.extend_lock_time(lock_key, lock_value, max_lock_time) 잠금 보유자를 검증한 후 만료 시간을 연장합니다
.unlock(lock_key, lock_value) 잠금 값이 일치할 때만 잠금을 해제합니다