Redis keys 性能问题

Redis 中 keys 命令带来的线上性能问题,怎么解决? 什么是keys命令? keys官方文档 www.redis.cn/commands/ke… KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key 。 时间复杂度为O(N),N为数据库里面key的数量。【参考文献】 例如,Redis在一个有1百万个key的数据库里面执行一次查询需要的时间是40毫秒 。 警告: KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 KEYS, 你最好还是用 Redis 的集合结构 SETS 阅读详情

(一)keys命令的使用

进入Redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令

keys pattern
   
  • 1
  • 1

获取当前库下的所有key

keys *
   
  • 1
  • 1

如下图所示,存在四个key:redis01、redis11、hbase01、hbase11

这里写图片描述

keys支持一下3种类型的通配符:

(1)*,该通配符表示任一长度的字符

如:keys *,匹配数据库中所有 key ;

如:查找以redis开头的所有key

keys redis*
   
  • 1
  • 1

这里写图片描述

(2)?,该通配符表示任一字符

如:查找以Hbase开头、第6位为任一字符、以”1”结尾的key

keys hbase?1
   
  • 1
  • 1

这里写图片描述

(3)[],这和正则表示中的[]类似,每次可以配其中任何一个字符。

如:

keys redis[01]1
   
  • 1
  • 1

会匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上

这里写图片描述

(二)利用keys的模糊匹配带来的性能问题

从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!开发中使用keys的模糊匹配却发现redis的CPU使用率极高,所以公司的redis生产环境将keys命令禁用了!

那怎么解决这种类似的keys模糊匹配问题呢?

1) 常见的方法就是设置一个set,将需要使用的keys存储在set中。

2)换到一个keys少的库

目录(?)[+]

(一)keys命令的使用

进入Redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令

keys pattern
    
  • 1
  • 1

获取当前库下的所有key

keys *
    
  • 1
  • 1

如下图所示,存在四个key:redis01、redis11、hbase01、hbase11

这里写图片描述

keys支持一下3种类型的通配符:

(1)*,该通配符表示任一长度的字符

如:keys *,匹配数据库中所有 key ;

如:查找以redis开头的所有key

keys redis*
    
  • 1
  • 1

这里写图片描述

(2)?,该通配符表示任一字符

如:查找以Hbase开头、第6位为任一字符、以”1”结尾的key

keys hbase?1
    
  • 1
  • 1

这里写图片描述

(3)[],这和正则表示中的[]类似,每次可以配其中任何一个字符。

如:

keys redis[01]1
    
  • 1
  • 1

会匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上

这里写图片描述

(二)利用keys的模糊匹配带来的性能问题

从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!开发中使用keys的模糊匹配却发现redis的CPU使用率极高,所以公司的redis生产环境将keys命令禁用了!

那怎么解决这种类似的keys模糊匹配问题呢?

1: 设置一个set,将需要使用的keys存储在set中。

2: 换到一个key少的redis 库中,然后再用keys

【Redis】 redis hash getKey getValue 两个的性能差别 1.概述 有个需求是我们要获取redis中的key的信息。 大概是这样的,key是IP,value是一个json字符串,但是我们只想要key信息。然后有如下代码。 构建60万的数据 @Test public void addeirdWData11() { JedisPool jedisPool = RedisGetKeyOrValue.initLocalRedispool(new Properties()); Jedis jedis = RedisGetKeyO. 阅读详情

相关推荐

Redis系列之keys命令和scan命令性能对比

Redis的keys *命令在生产环境是慎用的,特别是一些并发量很大的项目,原因是Redis是单线程的,keys *会引发Redis锁,占用reids CPU,如果key数量很大而且并发是比较大的情况,效率是很慢的,很有可能导致服务雪崩,在Redis官方的文档是这样解释的,官方的推荐是使用scan命令或者集合

Nicky's blog 1983

redis中keys匹配查询的效率问题

redis中的keys在很多时候能帮助我们完成模糊查询的功能数据量一大,会严重影响性能修改方式:将匹配规则数组序列化后存到一个key中,这样读取的时候就直接用get即可。aaa.*.yyyy.* 作为key,然后将此模糊匹配的数据存入此健值中。通过get 的方式取出里面的值。...

zhuchunyan_aijia的博客 9886

【Redis keys命令有什么问题?】

命令匹配的键非常多,返回的结果列表可能会非常大,从而占用大量的内存。命令需要遍历整个键空间来查找匹配的键,当键的数量非常大时,这个命令的执行时间会变得非常长,导致Redis的性能下降。命令通过分步查询的方式返回匹配的键,不会阻塞Redis服务器,并且可以在大数据量环境下保持良好的性能。命令以一种渐进的方式返回匹配的键,不会阻塞Redis服务器,并且在大数据量环境下也能保持良好的性能。命令,并使用每次返回的新游标值作为下一次迭代的游标,直到游标值为0时,表示迭代结束。,其中n是Redis中键的总数。

Roc的博客 293

首长,Redis性能优化十三条军规立好了,请过目~

前言Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻谨记优化铁则,才能使得Redis性能发挥到极致。本文将会介绍十三条性能优化军规,开发过程中只要...

好好学java 845

Autowired的使用介绍

我们都知道在spring中@Autowired注解,是用来自动装配对象的。@Service@Autowired没错,这样是能够装配成功的,因为默认情况下spring是按照类型装配的,也就是我们所说的byType方式。此外,@Autowired注解的required。

白话机器学习 1350

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 151

Redis性能瓶颈:如何优化大key问题?

Redis大key问题是指在Redis中出现了一个或多个非常大的key,这些key的大小超过了Redis所能处理的最大值,从而导致Redis性能下降甚至宕机的现象。通常情况下,Redis的key大小应该尽量保持在较小的范围内,因为Redis是一个基于内存的数据结构存储系统,大key会占用大量内存资源,导致Redis的性能受到严重影响。多大的数据量才算是大key,具体取决于Redis服务器的内存大小、可用内存空间、系统负载等因素。

微信公众号: 后端码匠 1250

Data+AI新玩法:Text2SQL让数据查询变得如此简单!

你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。

Ase5gqe的博客 865

关于redis的keys命令的性能问题

KEYS pattern 查找所有符合给定模式pattern的key。 KEYS*匹配数据库中所有key。 KEYSh?llo匹配hello,hallo和hxllo等。 KEYSh*llo匹配hllo和heeeeello等。 KEYSh[ae]llo匹配hello和hallo,但不匹配hillo 实际应用中有时候会出现需要遍历redis中的所有键值的需求,比如清理没用的键等等。但是keys这个命令性能真的很差,redis官方文档是这么说...

小楼一夜听春雨,深巷明朝卖杏花 2182

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1043

MTK-Display技术解析:从MDP到DDP的架构演进

本文深入解析了联发科(MTK)显示技术从MDP到DDP的架构演进。MDP作为多媒体数据预处理中心,负责格式转换与缩放;而DDP则整合了OVL、COLOR、AAL等模块,并引入CMDQ与场景化模式,实现了从分散处理到统一智能调度的飞跃,旨在提升画质、流畅度并降低功耗。

weixin_29218509的博客 253

Redis中keys命令的使用与带来的性能问题

(一)keys命令的使用 进入redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令 keys pattern 获取当前库下的所有key keys * 如下图所示,存在四个key:redis01、redis11、hbase01、hbase11 keys支持一下3种类型的通配符: (1)*,该通配符表示任一长度的

Kevin.yang专栏 2万+

在 Ubuntu 上安装和配置 PostgreSQL 实录

本文介绍了在Ubuntu系统上安装和配置PostgreSQL数据库的完整步骤。主要内容包括:1)通过官方源或PPA源安装最新版本;2)修改配置文件(postgresql.conf和pg_hba.conf)以允许远程访问;3)设置postgres用户密码;4)创建新用户并配置权限;5)防火墙设置和重启服务;6)验证安装和远程连接方法。文章提供了详细的命令行操作指导,帮助用户完成从安装到远程访问的全部配置过程。

qq_58168857的博客 1203

redis同步效率秒_关于redis的keys命令的性能问题

实际应用中有时候会出现需要遍历redis中的所有键值的需求,比如清理没用的键等等。但是keys这个命令性能真的很差,redis官方文档是这么说的:Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performa...

weixin_39679061的博客 458

解锁RK平台黑科技:DPDK加速与硬件卸载实战

本文探讨了在RK平台上通过DPDK加速与硬件卸载技术构建高性能网络架构的方法。RK平台凭借强大的硬件性能为高并发网络处理提供基础,而DPDK通过用户态驱动、轮询机制等技术绕过内核瓶颈,显著提升数据包处理效率。硬件卸载则将校验和计算等任务交由专用硬件,释放CPU资源。实践案例显示,该方案可使网络吞吐量提升至理论极限,延迟降至5ms以下,CPU利用率降低40%。文章详细介绍了配置步骤、优化方法和常见问题解决方案,并展望了该技术在5G、车联网等新兴领域的应用前景。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1279

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

Redis中keys命令带来的性能问题与解决方案

http://blog.youkuaiyun.com/ouyang111222/article/details/50270097 (一)keys命令的使用 进入redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令 keys pattern11 获取当前库下的所有key keys *11 如下图所示,存在四个key:

aosica321的专栏 9865

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

记一次线上事故,redis 的keys问题,cpu引起的性能问题

公司的一个接口用redis存储pv/uv,一直以来,非常好用,某天发现,接口反映非常慢,经过长时间排查。是redis的cpu非常高,到了60%以上。之前设置的70%报警。然后有个广告使用了keys 查询,我们的redis 里面的key 有几千万,致使 cpu 超高。 改造这个方法后,速度明显起来了,cpu也降到了20% 以后千万记得不用keys查询。

程序员超哥的博客 2678

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

千万级Redis键删除危机:SCAN vs KEYS实战抉择指南

你是否曾在生产环境执行`KEYS *`命令后遭遇Redis雪崩?是否因批量删除操作导致服务卡顿被紧急叫停?本文将通过PhpRedis实战案例,彻底解决大规模键删除的性能痛点,掌握两种删除策略的底层逻辑与最优实践。 ## 危机现场:从一次深夜故障说起 某电商平台在促销活动结束后,需要清理1000万+临时缓存键。运维人员使用PhpRedis执行: ```php $redis->delete($r

gitblog_00686的博客 1057

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

redis 如何查看某个库的key_使用keys命令来查询redis里面包含哪些key

可以使用redis的keys命令来查看当前redis中存在哪些key。keys命令允许使用通配符对key进行筛选。下面是keys命令的语法:keyspattern查找所有符合给定模式 pattern 的 key 。keys的模式支持下面通配符:*通配符。该通配符表示所有的意思。如:keys * 匹配数据库中所有 key 。?通配符。表示一个任意字符。如:keys h?llo 命令匹配 hello...

weixin_39540426的博客 3176

java redis keys_jedis keys和scan操作

KEYS pattern查找所有符合给定模式pattern的key。KEYS*匹配数据库中所有key。KEYSh?llo匹配hello,hallo和hxllo等。KEYSh*llo匹配hllo和heeeeello等。KEYSh[ae]llo匹配hello和hallo,但不匹配hillo。特殊符号用\隔开NOTICE:KEYS 的速度非...

weixin_30831529的博客 890
上一篇: 常用的设计模式介绍
下一篇: spring 中 Spring-data-redis的配置与使用
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值