在 Redis
中可以通过 setex
或 expire
方式来设置 key
的过期时间。但是对于Hash
数据类型 Redis
是不支持的,所以我们需要使用“曲线救国”的方式去实现 Hash
数据类型的过期时间。
即,先对 Hash
数据类型赋值,然后再对 Hash
数据类型的 key
设置一个过期时间,这样就间接的实现了对 Hash
数据类型的过期时间操作。
命令行操作示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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
伪代码为例,其他语言都是相同原理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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数据类型的过期时间的文章就介绍到这了,更多相关Redis Hash过期时间内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!