最近有一個(gè)業(yè)務(wù)上的需求: 每次創(chuàng)建一條記錄時(shí)需要清理一下redis緩存缀棍,于是想到了django的signals片习,因?yàn)槲沂莿?chuàng)建照卦,因此用到的signal是post_init(post_init是在model實(shí)例化之后觸發(fā))蔑赘,直的很好用狸驳,我的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)
如此,在每次創(chuàng)建新記錄的時(shí)候缩赛,即可清除緩存耙箍,清除緩存的目的是每次要讀取KungFu最新創(chuàng)建的記錄!
django還有其它信號(hào)量酥馍,這個(gè)機(jī)制在使用緩存的時(shí)候特別有用
ps: 未完辩昆,待續(xù)......