2016-12-28 156 views
1

我正在使用django-redis後端和django.core.cache.cache模塊。 Django緩存模塊似乎不支持推送到列表和操作某些數據結構的正確功能。Django redis LPUSH/RPUSH

使用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是否有任何理由不提供這種實現?我在問我的好奇心。可能我錯過了一些細節?

回答

2

它支持原始客戶端和命令訪問,因爲您必須訪問原始客戶端而不是使用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) 
+0

謝謝! @dhruvpathak –