最近有一个业务上的需求: 每次创建一条记录时需要清理一下redis缓存,于是想到了django的signals,因为我是创建,因此用到的signal是post_init(post_init是在model实例化之后触发),直的很好用,我的model如下:
from django.db.models.signals import post_init
class KungFu(models.Model):
_database = 'mydb'
user_id = models.CharField(max_length=36, db_index=True)
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
db_table = "mydb_kungfu"
def delete_kungfu_cache(sender, **kwargs):
"""
@note 清除 缓存
:param sender:
:return:
"""
cache_key = "kungfu_cache"
#delete cache
post_init.connect(delete_kungfu_cache, sender=KungFu)
如此,在每次创建新记录的时候,即可清除缓存,清除缓存的目的是每次要读取KungFu最新创建的记录!
django还有其它信号量,这个机制在使用缓存的时候特别有用
ps: 未完,待续......
网友评论