Redis는 캐시, 메시지 큐, 카운터 및 기타 시나리오에서 일반적으로 사용되는 오픈 소스 고성능 키-값 스토리지 시스템입니다. 간결하고 효율적인 스크립팅 언어인 Python은 웹 백그라운드 처리, 데이터 분석 및 마이닝, 기계 학습, 인공 지능 및 기타 분야에서도 널리 사용됩니다. 이 기사에서는 Redis 설치, Python Redis 클라이언트 모듈 사용 및 특정 적용 사례를 포함하여 Python에서 Redis를 적용하는 방법에 대해 설명합니다.
1. Redis 설치
- 설치 파일 다운로드
Redis 공식 홈페이지에서는 소스코드와 미리 컴파일된 버전을 제공합니다. 미리 컴파일된 버전을 선택하면 최신 버전을 직접 다운로드할 수 있습니다.
- 압축해제 및 컴파일
다운로드가 완료된 후 지정된 디렉터리에 압축을 풀어주세요. make 명령을 사용하여 Redis를 실행 파일, 시작 스크립트 등으로 컴파일합니다. Linux 시스템에서는 다음 명령을 사용할 수 있습니다.
$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make
- Redis 서버 시작
컴파일이 완료된 후, redis를 사용할 수 있습니다. -server 명령은 Redis 서버를 시작합니다. 기본 수신 포트는 6379입니다.
$ src/redis-server
- 연결 테스트
redis-cli 명령을 사용하여 Redis 서버에 연결할 수 있습니다. 작동을 위해. 예를 들어 SET 명령을 사용하여 키-값 쌍을 설정합니다.
$ src/redis-cli
127.0.0.1:6379> SET mykey "Hello Redis"
OK
127.0.0.1:6379> Hello Redis"
2. Python Redis 클라이언트 모듈 사용
Python에서 Redis를 쉽게 사용하려면 redis-py 모듈을 Redis 클라이언트 라이브러리로 사용할 수 있습니다. pip 명령을 사용하여 설치할 수 있습니다:
$ pip install redis
Redis 서버에 연결- 먼저 Redis 서버에 연결하기 위한 Redis 객체를 생성해야 합니다. 다음 코드를 사용할 수 있습니다:
import redis
rds = redis.Redis(host='localhost', port=6379, db=0)
여기서 호스트와 포트는 각각 Redis 서버의 주소와 포트 번호입니다. , db는 Redis를 의미합니다. 데이터베이스 수, 기본값은 0입니다.
데이터 작업- Redis 객체를 사용하여 키-값 쌍 및 기타 작업을 설정, 획득, 삭제합니다. 예:
rds.set('name', 'Alice')
name = rds.get('name')
print(name) # 출력: b'Alice'
그 중 set 메소드는 다음과 같습니다. 키 값 쌍을 설정하는 데 사용되는 get 메소드는 키-값 쌍을 얻는 데 사용됩니다. get 메소드에 의해 반환된 데이터 유형은 바이트이며 decode 메소드를 사용하여 문자열로 변환되어야 한다는 점에 유의해야 합니다.
일괄 작업- 효율성 향상을 위해 Redis는 일괄 작업을 지원합니다. 파이프라인을 사용하면 여러 작업을 패키지화하여 Redis 서버로 전송할 수 있으므로 네트워크 오버헤드와 대기 시간이 줄어듭니다. 예:
pipe = rds.pipeline()
pipe.set('key1', 'value1')
pipe.set('key2', 'value2')
pipe.set('key3', 'value3 ' )
pipe.execute()
Pub/Sub 모드- Redis는 메시지 전송을 위한 게시/구독 모드를 제공합니다. Python Redis 클라이언트 라이브러리는 해당 API도 제공합니다. 예:
import time
pubsub = rds.pubsub()
pubsub.subscribe('channel')
rds.publish('channel', 'Hello')
time.sleep(1) # 1초 동안 기다립니다.
msg = pubsub.get_message()
print(msg) # 출력: {'type': 'message', 'channel': b'channel', 'data': b'Hello'}
그 중 구독은 메소드는 구독 채널을 나타내며, 게시 메소드는 메시지 게시를 의미합니다. 메시지를 얻으려면 get_message 메소드를 사용하십시오.
3. 특정 응용 사례
Caching- Python Redis 클라이언트 라이브러리를 사용하면 일반적으로 사용되는 데이터를 캐시하고 웹 응용 프로그램의 응답 속도를 높일 수 있습니다. 예:
import time
import redis
class Cache:
def __init__(self):
self.rds = redis.Redis(host='localhost', port=6379, db=0)
def get(self, key):
val = self.rds.get(key)
if val:
return val.decode()
return None
def set(self, key, val, ttl=60):
self.rds.set(key, val, ex=ttl)
로그인 후 복사
cache = Cache()
val = 캐시.get('key')
val이 아닌 경우:
# 从数据库中查询数据
val = 'value'
cache.set('key', val, ttl=60)
로그인 후 복사
print(val)
where Cache 클래스 Redis 캐시 구현을 캡슐화하고 get 및 set 메서드를 사용하여 캐시 데이터를 얻거나 설정합니다. 데이터를 가져오기 전에 캐시를 쿼리합니다. 캐시에 데이터가 없으면 데이터베이스에서 데이터를 읽고 캐시합니다.
분산 잠금- 분산 잠금은 여러 프로세스/스레드/노드가 협력할 때 리소스 경쟁을 피하기 위해 사용되는 동기화 메커니즘입니다. Python Redis 클라이언트 라이브러리를 사용하여 분산 잠금을 구현할 수 있습니다. 예:
import time
import redis
class Lock:
def __init__(self):
self.rds = redis.Redis(host='localhost', port=6379, db=0)
self.locked = False
def acquire(self, lockname, ttl=60):
identifier = str(time.time())
self.locked = self.rds.setnx(lockname, identifier)
if self.locked:
self.rds.expire(lockname, ttl)
return self.locked
def release(self, lockname):
if self.locked:
self.rds.delete(lockname)
로그인 후 복사
lock = Lock()
if lock.acquire('mylock'):
# 处理业务逻辑...
lock.release('mylock')
로그인 후 복사
Lock 클래스는 획득 및 획득을 사용하여 분산 잠금 구현을 캡슐화합니다. release 메소드는 잠금을 획득하거나 해제할 수 있습니다. 잠금을 획득할 때 잠금이 이미 사용 중인 경우 False를 반환하고, 잠금이 사용되지 않은 경우 잠금을 획득하고 만료 시간을 설정합니다.
요약하자면 Redis는 Python에서 널리 사용되며 캐시, 분산 잠금, 메시지 대기열, 카운터 및 기타 시나리오에서 사용할 수 있습니다. Python Redis 클라이언트 라이브러리는 편리한 데이터 작업을 위해 간단하고 사용하기 쉬운 API도 제공합니다.
위 내용은 Python에서 Redis 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!