为什么我的 Redis Docker 容器在 KEYS * 上显示“(空数组)”,而我绝对确定它已缓存数据并且工作正常

Mat*_*cki 5 redis laravel docker

这是我的一部分docker-compose.yml

  redis:
    image: redis:alpine
    container_name: foo_redis
    volumes:
      - ./docker/volumes/redis:/data
    restart: unless-stopped
    ports:
      - 6379:6379
    networks:
      - local_network
Run Code Online (Sandbox Code Playgroud)

我可以保证数据在ups和 之间持续存在downs,因为我已经定义了volumes.

我可以证明数据是物理存储的,因为我在我的主机上dump.rdb看到了数据。./docker/volumes/redis

  • 当我启用调试栏时,我可以看到缓存内容的路由没有查询。
  • 当我清除 Laravel 的缓存并刷新页面时,我看到数据库查询的数量,第二次刷新 - 没有查询。显然它的工作没有任何问题。

然后我从我的主机上执行以下操作:

docker exec -it foo_redis redis-cli

我收到提示:

127.0.0.1:6379>

我输入KEYS *并得到:

127.0.0.1:6379> KEYS *
(empty array)
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)

为什么?我究竟做错了什么?Redis 似乎运行良好。我的 Laravel 应用程序有predis并且缓存工作没有问题。

编辑:

我的.env样子:

CACHE_DRIVER=redis
REDIS_CLIENT=predis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
Run Code Online (Sandbox Code Playgroud)

编辑2:

当我手动将某些内容放入redis时,它只显示该内容。

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> KEYS *
1) "hello"
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)

小智 2

旧答案,但也许对某人有用, 请检查使用的 Redis 数据库数量。

如果您的Redis数据库中包含非0(默认编号)的数字,请首先在CLI模式下设置DB编号,使用命令SELECT <db number>

示例:https: //redis.io/docs/manual/cli/#interactive-mode