回答

收藏

Redis 如何实现Map的value过期呢?

技术问答 技术问答 465 人阅读 | 0 人回复 | 2023-09-11

需求是这样的:用户状态的数据结构
    用户id: 用户状态(在线,禁言,限制登陆等),user:id:123 -> 05 {1 s$ a7 d3 \; l
+ t4 e. z0 \" |2 z
开始我是把用户id直接用 set 进redis,最简单的数据结构,然后去更新对应的状态后来需要统计在线用户,把id查到返回,似乎只能通过正则 user:id* 把相关的keys查到,然后代码中去判断状态是否是在线的但是 user:id* 耗时太慢了,考虑换成map,这样直接定位到map,减少了 user:id* 这种匹配查询又发现我的key是需要设置过期时间的,user:id:123 不是一直有效的,map又不能设置value的过期时间有点纠结,我感觉需要多个辅助数据结构来实现功能,有没有既能利用redis的过期时间,又能提高查询效率的办法?(感觉我可能需要这样一个容器结构,能把全部 user:id* 放到一起,这样查询效率高,然后我再去设置每个key的过期时间)求指教
$ z% c; v* l; \1 d7 h
3 y* ~6 q) d' d& O( x4 t, I
; d* J) }6 z' _8 E
           打败牛人已获得悬赏 8 金钱最佳答案
- O- t$ s$ p) W) I7 A7 U, `: t: P( S8 i: p: b" ?
              好吧,我用的java,redission太强大了,有RMapCache可以实现map元素单独设置过期时间,文档 https://www.bookstack.cn/read... 看了文档找到了解决方案,其它语言的灵活发挥吧               
) d' G4 t4 M/ f" m: O0 l2 C, J
            4 d: G" O; ~0 W0 z0 m4 X
  • 打败牛人        6 w; ]; C  c- P/ V, l
  • 发表于2021-12-29        : ~% U* n" m" m4 V
  • 详细答案 >    $ H9 E, D- O2 k

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则