2016-09-16 3 views
2

파이썬 스크립트를 사용하여 Redis 서버에 값을 외부 적으로 설정했습니다.Django Redis 캐시 값

r = redis.StrictRedis(host='localhost', port=6379, db=1) 
r.set('foo', 'bar') 

views.py에서 django 캐시를 사용하여 웹 요청에서 값을 가져 오려고했습니다.

from django.core.cache import cache 
val = cache.get("foo") 

아무 것도 반환하지 않습니다. 하지만 그것을 얻으 려 할 때

from django_redis import get_redis_connection 
con = get_redis_connection("default") 
val = con.get("foo") 

정확한 값 'bar'가 반환됩니다. 캐시 및 직접 연결이 작동하는 방식

답변

2

라이브러리는 일반적으로 사용자 정의 키와 혼동하지 않기 위해 여러 개의 내부 접두사를 사용하여 키를 저장합니다.

예를 들어 django-redis-cache은 사용자가 저장하는 모든 키 앞에 ": 1 :"을 붙입니다.

예를 들어 r.set('foo', 'bar')을 할 때, 키를 ": 1 : foo"로 설정합니다. 키 앞에 붙는 접두사를 알지 못하기 때문에 일반 get을 사용하여 키를 가져올 수 없으므로 가져 오기 위해 자체 API를 사용해야합니다.

결국 결국 사용하는 라이브러리로 돌아가서 코드를 읽고 정확하게 키를 저장하는 방법을 확인하십시오. redis-cli은 귀하의 소중한 친구가 될 수 있습니다. 기본적으로 cache.set('foo', 'bar') 키를 설정하고 redis-cli으로 가서 'keys *'명령을 사용하여 foo에 대해 설정된 키를 확인하십시오.

+0

감사합니다. 열쇠는 redis에 저장됩니다 'foo'. 그리고 내가 장고 캐시를 사용하여 설정하면 당신이 말한 것처럼 저장하고있다. ": 1 : foo"그러나 cache.get ('')에서 올바른 키가 데이터베이스에 있어도 null을 반환합니다. –

+0

@KareshArunakirinathan 당신은 * cache.get ("foo") *를 사용하여 그것을 얻는 것을 의미합니까? – SpiXel