Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何存储django模型的可数属性?_Python_Django_Caching_Django Models_Nosql - Fatal编程技术网

Python 如何存储django模型的可数属性?

Python 如何存储django模型的可数属性?,python,django,caching,django-models,nosql,Python,Django,Caching,Django Models,Nosql,我有一个表示链接实体的数据库。在这个实体上有一些“昂贵”的操作-可数属性。我不想将此可数属性存储为数据库中的字段或缓存值: cache.set(完整实体名、实体id、属性值) 看起来不太漂亮,我还可以对counted属性提供“expire”方法。 也许,是时候使用redis或其他nosql解决方案了,也许,我不知道Postgresql、python和django的所有优点。我认为,这是一个常见的问题:解决它的更好方法是什么?为什么不将它存储在缓存中?过期事件不取决于时间,它取决于数据库中的更改。

我有一个表示链接实体的数据库。在这个实体上有一些“昂贵”的操作-可数属性。我不想将此可数属性存储为数据库中的字段或缓存值:

cache.set(完整实体名、实体id、属性值)

看起来不太漂亮,我还可以对counted属性提供“expire”方法。
也许,是时候使用redis或其他nosql解决方案了,也许,我不知道Postgresql、python和django的所有优点。我认为,这是一个常见的问题:解决它的更好方法是什么?

为什么不将它存储在缓存中?过期事件不取决于时间,它取决于数据库中的更改。因此,不同对象的相同属性可以在10分钟或几天内实际存在。我认为,缓存是为其他目的而构建的……您可以根据数据库中的触发器更新缓存,该触发器在更新计算中的字段时触发。触发器将在Postgresql中触发。您是否谈论Postgresql附加字段?当然,我可以在影响该属性的模型中,通过适当的save()方法从缓存中删除值。因此,据我所知,最好的方法是cache.set('key',0)和cache.delete('key')。除了Burhan Khalid之前的评论之外:您可以覆盖
save
方法或使用django信号来更新缓存(在这种方法中,您检查缓存过期条件,如果缓存需要更新,您只需这样做)。您不需要使用db触发器。