redis는 모든 면에서 큰 역할을 합니다. Python은 Redis 운영을 지원합니다. Django를 위해 특별히 설계된 redis 라이브러리, 즉 django-redis
pip install django-redis
setting.py와 같은 Django 구성 파일을 열고 CACHES 항목을 설정하세요
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
여러 Redis 연결 정보를 하나의 CACHES에 구성할 수 있습니다. 별칭(alias), 위의 "기본값"은 별칭을 통해 다른 redis 데이터베이스에 연결할 수 있습니다.
LOCATION은 IP 포트 사용자 비밀번호 등을 포함한 연결 정보입니다. 사용자 비밀번호가 필요하지 않은 경우 django- Redis는 다음과 같은 세 가지 연결 프로토콜을 지원합니다
protocol | description | example |
---|---|---|
redis:// | 일반 TCP 소켓 연결 | redis://[ [사용자 이름]: [비밀번호]]@localhost:6379/0 |
rediss | SSL TCP 소켓 연결 | rediss://[[사용자 이름]:[비밀번호]]@localhost:6379/0 |
rediss:// | Unix 도메인 소켓 연결 | unix://[[username]:[password]]@/path/to/socket.sock?db=0 |
Django의 기본 Session은 SQL 데이터베이스에 저장되지만 일반 데이터는 하드 디스크에 저장된다는 것은 우리 모두 알고 있기 때문에 Redis에 저장되도록 변경하려면 구성만 하면 됩니다. 단 한 번의 클릭으로
SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "default"
구성 항목에서 연결 시간 초과 시간(초)을 지정할 수 있습니다. SOCKET_CONNECT_TIMEOUT은 Redis 연결 시간 초과를 나타내며, SOCKET_TIMEOUT은 읽기 및 쓰기 시간 초과를 나타냅니다. redis를 사용하는 작업
CACHES = { "default": { # ... "OPTIONS": { "SOCKET_CONNECT_TIMEOUT": 5, # 连接redis超时时间,单位为秒 "SOCKET_TIMEOUT": 5, # redis读写操作超时时间,单位为秒 } } }
기본 redis, 즉 구성 파일에 "default" 별칭이 설정된 redis를 사용하려면 다음을 참조하세요. django.core.cache의 캐시
from django.core.cache import cache cache.set("name", "冰冷的希望", timeout=None) print(cache.get("name"))
구성 파일에 여러 Redis 연결을 작성할 때 별칭을 통해 사용할 Redis를 지정할 수 있습니다
from django_redis import get_redis_connection redis_conn = get_redis_connection("chain_info") redis_conn.set("name", "icy_hope") print(redis_conn.get("name"))
클라이언트가 가져온 get_redis_connection()은 기본 Redis 클라이언트이지만 기본적으로 모든 기본 Redis 명령을 지원하지만 반환되는 데이터는 바이트 유형이므로 직접 디코딩해야 합니다
5.1 연결 풀 구성
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", ... "OPTIONS": { "CONNECTION_POOL_KWARGS": {"max_connections": 100} } } }
5.2 연결 풀 사용
from django_redis import get_redis_connection redis_conn = get_redis_connection("default") redis_conn.set("name", "冰冷的希望") print(redis_conn.get("name")) # 查看目前已创建的连接数量 connection_pool = redis_conn.connection_pool print(connection_pool._created_connections)
5.3 사용자 정의 연결 풀
from redis.connection import ConnectionPool class MyPool(ConnectionPool): pass
을 상속할 수 있습니다. 이 클래스를 만든 후에도 여전히 Django 구성 파일에 이를 지정해야 합니다
"OPTIONS": { "CONNECTION_POOL_CLASS": "XXX.XXX.MyPool", }
위 내용은 장고 레디스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!