Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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/24.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 REST框架-在viewset响应中缓存嵌入对象_Python_Django_Caching_Redis_Django Rest Framework - Fatal编程技术网

Python Django REST框架-在viewset响应中缓存嵌入对象

Python Django REST框架-在viewset响应中缓存嵌入对象,python,django,caching,redis,django-rest-framework,Python,Django,Caching,Redis,Django Rest Framework,我一直在使用drf扩展在Django REST框架中缓存视图集的列表和检索方法 我编写了一个修改来无限期地缓存那些列表和检索方法的键,当修改对象时,这些方法的键将失效 我试图解决的问题是修改嵌入对象时缓存失效。我不熟悉嵌入式对象缓存失效的典型模式 例: 用户修改用户对象,理想情况下,列表的缓存键集和用户视图集的检索方法以及嵌入式对象视图集都应无效 感谢您的帮助。谢谢。当前如何使视图集无效?在模型保存和删除时,它会发送一个信号,使用redis的redis.keys方法查找密钥,该方法的前缀是以列表

我一直在使用drf扩展在Django REST框架中缓存视图集的列表和检索方法

我编写了一个修改来无限期地缓存那些列表和检索方法的键,当修改对象时,这些方法的键将失效

我试图解决的问题是修改嵌入对象时缓存失效。我不熟悉嵌入式对象缓存失效的典型模式

例:

用户修改用户对象,理想情况下,列表的缓存键集和用户视图集的检索方法以及嵌入式对象视图集都应无效


感谢您的帮助。谢谢。

当前如何使视图集无效?在模型保存和删除时,它会发送一个信号,使用redis的redis.keys方法查找密钥,该方法的前缀是以列表和检索结尾的模型名称,然后是检索时模型的相关主键,因此我的密钥类似于:User.UserViewSet.listUser.UserViewSet.retrieve.1用户保存时,基本上可以使所有UserViewSet无效,因为检查它属于哪一个会很复杂,或者存储它们的关系,这可能是浪费时间的。也许最好不要只通过父对象写入这些对象,这样两者都会更新。或者在非反向外键关系的情况下,我可以强制外键的列表和检索无效,这是有意义的。非缓存性能是一个大问题吗? { "id": 1, "position": "manager", "company": "Google", "user": { "id": 1, "email": "johnsmith@example.com", "first_name": "John", "last_name": "Doe", "last_login": "2015-01-05T20:46:15.400Z", "joined_at": "2014-12-10T19:54:45.588Z", } }