获取Redis巨大Key的新姿势(获取redis大key)
Redis 获取 Key 姿势 巨大
2023-06-13 09:19:38 时间
到目前为止,当Redis需要获取较大Key数量时,最常用的方法是使用 SCAN 指令,但这种方法增量获取 Key 的机制有时却在巨大Key集合下表现并不尽如人意。实际上,在Redis集合中获取巨大Key时,可以从 Redis 本身提供的技术特性出发,以更高效的方式实现获取低成本。
我们先了解 Redis 中 Key 的两个常用特性。
第一,Redis 在每个 Key 的层级之间支持划分前缀(Prefix)。比如,如果有一个名为 “user” 的 key,那么它的子集可以通过 “user:*” 来表示。
第二,Redis 支持基于前缀进行随机抽样(Random sampling),也就是说,可以在某个前缀下返回随机的一个 Key。
基于以上两个特性,我们可以构建一个原型来获取大量的 Key。算法的基本思想是:假设有一个巨大的 Key 集合,我们先随机获取一个前缀,然后再随机获取一个 Key。最后循环,直到获取的 Key 的总量足够大。代码如下:
# 初始化key_list
key_list = []
# 随机获取一个key前缀while True:
prefix = random.choice(redis.keys("*"))
# 随机获取一个key key = random.choice(redis.keys(prefix + "*"))
if not key in key_list: key_list.append(key)
# 如果key总量足够大则退出
if len(key_list) = N: break
以上就是获取巨大Key集合的新方法。基于Redis中支持的 Key 前缀以及对对应前缀下 Key 进行随机抽样,可以更有效地以较低成本获取大量的 Key。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 获取Redis巨大Key的新姿势(获取redis大key)
相关文章
- 方案Redis集群搭建:分布式存储实现大数据处理(redis的集群)
- Redis主机:提高系统性能的关键工具(redishosts)
- 使用Redis实现轻松高效的缓存系统(怎样用redis来做缓存)
- 如何快速获取当前Redis时间戳(获取当前redis时间戳)
- 调取Redis数据失败的痛苦历程(获取redis出错)
- 秒速突破利用Redis最优解破解热Key(秒杀redis热key)
- 使用Redis轻松实现短信服务(短信用redis)
- 如何正确设置Redis的数据存储路径(如何设置redis路径)
- 快速导出Redis所有Key值(导出redis所有key)
- 使用Redis读取Key值(取redis中的key值)
- 利用Redis默认持久化规则实现数据永久保存(redis默认持久化规则)
- Redis高可用性保障低时延(redis 高可用 时延)
- 使用Redis保护数据库不受热Key攻击(redis防止热key)
- 从Redis中探索每一个Key(redis遍及key)
- Redis实现高效的Key存储策略(redis设置key策略)
- Redis实现多键值一次性获取(redis获取多键值)
- 深究Redis获取全部数据的慢之谜(redis获取全部数据慢)
- Redis实现快速获取Set数据列表(redis获取set列表)
- Redis中轻松获取Key的方式(redis获取key方式)