返回顶部
首页 > 资讯 > 数据库 >控制Redis的hash的field中的过期时间
  • 459
分享到

控制Redis的hash的field中的过期时间

Redis的hashfield过期时间Redis hash field 2023-01-28 06:01:21 459人浏览 泡泡鱼
摘要

目录需求场景方案一使用Redis的Zset配置定时任务方案二使用MQ延时队列综上总结需求场景 在业务中有些数据因为历史原因用的hash结构存储数据,但是后期需求要求其中某个field需要按照一些规则去过期,这个时候原来的

需求场景

在业务中有些数据因为历史原因用的hash结构存储数据,但是后期需求要求其中某个field需要按照一些规则去过期,这个时候原来的逻辑懒得改,可以利用redisZset或者mq的延时队列去做过期设置.

方案一使用redis的Zset配置定时任务

捞个图

demo需要清缓存redishash结构如下

控制Redis的hash的field中的过期时间

然后我们再每次往Agent这个hash结构存储数据的时候,同时向AgentExpirekeyZSET数据结构存储一份数据(在存数据的时候可以在当前时间上增加过期时间),这个数据的keyhash结构中的field的值,value是过期时间戳(毫秒级)

如下图所示:

控制Redis的hash的field中的过期时间

然后用一个定时任务(我这里用的xxl-job,大家可以自己选择)定时去扫描这个ZSET里面score小于当前时间的元素,也就是使用ZSETrangeByScore命令:

上面在向Zset中存数据的时候已经增加了过期时间,那么当时间小于当前时间时就过期了,代表hash中对应field的数据要被delete

long currentTimeMillis = System.currentTimeMillis();

//扫描key为AgentExpire的zset中时间在 0~currentTimeMillis当前时间范围内的数据
Set<String> keys = redisTemplate.opsForZSet().rangeByScore("AgentExpire", 0, currentTimeMillis);

//然后遍历删除即可                            
for (String key : keys) {
    Boolean hashResult = stringRedisTemplate.opsForHash().hasKey("xxxxxx", key);
    if(hashResult){
        stringRedisTemplate.opsForHash().delete(recommenKey, key);
        stringRedisTemplate.opsForZSet().remove(SelectionRecommenASPect.selectionRecommendzset, key);
    }
}

方案二使用mq延时队列

延时队列的配置可以参考我另一篇文章

https://www.jb51.net/article/273145.htm

在延时队列消费者处增加上述过期代码即可

long currentTimeMillis = System.currentTimeMillis();
Set<String> expireKeys = 
//扫描key为AgentExpire的zset中时间在 0~currentTimeMillis当前时间范围内的数据
redisTemplate.opsForZSet().rangeByScore("AgentExpire", 0, currentTimeMillis);

综上

使用zset的话开发量少,但是定时job一直刷容易浪费资源,mq延时队列更精确

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: 控制Redis的hash的field中的过期时间

本文链接: https://lsjlt.com/news/178148.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 控制Redis的hash的field中的过期时间
    目录需求场景方案一使用Redis的Zset配置定时任务方案二使用mq延时队列综上总结需求场景 在业务中有些数据因为历史原因用的hash结构存储数据,但是后期需求要求其中某个field需要按照一些规则去过期,这个时候原来的...
    99+
    2023-01-28
    Redis的hash field过期时间 Redis hash field
  • 浅谈redis的过期时间设置和过期删除机制
    目录一:设置过期时间二:保存过期时间三:移除过期时间四:计算并返回剩余生存时间五:过期键的删除策略六:redis使用的策略一:设置过期时间 redis有四种命令可以用于设置键的生存时...
    99+
    2024-04-02
  • Redis设置key的过期时间
    Redis中可以设置数据的过期时间,一旦过期自动删除数据。 1.设置过期时间 expire 127.0.0.1:6379> set name "ok" //设置10s后过期,e...
    99+
    2023-01-28
    Redis设置key过期时间 Redis key过期时间
  • linux中怎么控制帐户过期时间
    linux中怎么控制帐户过期时间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。法一:添加用户时useradd oldboy -e 01/28/12或修改下面文件的参数:[roo...
    99+
    2023-06-12
  • Redis中怎么设置过期时间的Key
    Redis中怎么设置过期时间的Key,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、 DEL/SET/GETSET等命令会清除过期时间在使用...
    99+
    2024-04-02
  • Redis的过期机制
    本文对Redis的过期机制简单的讲解一下讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又...
    99+
    2024-04-02
  • 怎么在redis中设置key的过期时间
    在redis中设置key过期时间的方法:1.启动redis服务;2.登录redis数据库;3.执行命令设置过期时间;具体步骤如下:首先,在命令行中启动redis服务;service redis start mysql服务启动后,输入用户名,...
    99+
    2024-04-02
  • Redis怎么设置键的过期时间
    在Redis中,可以使用EXPIRE命令或者SET命令的EX参数来设置键的过期时间。 使用EXPIRE命令: EXPIRE key ...
    99+
    2024-05-07
    Redis
  • Redis 过期键的设置、获取和删除过期时间
    Redis 过期键的设置、获取和删除过期时间 设置过期 默认情况下键是没有生存时间的,也就是永不过期,除非清空内存。 设置的键的生存时间也很容易,可以通过4个命令设置(任选一即可):EXPIRE、PEXP...
    99+
    2024-04-02
  • redis内的一个hash中可以有多少个field
    redis内的一个hash中可以有多少个field?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。hash是一个string类型的field...
    99+
    2024-04-02
  • 如何设置合适的redis过期时间
    这篇文章运用简单易懂的例子给大家介绍如何设置合适的redis过期时间,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。          ...
    99+
    2024-04-02
  • redis怎么设置默认的过期时间
    在Redis中,可以使用`EXPIRE`命令设置键的过期时间。但是,如果你想要为所有键设置一个默认的过期时间,可以使用Redis的`...
    99+
    2023-09-06
    redis
  • redis过期时间的问题怎么解决
    这篇文章主要介绍“redis过期时间的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“redis过期时间的问题怎么解决”文章能帮助大家解决问题。1.多次修改一个redis的String过期...
    99+
    2023-07-06
  • 如何在Redis中设置过期时间
    在Redis中设置过期时间可以使用EXPIRE命令或者EXPIREAT命令。 使用EXPIRE命令设置过期时间: EXPIRE ...
    99+
    2024-04-09
    Redis
  • 简单聊一聊redis过期时间的问题
    目录1.多次修改一个Redis的String过期键,如何保证他仍然能保留第一次设置时的删除时间2.修改hash、set、Zset、list的值,会使过期时间重置吗?总结1.多次修改一个redis的String过期键,如何...
    99+
    2023-04-14
    redis 过期时间 redis 过期时间 java redis设置过期时间
  • redis的过期处理机制
    本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识。Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项...
    99+
    2024-04-02
  • 浅谈Redis中的自动过期机制
    目录Redis中的自动过期机制一、使用Redis Key自动过期机制二、SpringBoot整合key失效监听Redis中的自动过期机制 实现需求:处理订单过期自动取消,比如下单30...
    99+
    2024-04-02
  • Redis系列(六):设置/移除键的过期时间
    本篇博客是Redis系列的第6篇,主要讲解以下内容: 数据库数量 切换目标数据库 设置键的过期时间 移除键的过期时间 本系列的前5篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):...
    99+
    2019-07-09
    Redis系列(六):设置/移除键的过期时间
  • redis 设置生存和过期时间的原理分析
    目录在了解原理前 先来看使用方法原理过期键的判定Redis的过期键删除策略原理在了解原理前 先来看使用方法 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间,在经过指定...
    99+
    2024-04-02
  • Redis如何批量设置过期时间(PIPLINE的使用)
    合理的使用缓存策略对开发同学来讲,就好像孙悟空习得自在极意功一般~ Redis如何批量设置过期时间呢? 不要说在foreach中通过set()函数批量设置过期时间 我们引入redis...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作