Redis的Pythonic包装器与序列化

时间:2012-04-30 16:44:20

标签: python serialization redis wrapper

我试过redish。 它看起来很不错,但似乎已经死了,并且没有auth选项(在某些forks中有所改进)。我看了redis-nativesredis_wrap,但似乎没有序列化。

我并不为我过去的“不是在这里发明”的综合症感到骄傲,所以如果它存在,我正在寻找一些不错的包装。 :)

UDP:django中最简单的自行车,恕我直言,看起来像:

from django.forms.models import model_to_dict
import redis
import anyjson

r = redis.Redis(password=setting('REDIS_PASSWORD'))

class ToRedisMixIn(object):
    def save(self, *args, **kwargs):
        super(ToRedisMixIn, self).save(*args, **kwargs)
        exclude = ['id']
        redis_exclude = getattr(self, 'redis_exclude', None)
        redis_key_name = getattr(self, 'redis_key_name', None) or '%ss' % self.__class__.__name__.lower()
        if redis_exclude:
            exclude += redis_exclude
        model_dict = model_to_dict(self, exclude=exclude)
        r.hset(redis_key_name, self.id, anyjson.serialize(model_dict))

用法:

class Device(ToRedisMixIn, models.Model):
    host            = models.IPAddressField()
    name            = models.CharField(max_length=32)
    description     = models.CharField(max_length=200, blank=True)

    redis_exclude = ['description']
    redis_key_name = 'devices'

不是最好,但有效。

0 个答案:

没有答案