问题
I'm using Laravel Cache facade, and the CACHE_DRIVER=redis
. All data is saved in Redis successfully, but when I use redis-cli
and run keys*
there are not keys!
When using the command flushall in redis-cli
it loads the data again from the database, so that means the keys are already stored in Redis.
回答1:
Redis has 16 databases indexed 0 - 15. The default database index is 0
, so when you run redis commands without specifying the database index, you're only running commands against database index 0
. However, as of Laravel 5.7, Laravel stores all the cache data in database index 1
.
In order to see the keys in your cache database, you need to query database 1
. You can either use the -n
switch on the command line to specify the database index, or use the select
command at the redis prompt to change the active database.
redis-cli -n 1 keys "*"
or
#> redis-cli
127.0.0.1:6379> select 1
127.0.0.1:6379[1]> keys *
回答2:
I had the same issue and I tried the accepted ans., however different databases was not the issue.
I was able to find the missing key using scan, like this Redis::scan('*')
. Why using Redis::keys('*')
is not returning the key, is still a mystery.
(To note only key:values created using Python were not returned with keys
, those created with Laravel were.)
来源:https://stackoverflow.com/questions/56566600/redis-keys-not-shown-while-using-cache-facade-in-laravel