Кэш redis в Django не может получить доступ к кэшу redis, установленному вне django

Я устанавливаю redis как сервис docker и подключаюсь к нему через django-cache и библиотеку python redis.

Первый:

from django.http import HttpResponse
from django.core.cache import cache

def test_dj_redis(request):
    cache.set('dj_key', 'key_in_dj', 1000)
    return HttpResponse("Redis testing\n"
                        "- in dj view: {}\n"
                        "- in other: {}".format(cache.get('dj_key'),
                                                cache.get('py_key')))

Секунда:

import redis
r = redis.Redis(
    host='redis',
 port=6379
)

def cache_it():
    r.set('py_key', 'key in py', 1000)
    print(r.get('py_key'))
    print(r.get(':1:dj_key'))
    print(r.keys())

Если я запускаю оба из них

  • первый - обновить веб-страницу, связанную с этим представлением django
  • .
  • второй - python cache_it().

Во первых, я не могу получить доступ к 'py_key', он возвращает None. Но во-вторых, я могу видеть набор кэша в django view. Кэш Django добавил к нему префикс и превратил 'dj_key' в ':1:key_in_dj', но тем не менее я могу получить к нему доступ.

Также во втором случае redis_r.keys() возвращает [b'py_key', b':1:key_in_dj']. Значение ключа 'py_key' осталось прежним, так почему же я не могу получить к нему доступ через django cache.get('py_key')

Вернуться на верх