Python Django redis连接后端或如何实现

Python Django redis连接后端或如何实现,python,django,redis,Python,Django,Redis,Django中是否有插件或第三方后端来管理redis连接,因此view.py中的方法不必为每个请求显式连接到redis 如果没有,您将如何开始实施?一个新插件?一个新的后端?一个新的django中间件 谢谢。我认为非rel数据库的新兴标准是。我不知道django Norel是否已经准备好生产,或者是否支持redis,但他们有一个关于redis的指南 不幸的是,我认为在标准django上编写对redis的支持并不像编写数据库后端那样容易。django模型、机制和工作流中有很多都只是假设一个ACID

Django中是否有插件或第三方后端来管理redis连接,因此view.py中的方法不必为每个请求显式连接到redis

如果没有,您将如何开始实施?一个新插件?一个新的后端?一个新的django中间件


谢谢。

我认为非rel数据库的新兴标准是。我不知道django Norel是否已经准备好生产,或者是否支持redis,但他们有一个关于redis的指南

不幸的是,我认为在标准django上编写对redis的支持并不像编写
数据库后端那样容易。django模型、机制和工作流中有很多都只是假设一个ACID数据库。那么
syncdb
呢?关于
查询集

但是,您可能会尝试使用
models.Manager
和对您的模型进行大量调整来编写穷人方法。例如:

# helper   
def fill_model_instance(instance, values):
    """ Fills an model instance with the values from dict values """                                    
    attributes = filter(lambda x: not x.startswith('_'), instance.__dict__.keys())

    for a in attributes:
        try:
            setattr(instance, a, values[a.upper()])
            del values[a.upper()]
        except:
            pass

    for v in values.keys():
        setattr(instance, v, values[v])

    return instance




class AuthorManager( models.Manager ):

    # You may try to use the default methods.
    # But should be freaking hard...
    def get_query_set(self):
        raise NotImplementedError("Maybe you can write a Non relational Queryset()! ")

    def latest(self, *args, **kwargs):
        # redis Latest query
        pass

    def filter(self, *args, **kwargs):
       # redis filter query
       pass

    # Custom methods that you may use, instead of rewriting
    # the defaults ones.
    def open_connection(self):
        # Open a redis connection
        pass

    def search_author( self, *args, **kwargs ):
        self.open_connection()

        # Write your query. I don't know how this shiny non-sql works.
        # Assumes it returns a dict for every matched author.
        authors_list = [{'name': 'Leibniz',   'email': 'iinventedcalculus@gmail.com'},
                         'name': 'Kurt Godel','email': 'self.consistent.error@gmail.com'}]

        return [fill_instance(Author(), author) for author in authors_list]



class Author( models.Model ):
    name      = models.CharField( max_length = 255 )
    email     = models.EmailField( max_length = 255 )

     def save(self):
         raise NotImplementedError("TODO: write a redis save")

     def delete(self):
         raise NotImplementedError(""TODO: write a delete save")

     class Meta:
          managed = False
请不要以为我只是简单介绍了如何调整django模型。我没有
测试并运行此代码。首先,我建议您调查django Norel。

谢谢您的回答。我不需要将我的模型存储在redis实例中,所以我认为我不需要django Nonl。然后我将自己实现一个连接管理模块。