我把公告类型的数据(有很多类型啊,例如用户类型啊、日志类型啊)保存进了缓存
以前用memcache的时候,可以给这些缓存打上标签,指名是哪些类型的数据,在发布新公告的时候,删除指定标签的缓存,可是现在用了redis之后,发现redis没有标签这样的概念,以至于我现在没办法用标签的方式批量删除公告类的缓存
现在我想了一些解决方案
1、所有公告数据的缓存,全都以 notice开头 ,然后用 KEYS notice*
的方式取得所有公告数据的缓存KEY,然后再通过 DEL 来删除
缺点:听说keys 很影响效率,尤其是在已经有不少key的情况下SET notice_list_1
被序列化后的数组SET notice_list_2
被序列化后的数组KEYS notice_*
得到notice开头的键,再删除DEL notice_list_1 notice_list_2
2、将所有涉及到公告数据的key,全部存进集合中,要删除公告缓存时,先从公告缓存集合中取得所有key,再通过 del key来删除
缺点:步骤多,影响效率SET notice_list_1
被序列化后的数组SADD notice_key notice_list_1
SET notice_list_2
被序列化后的数组SADD notice_key notice_list_12
SMEMBERS notice_key
得到公告的键,再删除DEL notice_list_1 notice_list_2
求大家还有什么好办法没?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。