我正在使用django-redis后端和django.core.cache.cache模块。 django缓存模块似乎不支持推送到列表和操纵某些数据结构的正确功能。
隐含的实现用于更新django缓存模块中的列表:
my_list = cache.get('my_list')
my_list.append('my value')
cache.set('my_list', my_list)
这种方法效率不高,因为整个列表都被加载到应用程序服务器的内存中。
Redis支持LPUSH / RPUSH命令来动态更新列表。但是,看起来这些方法在django缓存模块中不可用。
官方python redis客户端似乎实现了这些方法。 有什么理由为什么django不会提供这种实现?我好奇地问我的好奇心。可能我错过了一些细节?
答案 0 :(得分:4)
它支持原始客户端和命令访问,因为您必须访问原始客户端而不是使用django缓存。
http://niwinz.github.io/django-redis/latest/#_raw_client_access
3.12。原始客户端访问在某些情况下,您的应用程序需要访问原始Redis客户端才能使用某些非原始功能 由Django缓存接口公开。避免存储另一个 用于创建原始连接的设置,django-redis公开函数 您可以使用它来获取重用缓存连接的原始客户端 string:get_redis_connection(别名)。
代码示例:
>>> from django_redis import get_redis_connection
>>> con = get_redis_connection("default")
>>> con
<redis.client.StrictRedis object at 0x2dc4510>
>>> con.lpush('mylist',1)