回答

收藏

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

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

需求是这样的:用户状态的数据结构
    用户id: 用户状态(在线,禁言,限制登陆等),user:id:123 -> 0- E/ o+ V7 ^# \/ V# G  _5 o2 h6 }

$ p$ T. A. n7 N: D  {开始我是把用户id直接用 set 进redis,最简单的数据结构,然后去更新对应的状态后来需要统计在线用户,把id查到返回,似乎只能通过正则 user:id* 把相关的keys查到,然后代码中去判断状态是否是在线的但是 user:id* 耗时太慢了,考虑换成map,这样直接定位到map,减少了 user:id* 这种匹配查询又发现我的key是需要设置过期时间的,user:id:123 不是一直有效的,map又不能设置value的过期时间有点纠结,我感觉需要多个辅助数据结构来实现功能,有没有既能利用redis的过期时间,又能提高查询效率的办法?(感觉我可能需要这样一个容器结构,能把全部 user:id* 放到一起,这样查询效率高,然后我再去设置每个key的过期时间)求指教
/ _% R9 U1 ?* C, i/ Z; ]. @

' q9 _0 _+ x7 Y: E( F
- k+ }, w0 a; |6 L$ e) W, r9 n           打败牛人已获得悬赏 8 金钱最佳答案
$ `0 ~, \) h$ l$ \6 I4 l/ g  M- U  \- Z; I/ Z+ ?4 I$ t! [
              好吧,我用的java,redission太强大了,有RMapCache可以实现map元素单独设置过期时间,文档 https://www.bookstack.cn/read... 看了文档找到了解决方案,其它语言的灵活发挥吧               
! F# P7 l* l  G1 \
            + A- S  z2 D' i. q8 Z
  • 打败牛人        & u) H+ Q" p0 n% M2 b) q
  • 发表于2021-12-29        ( g8 D9 ]3 ~6 |- _4 b4 x
  • 详细答案 >   
    * J  k4 _; L7 g& q' j. g5 K6 b, C

本帖子中包含更多资源

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

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

本版积分规则