最近有一個業務上的需求: 每次創建一條記錄時需要清理一下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: 未完,待續......