>  기사  >  데이터 베이스  >  장고 레디스를 사용하는 방법

장고 레디스를 사용하는 방법

王林
王林앞으로
2023-06-03 14:53:131207검색

1. 설명

redis는 모든 면에서 큰 역할을 합니다. Python은 Redis 운영을 지원합니다. Django를 위해 특별히 설계된 redis 라이브러리, 즉 django-redis

2가 있습니다.

pip install django-redis

3. 구성

3.1 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

3.2 Redis를 사용하여 세션 저장

Django의 기본 Session은 SQL 데이터베이스에 저장되지만 일반 데이터는 하드 디스크에 저장된다는 것은 우리 모두 알고 있기 때문에 Redis에 저장되도록 변경하려면 구성만 하면 됩니다. 단 한 번의 클릭으로

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

3.3 Redis 연결 시간 초과 설정

구성 항목에서 연결 시간 초과 시간(초)을 지정할 수 있습니다. SOCKET_CONNECT_TIMEOUT은 Redis 연결 시간 초과를 나타내며, SOCKET_TIMEOUT은 읽기 및 쓰기 시간 초과를 나타냅니다. redis를 사용하는 작업

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "SOCKET_CONNECT_TIMEOUT": 5,  # 连接redis超时时间,单位为秒
            "SOCKET_TIMEOUT": 5,  # redis读写操作超时时间,单位为秒
        }
    }
}

4. redis 사용

4.1 기본 redis 사용

기본 redis, 즉 구성 파일에 "default" 별칭이 설정된 redis를 사용하려면 다음을 참조하세요. django.core.cache의 캐시

from django.core.cache import cache

cache.set("name", "冰冷的希望", timeout=None)
print(cache.get("name"))

4.2 지정된 redis(Native redis) 사용

구성 파일에 여러 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. 연결 풀을 사용하는 이점 연결 풀은 연결 개체를 관리할 필요가 없으며 일부 연결 개체를 자동으로 생성하고 반복 사용을 시도하므로 성능이 상대적으로 더 좋습니다

5.1 연결 풀 구성

연결 풀을 사용하려면 먼저 Django 구성 파일의 연결 풀에 최대 연결 수를 기록합니다

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        ...
        "OPTIONS": {
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    }
}

5.2 연결 풀 사용

us 연결 별칭을 통해 사용할 Redis를 결정한 다음 정상적으로 명령을 실행하면 됩니다. 어떤 연결 인스턴스가 생성되는지는 연결_풀

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 사용자 정의 연결 풀

의 _created_connections 속성을 통해 현재 생성된 연결 인스턴스 수를 확인할 수 있습니다. Django-redis의 기본 연결 클래스는 더 높은 사용자 정의 요구 사항이 있는 경우 DefaultClient입니다. , 자신만의 새 클래스를 만들고 ConnectionPool

from redis.connection import ConnectionPool

class MyPool(ConnectionPool):
    pass

을 상속할 수 있습니다. 이 클래스를 만든 후에도 여전히 Django 구성 파일에 이를 지정해야 합니다

"OPTIONS": {
    "CONNECTION_POOL_CLASS": "XXX.XXX.MyPool",
}

위 내용은 장고 레디스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제