Как увидеть ключи, установленные django-ratelimit на сервере redis?

Я использую следующее

django==3.1.3
django-ratelimit==3.0.1
django-redis==4.12.1
djangorestframework==3.12.2

Я пытаюсь установить ограничение скорости, чтобы ограничить количество вызовов запроса POST.

В моих настройках есть следующее:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        },
        "KEY_PREFIX": "my_app"
    }
}

У меня это есть в views.py. (Очень упрощенная версия)

@ratelimit(key='ip', rate='1/5m', method=['GET', 'POST'])
def rate_limit_func(request):
     if request.method == 'POST':
        return Response(status='200')

Ограничение скорости работает, как и ожидалось. Но я не вижу, чтобы какие-либо ключи сохранялись на сервере redis

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get ip
(nil)
127.0.0.1:6379> keys *
(empty list or set)

Я также пробовал искать ключ с помощью django shell

>>> from django.core.cache import cache
>>> 'ip' in cache
False

Я не уверен, правильно ли я все настроил и будет ли это работать в продакшене. Также, где устанавливаются значения кэша?

Я смотрел не туда. По умолчанию redis имеет базы данных с индексом от 0 до 15. В моем Django settings.py я использую базу данных с индексом 1 для моего кэша. Я могу выбрать эту базу данных с помощью redis-cli -n -1. Итак,

➜ redis-cli -n 1
127.0.0.1:6379[1]> keys *

Это дало мне список ключей, которые хранятся в django-ratelimit

Этот ответ StackOverflow помог мне разобраться в этом.

Вернуться на верх