回答

收藏

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

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

需求是这样的:用户状态的数据结构
    用户id: 用户状态(在线,禁言,限制登陆等),user:id:123 -> 0
    0 i# z5 g. ^7 n4 @
6 a  X, D8 I6 e) Y
开始我是把用户id直接用 set 进redis,最简单的数据结构,然后去更新对应的状态后来需要统计在线用户,把id查到返回,似乎只能通过正则 user:id* 把相关的keys查到,然后代码中去判断状态是否是在线的但是 user:id* 耗时太慢了,考虑换成map,这样直接定位到map,减少了 user:id* 这种匹配查询又发现我的key是需要设置过期时间的,user:id:123 不是一直有效的,map又不能设置value的过期时间有点纠结,我感觉需要多个辅助数据结构来实现功能,有没有既能利用redis的过期时间,又能提高查询效率的办法?(感觉我可能需要这样一个容器结构,能把全部 user:id* 放到一起,这样查询效率高,然后我再去设置每个key的过期时间)求指教& k/ r, d6 q+ D/ f3 r7 `
( e! o* a) |! o2 B% ?

$ V5 b% y2 Q, O# \3 f           打败牛人已获得悬赏 8 金钱最佳答案
5 A- d" j; ?2 v: I; d* i& F4 e) O5 u7 x) s, k  N
              好吧,我用的java,redission太强大了,有RMapCache可以实现map元素单独设置过期时间,文档 https://www.bookstack.cn/read... 看了文档找到了解决方案,其它语言的灵活发挥吧               
: A5 T. a  W: n' o) ~
            
      P& y( r" d& A, p. ]
  • 打败牛人        
    : j. y* d2 V. x& b( h
  • 发表于2021-12-29        3 i2 Z6 y% y- e4 B! m
  • 详细答案 >   
    & Y( i% G1 v- k& M- \

本帖子中包含更多资源

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

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

本版积分规则