开发者社区> 问答> 正文

关于redis删除某批键的应用

我把公告类型的数据(有很多类型啊,例如用户类型啊、日志类型啊)保存进了缓存
以前用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
求大家还有什么好办法没?

展开
收起
落地花开啦 2016-02-19 11:24:05 3750 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    放到hash里面, 一个key可以放多个数据,删的时候只删一个key就行了

    2019-07-17 18:44:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载