回答

收藏

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

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

需求是这样的:用户状态的数据结构
    用户id: 用户状态(在线,禁言,限制登陆等),user:id:123 -> 0
    . u* J$ S# l% b) p1 p0 |
! l; i( D* s- j* ?& C/ @
开始我是把用户id直接用 set 进redis,最简单的数据结构,然后去更新对应的状态后来需要统计在线用户,把id查到返回,似乎只能通过正则 user:id* 把相关的keys查到,然后代码中去判断状态是否是在线的但是 user:id* 耗时太慢了,考虑换成map,这样直接定位到map,减少了 user:id* 这种匹配查询又发现我的key是需要设置过期时间的,user:id:123 不是一直有效的,map又不能设置value的过期时间有点纠结,我感觉需要多个辅助数据结构来实现功能,有没有既能利用redis的过期时间,又能提高查询效率的办法?(感觉我可能需要这样一个容器结构,能把全部 user:id* 放到一起,这样查询效率高,然后我再去设置每个key的过期时间)求指教3 w* Y  N( x/ M
! I+ o. P1 i: c: u1 P; x. z9 V' s( @

. P+ n. _, f; b9 c% r           打败牛人已获得悬赏 8 金钱最佳答案0 {* {& L! |+ T4 s6 u1 q

& ~0 e% _6 V2 R! J2 H: k1 Q              好吧,我用的java,redission太强大了,有RMapCache可以实现map元素单独设置过期时间,文档 https://www.bookstack.cn/read... 看了文档找到了解决方案,其它语言的灵活发挥吧               3 P2 F0 `* w/ [
            0 M' t% M4 W" A6 x% v2 F
  • 打败牛人        
    / L/ `0 F3 K, G6 @. |6 g; w
  • 发表于2021-12-29        7 |3 v- Q+ t9 X# O! n
  • 详细答案 >    ! p" W# E- X- ^+ W; W" I2 s* {

本帖子中包含更多资源

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

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

本版积分规则