如何通过redis-cli显示所有密钥?

我正在使用redis作为djangocaching的内存数据库后端。

特别是我用django-redisconfiguration如下:

CACHES = { 'default': { 'BACKEND': 'redis_cache.cache.RedisCache', 'KEY_PREFIX': DOMAIN_NAME, 'LOCATION': 'unix:/tmp/redis_6379.sock:1', 'OPTIONS': { 'PICKLE_VERSION': -1, # default 'PARSER_CLASS': 'redis.connection.HiredisParser', 'CLIENT_CLASS': 'redis_cache.client.DefaultClient', }, }, } 

我的Djangocaching似乎正常工作。

奇怪的是我无法使用redis-cli命令行查看djangocaching键。

请注意在下面,我尝试了两个

 $ redis-cli 

 $ redis-cli -s /tmp/redis_6379.sock 

[EndEdit中]

没有区别。

特别是使用KEYS *命令:

 $ redis-cli redis 127.0.0.1:6379> keys * (empty list or set) 

 redis 127.0.0.1:6379> set stefano test OK redis 127.0.0.1:6379> keys * 1) "stefano" 

而从Django壳:

 In [1]: from django.core.cache import cache In [2]: cache.keys('*') Out[2]: [u'django.contrib.sessions.cachebblhwb3chd6ev2bd85bawuz7g6pgaij8', u'django.contrib.sessions.cachewpxiheosc8qv5w4v6k3ml8cslcahiwna'] 

如果我在cli上使用MONITOR

 redis 127.0.0.1:6379> monitor OK 1373372711.017761 [1 unix:/tmp/redis_6379.sock] "KEYS" "project_prefix:1:*" 

我可以看到使用djangocaching前缀的请求; 这应该certificateredis-cli连接到相同的服务。 但是,即使在redis-clisearch该前缀,也会返回(empty list or set)

这是为什么?

什么是在同一个redis实例上划分不同caching的机制?

我会说有两种可能性:

1 / django应用程序可能无法连接到您认为已连接的Redis实例,或者您启动的redis-cli客户端未连接到相同的Redis实例。

请注意,在这两种情况下,您都不要使用相同的连接机制。 Django使用Unix域套接字,而redis-cli使用TCP环回(默认情况下)。 您可能想要使用相同的套接字path启动redis-cli,以确保:

 $ redis-cli -s /tmp/redis_6379.sock 

现在,由于您已经使用MONITOR命令validation了您看到了由Django发送的命令,因此我们可以假定您已连接到正确的实例。

2 / Redis中有一个数据库概念。 默认情况下,您有16个不同的数据库,并且当前的默认数据库为0. SELECT命令可用于将会话切换到另一个数据库。 每个数据库有一个密钥空间。

INFO KEYSPACE命令可用于检查某些键是否在多个数据库中定义。

 redis 127.0.0.1:6379[1]> info keyspace # Keyspace db0:keys=1,expires=0 db1:keys=1,expires=0 

在这里我有两个数据库,让我们来检查在db0数据库中定义的键:

 redis 127.0.0.1:6379> keys * 1) "foo" 

现在在db1数据库中:

 redis 127.0.0.1:6379> select 1 OK redis 127.0.0.1:6379[1]> keys * 1) "bar" 

我的build议也是检查Django应用程序是否在连接时将任何SELECT命令发送到Redis实例(使用MONITOR)。

我不熟悉Django,但是你定义LOCATION参数的方式让我觉得你的数据可能在数据库1(由于后缀)。

redis-cli -h KEYS“trendingKey *”

输出1)“趋势键:2:1”2)“趋势键:趋势102:1”3)“趋势键:趋势101:1”