Почему мой док-контейнер Redis показывает «(пустой массив)» для КЛЮЧЕЙ *, хотя я абсолютно уверен, что в нем есть кэшированные данные, и он работает нормально

#laravel #docker #redis

#laravel #docker #redis

Вопрос:

Это часть моего 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
 

Я могу гарантировать, что данные сохраняются между 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>
 

Почему? Что я делаю не так? Redis, похоже, работает нормально. В моем приложении Laravel есть predis и кэширование работает без проблем.

Редактировать:

Мой .env выглядит так:

 CACHE_DRIVER=redis
REDIS_CLIENT=predis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
 

редактировать 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>
 

Комментарии:

1. Возможно, глупый вопрос, но вы уверены, что используете драйвер redis (поэтому также используется config: clear для очистки кэша)?

2. Привет, я добавил свою конфигурацию redis .env . Я использую CACHE_DRIVER=redis .

3. Да, но ваше приложение не должно учитывать ваш env-файл, если вы кэшировали конфигурацию перед ее изменением.

4. можем ли мы посмотреть, как вы используете кеш в коде laravel?

5. Вы нашли решение?

Ответ №1:

Старый ответ, но, возможно, будет кому-то полезен, проверьте номер базы данных с использованием Redis.

Если ваши данные содержатся в базе данных Redis с номером, отличным от 0 (номер по умолчанию), сначала установите номер базы данных в режиме CLI, используя команду SELECT <номер базы данных>

Пример: https://redis.io/docs/manual/cli/#interactive-mode