回答

收藏

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

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

需求是这样的:用户状态的数据结构
    用户id: 用户状态(在线,禁言,限制登陆等),user:id:123 -> 0
    % j4 i. D, S4 ]" E$ ?8 a- B

: M/ s& F+ b0 L开始我是把用户id直接用 set 进redis,最简单的数据结构,然后去更新对应的状态后来需要统计在线用户,把id查到返回,似乎只能通过正则 user:id* 把相关的keys查到,然后代码中去判断状态是否是在线的但是 user:id* 耗时太慢了,考虑换成map,这样直接定位到map,减少了 user:id* 这种匹配查询又发现我的key是需要设置过期时间的,user:id:123 不是一直有效的,map又不能设置value的过期时间有点纠结,我感觉需要多个辅助数据结构来实现功能,有没有既能利用redis的过期时间,又能提高查询效率的办法?(感觉我可能需要这样一个容器结构,能把全部 user:id* 放到一起,这样查询效率高,然后我再去设置每个key的过期时间)求指教/ m3 a+ U2 M! |# }# f

0 T' N% Y* U, |7 ?! {
! x1 o3 E0 k: f. |           打败牛人已获得悬赏 8 金钱最佳答案3 c  T1 C! k0 Y
7 G1 {3 K; ^1 g/ T' R
              好吧,我用的java,redission太强大了,有RMapCache可以实现map元素单独设置过期时间,文档 https://www.bookstack.cn/read... 看了文档找到了解决方案,其它语言的灵活发挥吧               
4 I, W6 @  K* }1 F
            ( S, b" i* d& h  ]/ v
  • 打败牛人        / p. M/ w: ?! E/ T
  • 发表于2021-12-29        ( j3 F4 n9 ^7 B: P' n7 @: _/ H
  • 详细答案 >      j( I& t% _$ c& a$ V8 g& A! {& H

本帖子中包含更多资源

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

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

本版积分规则