[REDIS] 평가없이 레디 스에서 개체를 얻을?
REDIS평가없이 레디 스에서 개체를 얻을?
memcache에 (사용 pylibmc)에서 키를 얻으려면, 당신은이 작업을 수행 :
client.set(key, {'object': 'dictionary'}, time=expire)
client.get(key)
레디 스에서 동일은 이것이다 :
redis.setex(key, expire, {'object': 'dictionary'})
eval(redis.get(key) or 'None')
그 마지막 줄 바로 나에게 보이지 않는다. 레디 스에만 문자열을 반환 것으로 보인다. 는 GET가 거기에 그것이에 넣어 한 것과 같은 형태로 개체를 반환 레디 스?
해결법
-
==============================
1.차이점은, 모두 memcached를 만 지원 문자열 값을 레디 스하면서, pylibmc 당신이 피클을 사용하여 전송 값을 직렬화하는 것이 단지 문자열로 변환 - 평은 레디 스.
차이점은, 모두 memcached를 만 지원 문자열 값을 레디 스하면서, pylibmc 당신이 피클을 사용하여 전송 값을 직렬화하는 것이 단지 문자열로 변환 - 평은 레디 스.
당신은 레디 스와 동일한 작업을 수행하려는 경우, 당신은 당신을 위해 산 세척을 할 자신의 기능을 가질 수 있습니다.
def set_value(redis, key, value): redis.set(key, pickle.dumps(value)) def get_value(redis, key): pickled_value = redis.get(key) if pickled_value is None: return None return pickle.loads(pickled_value)
-
==============================
2.아니면 당신도 레디 스를 서브 클래 싱 할 수 있습니다 :
아니면 당신도 레디 스를 서브 클래 싱 할 수 있습니다 :
import pickle from redis import StrictRedis class PickledRedis(StrictRedis): def get(self, name): pickled_value = super(PickledRedis, self).get(name) if pickled_value is None: return None return pickle.loads(pickled_value) def set(self, name, value, ex=None, px=None, nx=False, xx=False): return super(PickledRedis, self).set(name, pickle.dumps(value), ex, px, nx, xx)
의례 : https://github.com/andymccurdy/redis-py/issues/186
from https://stackoverflow.com/questions/12870772/get-object-from-redis-without-eval by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 유형의 오류가 수신 등록 작업을 받고 'mytasks.add' (0) | 2020.01.22 |
---|---|
[REDIS] 레디 스 :: CommandError : ERR 클라이언트는 AUTH를 보냈지 만 암호가 설정되지 않습니다 (0) | 2020.01.22 |
[REDIS] 치명적인 오류 : 찾을 수없는 클래스 '레디 스' (0) | 2020.01.22 |
[REDIS] 레디 스의 변화를 들어? (0) | 2020.01.22 |
[REDIS] 방법 레디 스의 pubsub 타임 아웃 기능을 구현하는 방법? (0) | 2020.01.22 |