Redis 中如何设置 Hash 数据类型的过期时间?

这篇具有很好参考价值的文章主要介绍了Redis 中如何设置 Hash 数据类型的过期时间?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Redis 中可以通过 setexexpire 方式来设置 key 的过期时间。但是对于Hash 数据类型 Redis 是不支持的,所以我们需要使用“曲线救国”的方式去实现 Hash 数据类型的过期时间。

即,先对 Hash 数据类型赋值,然后再对 Hash 数据类型的 key 设置一个过期时间,这样就间接的实现了对 Hash 数据类型的过期时间操作。

命令行操作示例:

root@k8s-master-01:~# redis-cli
127.0.0.1:6379> HSET name key value
(integer) 1
127.0.0.1:6379> HGET name key
"value"
127.0.0.1:6379> EXPIRE name 10
(integer) 1
127.0.0.1:6379> TTL name
(integer) 9
127.0.0.1:6379> TTL name
(integer) 8
127.0.0.1:6379> HGET name key
"value"
127.0.0.1:6379> TTL name
(integer) 0
127.0.0.1:6379> TTL name
(integer) -2
127.0.0.1:6379> HGET name key
(nil)
127.0.0.1:6379> exit
root@k8s-master-01:~# 

原理了解之后就可以通过代码的方式实现对 Hash 数据类型的过期时间操作,这里以 Python 伪代码为例,其他语言都是相同原理。文章来源地址https://www.toymoban.com/news/detail-517720.html

def handle_data(self, data, db, time):
    list([value for value in map(lambda index: data.pop(index) if data.get(index) else None, self.blacklist)])
    key = '%s:%s' % (self.redis_db[db], data['id'])
    for k, v in data.items():
        k = self.handle_field(k)
        if v is None:
            v = ''
        if isinstance(v, list) or isinstance(v, dict):
            v = json.dumps(v)
        if isinstance(v, datetime.datetime):
            v = v.strftime("%Y-%m-%d %H:%M:%S")
        self.redis.hset(key, k, v)			# 设置 Hash 数据类型
        if time:
            self.redis.expire(key, time)	# 设置 key 过期时间

到了这里,关于Redis 中如何设置 Hash 数据类型的过期时间?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ②【Hash】Redis常用数据类型:Hash [使用手册]

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ redis hash 是一个String类型的field(字段)和value(值)的映射表。 redis中每个hash可以存储2^32-1个键值对(40多亿

    2024年02月04日
    浏览(47)
  • Redis 原理缓存过期、一致性hash、雪崩、穿透、并发、布隆、缓存更新策略、缓存数据库一致性

    redis的过期策略可以通过配置文件进行配置 redis会把设置了过期时间的key放在单独的字典中,定时遍历来删除到期的key。 1).每100ms从过期字典中 随机挑选20个,把其中过期的key删除; 2).如果过期的key占比超过1/4,重复步骤1 为了保证不会循环过度,导致卡顿,扫描时间上限

    2024年02月08日
    浏览(54)
  • Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令

    目录 Redis的数据结构: Redis命令: 通用命令:(通用指令是部分数据类型的,都可以使用的指令) KEYS查询命令: DEL删除命令: EXISTS判断命令: EXPIPE有效期设置命令: TTL查看剩余期限命令: String类型: String的3种类型: String类型的常见命令: SET插入数据命令: MSET多重插

    2024年02月09日
    浏览(44)
  • redis数据未到过期时间被删除

    使用了jeecgboot开发后端代码,代码设置的redis过期时间为24小时,部署使用的宝塔面板,在redis中看到的过期时间也是为24小时,但是并未到过期时间,数据就被删除。 观察了一下redis中的数据,发现多了几个backup的数据, 于是我清空了数据 调整数据库数量 问题得到了解决

    2024年02月14日
    浏览(31)
  • Redis数据结构:Hash类型全面解析

    Redis,作为一个开源的、内存中的数据结构存储系统,以其出色的性能和灵活的数据类型,广泛应用于缓存、消息队列、发布订阅系统等多种场景。在 Redis 的五种基本数据类型中,Hash 类型是一种非常重要的数据类型。它可以存储键值对的集合,且能够用小于1毫秒的时间复杂

    2024年02月10日
    浏览(37)
  • 【Redis从头学-6】Redis中的Hash数据类型实战场景之购物车

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Redis从头学 之前的篇章对Redis的String、List数据类型已经做出了具体分析,并举例说明了其具体的实战场景。本文就结合

    2024年02月11日
    浏览(41)
  • Redis关于Hash类型数据的操作,使用redisTemplate

    因为在redis的Hash数据类型里,有内层外层两个key,而且有内层外层两个map集合,所以暂时先称外层key为大key,内层key为小key,外层map为大map,内层map为小map,内层value值为value。 1.根据大key和小key还有value的值,设置一个value: 2.根据大key和小key获取到value值: 3.根据大key获取小

    2024年02月11日
    浏览(40)
  • 【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

    🍀 Redis 诞生于2009年,全称是 Re mote D ictionary S erver,远程字典服务器,是一个基于 内存的键值型 NoSQL 数据库 🍀 键值(key-value)型,value 支持多种不同数据结构,功能丰富 🍀 单线程,每个命令具备 原子性 🍀 低延迟,速度快(基于内存、IO 多路复用、良好的编码) 🍀支

    2024年02月11日
    浏览(39)
  • Redis的五种数据类型(string、hash 、list、set、zset)

                     Redis 提供了丰富的数据类型,常见的有五种: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。         String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整

    2024年01月25日
    浏览(49)
  • 【Spring boot】RedisTemplate中String、Hash、List设置过期时间

    时间类型:TimeUnit import java.util.concurrent.TimeUnit; TimeUnit.SECONDS:秒 TimeUnit.MINUTES:分 TimeUnit.HOURS:时 TimeUnit.DAYS:日 TimeUnit.MILLISECONDS:毫秒 TimeUnit.MILLISECONDS:微秒 TimeUnit.NANOSECONDS:纳秒 Java对于Redis的封装不是能满足所有的业务需求的,但是我们可以通过lua脚本来直接向Redis发送命

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包