#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 <номер базы данных>