Кэш 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')