| @@ 9-36 (lines=28) @@ | ||
| 6 | from wechatpy.utils import json |
|
| 7 | ||
| 8 | ||
| 9 | class MemcachedStorage(SessionStorage): |
|
| 10 | ||
| 11 | def __init__(self, mc, prefix='wechatpy'): |
|
| 12 | for method_name in ('get', 'set', 'delete'): |
|
| 13 | assert hasattr(mc, method_name) |
|
| 14 | self.mc = mc |
|
| 15 | self.prefix = prefix |
|
| 16 | ||
| 17 | def key_name(self, key): |
|
| 18 | return '{0}:{1}'.format(self.prefix, key) |
|
| 19 | ||
| 20 | def get(self, key, default=None): |
|
| 21 | key = self.key_name(key) |
|
| 22 | value = self.mc.get(key) |
|
| 23 | if value is None: |
|
| 24 | return default |
|
| 25 | return json.loads(to_text(value)) |
|
| 26 | ||
| 27 | def set(self, key, value, ttl=0): |
|
| 28 | if value is None: |
|
| 29 | return |
|
| 30 | key = self.key_name(key) |
|
| 31 | value = json.dumps(value) |
|
| 32 | self.mc.set(key, value, ttl) |
|
| 33 | ||
| 34 | def delete(self, key): |
|
| 35 | key = self.key_name(key) |
|
| 36 | self.mc.delete(key) |
|
| 37 | ||
| @@ 8-35 (lines=28) @@ | ||
| 5 | from wechatpy.utils import json |
|
| 6 | ||
| 7 | ||
| 8 | class RedisStorage(SessionStorage): |
|
| 9 | ||
| 10 | def __init__(self, redis, prefix='wechatpy'): |
|
| 11 | for method_name in ('get', 'set', 'delete'): |
|
| 12 | assert hasattr(redis, method_name) |
|
| 13 | self.redis = redis |
|
| 14 | self.prefix = prefix |
|
| 15 | ||
| 16 | def key_name(self, key): |
|
| 17 | return '{0}:{1}'.format(self.prefix, key) |
|
| 18 | ||
| 19 | def get(self, key, default=None): |
|
| 20 | key = self.key_name(key) |
|
| 21 | value = self.redis.get(key) |
|
| 22 | if value is None: |
|
| 23 | return default |
|
| 24 | return json.loads(to_text(value)) |
|
| 25 | ||
| 26 | def set(self, key, value, ttl=None): |
|
| 27 | if value is None: |
|
| 28 | return |
|
| 29 | key = self.key_name(key) |
|
| 30 | value = json.dumps(value) |
|
| 31 | self.redis.set(key, value, ex=ttl) |
|
| 32 | ||
| 33 | def delete(self, key): |
|
| 34 | key = self.key_name(key) |
|
| 35 | self.redis.delete(key) |
|
| 36 | ||