Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

redis-py 4.1.0 출시! Redis 6.2 신규 명령어와 모듈 지원 한눈에 보기

redis-py 4.1.0 정식 출시!

Redis를 위한 파이썬 지원은 10년 넘게 꾸준히 성장해 왔으며, 현재 주간 다운로드 수가 100만 회를 돌파했습니다. 그리고 이번에 드디어 최신 릴리스인 redis-py 4.1.0이 공개되었습니다!

이번 릴리스는 Redis 6.2의 전체 명령어 지원에 한 걸음 더 가까워진 버전입니다. 기존 명령어에서 누락되었던 옵션들을 추가하고, Sentinel 연결에 대한 SSL 지원을 도입하는 등 개발자 경험 전반을 크게 개선했습니다. 또한 Python 3.6을 기반으로 구조를 재정비했으며, Python 3.10까지 지원 범위를 넓혔습니다. 클라이언트 문서도 새롭게 개편하여 원하는 Redis 명령어를 더 쉽게 찾을 수 있고, 누구나 프로젝트에 기여할 수 있도록 안내하고 있습니다. 무엇보다 호환성 문제 없이 안전하게 업그레이드할 수 있도록 최소한의 변경만으로 작업했다는 점이 큰 장점입니다.

최신 Redis 명령어 지원

Redis 6.2는 수많은 새로운 명령어를 선보였는데, 이제 파이썬에서도 그 어느 때보다 쉽게 활용할 수 있습니다. GETEX로 데이터 조회와 만료 시간 갱신을 한 번의 명령으로 처리하거나, CLIENT INFO와 CLIENT KILL로 클라이언트 연결을 관리하는 등 redis-py 4.1.0은 30개가 넘는 신규 명령어를 지원합니다. 아래 두 가지 예시를 통해 직접 확인해 보세요.

### GETEX
import redis
r = redis.Redis()
r.set('somekey', 'hello')
r.getex('somekey', ex=15) # returns 'hello'
r.ttl('somekey') # returns 15

### CLIENT INFO AND KILL
import redis
r = redis.Redis()
r2 = redis.Redis()
r.client_setname('redis-py-c1')
r2.client_setname('redis-py-c2')

clients = [client for client in r.client_list()
                   if client.get('name') in ['redis-py-c1', 'redis-py-c2']]
clients_by_name = dict([(client.get('name'), client)
                                for client in clients])
r.client_kill_filter(laddr=clients_by_name['redis-py-c2'].get('laddr'))

일급 클래스 수준의 Redis 모듈 지원

redis-py 4.0은 Redis 모듈을 일급(first-class)으로 지원한 최초의 파이썬 라이브러리였습니다. 그리고 redis-py 4.1.0에서는 RedisJSON, RediSearch, RedisTimeSeries, RedisGraph, RedisBloom까지 모두 지원합니다. 그렇습니다, 이제 Redis에 JSON 데이터를 손쉽게 저장할 수 있습니다! 저장한 데이터를 조작할 수 있을 뿐만 아니라 검색까지 가능합니다. 다만 JSON 데이터를 Redis에 저장하면 새로운 데이터 타입이 되므로, 반드시 JSON 전용 명령어를 사용해야 한다는 점을 기억하세요. 몇 가지 예시를 살펴보겠습니다.

### STORING and RETRIEVING JSON

import redis
r = redis.Redis()
myDoc = {'hello': 'world', 'colours': ['red', 'blue', 'green'], 'hmm': {'hello': 'again'}}
r.json().set('colors', '$', myDoc)
r.json().get('colors')

그렇다면 위의 myDoc처럼 복잡한 구조의 문서는 어떻게 다룰 수 있을까요? 문서의 일부를 쿼리하여 여러 키를 한 번에 가져올 수 있다는 사실, 알고 계셨나요?

### FETCHING ALL KEYS NAMED "hello" from the JSON document
r.json().get('colors', '$..hello')

심지어 RedisJSON과 RediSearch를 결합해 강력한 문서 검색 기능을 구현하거나, 자체 커스텀 Redis 모듈 지원을 추가하는 것도 가능합니다. 모든 기능이 redis-py 안에 준비되어 있습니다.

redis-py로 Redis 클러스터 연결하기

redis-py 4.1.0에는 redis-cluster 지원도 통합되어 있어, 두 가지 간단한 방법으로 클러스터에 연결할 수 있습니다. 단독(standalone) Redis 노드와 상호작용할 때와 동일한 뛰어난 개발 경험을 클러스터 환경에서도 그대로 누릴 수 있습니다.

### CONNECTING TO CLUSTER
from redis.cluster import RedisCluster
r = RedisCluster.from_url('redis://4.5.6.8:6379')
nodes = r.get_nodes()

SSL을 통해 클러스터에 연결하고 싶거나, 클래스 초기화 방식을 선호하거나, 특정 노드를 대상으로 명령을 실행하고 싶으신가요? redis-py 4.1.0은 이런 시나리오까지 모두 지원합니다.

### CONNECTING TO CLUSTER 2
from redis.cluster import RedisCluster
r = RedisCluster('4.5.6.8', port=6379, ssl=True)
r.ping(target_nodes='all')

앞으로의 계획은?

개발은 여기서 멈추지 않습니다. 앞으로 RedisAI를 비롯한 더 많은 모듈을 동일한 일급 경험으로 지원할 예정입니다. 또한 Redis 7에서 공개될 RESP3 함수 지원을 추가하고, 코드베이스의 성능도 지속적으로 개선해 나갈 계획입니다. 아울러 개발자 도구 작업을 병행하여 redis-py에 기여하고 활용하기 더욱 편리한 환경을 만들어 가겠습니다!