如何在 Redis 服务器中查看 django-ratelimit 设置的键?
How to see keys set by django-ratelimit in redis server?
我正在使用以下
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 的数据库作为缓存。我可以 select 使用 redis-cli -n -1
该数据库。所以,
➜ redis-cli -n 1
127.0.0.1:6379[1]> keys *
这给了我 django-ratelimit
存储的密钥列表
This Whosebug 的回答帮助我解决了这个问题。
我正在使用以下
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 的数据库作为缓存。我可以 select 使用 redis-cli -n -1
该数据库。所以,
➜ redis-cli -n 1
127.0.0.1:6379[1]> keys *
这给了我 django-ratelimit
This Whosebug 的回答帮助我解决了这个问题。