redis连接django和docker后,数据没有保存在redis-cli中

问题描述 投票:0回答:1

我将redis连接到django并做了docker-compose,redis本身可以工作,但是如果我想通过docker exec -it redis redis-cli连接到终端,那么它会连接,但我无法获取任何数据,如果我写入keys *命令,那么也没有数据(芹菜除外)

version: '3.8'

services:
  web:
    build: .
    container_name: django
    ports: 
      - "8000:8000"
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    env_file:
      - .env 
    environment:
      - DEBUG=1
      - DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1
      - CELERY_BROKER=redis://redis:6379/0
      - CELERY_BACKEND=redis://redis:6379/0
      - REDIS_HOST=redis
    depends_on: 
      - db
      - redis
    links:
      - db:db

  db:
    container_name: postgres
    image: postgres
    volumes:  
      - ./data/postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=${BD_NAME}
      - POSTGRES_USER=${BD_USER}
      - POSTGRES_PASSWORD=${BD_PASSWORD}
      - POSTGRES_HOST_AUTH_METHOD=trust
    expose:
      - '5432'
 
  redis:
    image: "redis:alpine"
    restart: always
    container_name: redis
    command: redis-server
    ports:
      - 6379:6379
  
  celery:
    build: .
    command: celery -A wishes worker -l INFO
    volumes:
      - .:/app
    depends_on:
      - web
      - redis
      - db
    environment:
      - CELERY_BROKER=redis://redis:6379/0
      - CELERY_BACKEND=redis://redis:6379/0
 

volumes:
  postgres_data:

redis-cli 示例

127.0.0.1:6379> get milan
(nil)
127.0.0.1:6379> keys *
1) "_kombu.binding.celeryev"
2) "_kombu.binding.celery"
3) "_kombu.binding.celery.pidbox"
127.0.0.1:6379> keys *
1) "_kombu.binding.celeryev"
2) "_kombu.binding.celery"
3) "_kombu.binding.celery.pidbox"
127.0.0.1:6379> get kranf
(nil)
127.0.0.1:6379> 

还有调试工具

debug_tool

python django docker docker-compose redis
1个回答
0
投票

如果

Redis
为空,可能是因为您忘记将 CACHES 设置的 BACKEND 设置为
django.core.cache.backends.redis.RedisCache

为 CACHES 提供的默认后端是

django.core.cache.backends.locmem.LocMemCache
,它将缓存数据存储到内存中。

© www.soinside.com 2019 - 2024. All rights reserved.