Redis的KEYS命令引起宕机事件】的更多相关文章

摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载,版权归原作者所有. 最近的互联网线上事故发生比较频繁,2018 年 9 月 19 号顺丰发生了一起线上删库事件,在这里就不介绍了. 在这里讲述一下最近发生在我公司的事故,以及如何避免,并且如何处理优化. 间接原因还有很多,技术跟不上业务的发展,由每日百万量到千万级是一个大的跨进,公司对于系统优化的…
起因 下午接到运维反馈,生产redis有个执行keys的命令请求太慢了,要两三秒才能响应 涉及命令如下: KEYS ttl_600::findHeadFootData-15349232-*-head 什么是keys命令? keys官方文档 http://www.redis.cn/commands/keys.html KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key . 时间复杂度为O(N),N为数据库里面key的数量. 例如,Redis在一个有1百万个key的…
昨晚通宵生产压测,终于算是将生产服务宕机的原因定位到了,心累.这篇博客,算作一个复盘和记录吧... 先来看看Redis的缓存淘汰算法思维导图: 说明:当实际占用的内存超过Redis配置的maxmemory时,Redis就会根据用户选择淘汰策略清除被选中的key. 业务场景:用户通过微信入口来访问一个页面: 测试场景:通过多线程模拟定量的并发来访问页面服务: 涉及架构:springsession+Redis集群,容器部署: 问题描述:固定并发数压测10分钟,压测开始后半小时,Redis连接数激增,…
KESY 命令 时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数. Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 尽管这个操作的时间复杂度是 O(N), 但是常量时间相当低.例如,在一个普通笔记本上跑Redis,扫描100万个key只要40毫秒. 命令格式 KEYS pattern Warning: 生产环境使用 KEYS 命令需要非常小心.在大的数据库上执行命令会影响性能.这个命令适合用来调试和特殊操作…
特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机,内存中的数据全部丢失,假如现在直接访问数据库大量流量打到 MySQL 可能会带来更加严重的问题. 另外慢慢的从数据库读取放到 Redis 性能必然比不过从 Redis 获取快,也会导致响应变慢. Redis 为了实现无畏宕机快速恢复,设计了两大杀手锏,分别是 AOF(Append Only FIle)日志和 RDB 快照.…
KEYS pattern 查找所有符合给定模式 pattern 的 key . KEYS * 匹配数据库中所有 key . KEYS h?llo 匹配 hello , hallo 和 hxllo 等. KEYS h*llo 匹配 hllo 和 heeeeello 等. KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo . 特殊符号用 \ 隔开 NOTICE: KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特…
Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器.但也正因为廉价机器,由于网络硬盘等各方面的原因,机器宕机的概率就会相对比较大.RegionServer作为HBase集群中实际的执行节点,不可避免地也会出现宕机. 宕机并不十分可怕,因为不会丢数据.HBase集群中一台RegionServer宕机(实指RegionServer进程挂掉,下文同)并不会导致已经…
[文章]Linux宕机故障分析案例 已采纳 收藏  0  1669 0 马化辉 2018-07-01发布 背景 在Linux系统环境下,服务器宕机发生的频率比较小,但是不少工程师或多或少都会遇到这种情况,有时候会手足无措,不知从何入手.笔者将借助一次案例分析,展示下Linux宕机故障事件的处理方法和思路. 宕机发生的原因不一,或者是硬件原因,或者是性能原因,或者是服务器触发了Linux的bug,导致内核崩溃等等. 案例分析 1. 案情还原: 生产系统服务器dcspodsaa1在4月25日凌晨…
一.Percona网站宕机事件 震级:3 发生时长:2011年7月11日 持续时长:数日 地点:加州Pleasanton(幸福屯) 宕机原因:Percona网站主服务器上的3块硬盘损坏,同时因为人员变更,导致未能如预期地恢复,多个网站资产因此下线数小时到数天不等,影响其软件下载及交易. 经验:备份不一定永远正常,不应该对其抱有过多期待. 二.GitHub服务中断 震级:4 发生时间:2012年9月10-11日 持续时长:1:46小时 地点:加州圣弗朗西斯科 宕机原因:GitHub将一对古老的.基…
我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机时间". 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可用性 我们常见的可用性通常以百分比表示,这本身就有其隐藏的意味:高可用性不是绝对的.换句话说,100% 的可用性是不可能达到的.没错,这里可以这么肯定的说. 我们一般用 "9" 的个数来描述可用性.X个9表示在数据中心运行1年时间的使用过程中,各系统可以正常使用时间与总时间(1年)之比.例…
Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.——这才是真正的堪称强大!!! Redis持久化的方案其实是很多人接触的比较少的,因为相对应的数据故障不会很多,一次初始化的设置就能保证后续故障的全部顺利解决.本文讲述…
Redis现如今使用的场景越来越多?如何批量删除key呢? 有人说用KEYS命令,刚开始学Redis的时候就是用这个命令列出库中键. KEYS命令要谨慎使用. 为何?客观别急,我们先一步步来看. KEYS 命令 Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is ex…
Redis故障发现 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 客观下线 当某个节点判断另一个节点主观下线后,该节点的下线报告会通过Gossip消息传播.当接收节点发现消息体中含有主观下线的节点,其会尝试对该节点进行客观下线,依据下线报告是否在有效期内(如果在cluster-node-timeout*2时间内无法收集到一半以上槽节点的下线报告,那么之前的下线报告会过期),且数量大于槽节点总数的一半.若…
redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务.这个备用的redis称为从节点(slave). 1.集群是如何判断是否有某个节点挂掉 首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息.它们之间通过互相的ping-pong判断是否节点可以连接上.如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点. 2.集群进入fail状态的必要条件…
我们先来了解一下  bridge网络模式 他会创建一个docker0桥,看完这个我们就会知道redis哨兵机制的端口了. 之后继续研究redis宕机的解决办法! 宕机: 服务器停止服务 如果只有一台redis, 肯定会造成数据丢失. 多台reids或者是Redis集群,服务器宕机还有办法. 1.从的redis宕机怎么解决? 配置主从复制的时候才配置从的redis, 从的会从主的redis中读取主的redis的操作日志,来达到主从复制. 1.只要把从的redis重新启动,再和主的进行连接就可以 2…
主要核心思想,如果master 和 salve 全部存活的情况,VIP就漂移到 master.读写都从master操作,如果master宕机,VIP就会漂移到salve,并将之前的salve切换为master,当宕机的master可以继续服务的时候,首先会从salve同步数据,然后VIP漂移到master服务器上面,持续提供服务. 环境准备: master:redis 19020:redis 19021:keepalived:ip 192.168.28.139 slave :redis 1902…
持续原创输出,点击上方蓝字关注我 目录 前言 什么是AOF? 三种写回策略 日志文件太大怎么办? AOF重写会阻塞主线程吗? AOF的缺点 总结 什么是RDB? 给哪些数据做快照? 快照时能够修改数据吗? 多久做一次快照? 增量快照 AOF和RDB混合使用 总结 总结 前言 Redis作为内存型的数据库,虽然很快,依然有着很大的隐患,一旦「服务器宕机」重启,内存中数据还会存在吗? 很容易想到的一个方案是从后台数据恢复这些数据,如果数据量很小,这倒是一个可行的方案.但是如果数据量过大,频繁的从后台…
1    主机宕机 1.  设置端口6379是主机,端口6380是从机,全部都正常启动 2.  验证在6379写入数据,在6380也能得到数据 3.  现在将6379主机停掉,模拟主机宕机 4.  由于主机宕机了,现在就要将6380从机设置为主机,使用slaveof no one命令,此时原来的从机变为 主机也用了写的权限 5.  要是原来6379经过修复后,能够正常工作,先将6380主机数据进行保存持久化,将rdb文件,覆盖原主机6379的rdb文件,进行数据的统一. 6.  启动原来的主机6…
接下来两篇将记录Redis持久化存储两大技术:AOF日志.RDB快照 本篇重点 "AOF日志实现""AOF日志三种写回策略""AOF重写--避免日志过大的解决方案" 前言 Redis持久化存储两大技术:AOF日志.RDB快照 AOF: Append Only FileRDB: Redis DB 背景 Redis运行中,若突然宕机,存储在内存中的数据都会丢失.此时如果从后端数据库恢复数据,虽然可行,但也会导致效率问题: 频繁访问数据库增加数据库压力…
摘要 本文主要是介绍使用redis scan命令遇到的一些问题总结,scan命令本身没有什么问题,主要是spring-data-redis的问题. 需求 需要遍历redis中key,找到符合某些pattern的所有keys.第一反应当然是 KEYS "ABC* 可以找到前缀是ABC的所有KEYS,时间复杂度O(N).可以使用,但是在生产环境中,这么使用肯定是不行的,因为生产环境的key的数量比较多,一次查询会block其他操作.而更重要的是一次性返回这么多的key,数据量比较大,网络传输成本高.…
  (error) ERR unknown command 'keys'问题解决(error) ERR unknown command 'FLUSHDB' 问题解决 背景 FLUSHALL FLUSHDB 命令会清空数据,而且从不失败,对于线上集群非常危险.KEYS * 命令,当数据规模较大时使用,会严重影响Redis性能,也非常危险.如果从根本上规避这些风险呢?Redis提供了非常简单且有效的方法,直接在配置文件中设置禁用这些命令. 在redis的配置文件中设置 rename-command…
在主从模式下宕机要分为区分来看: slave从redis宕机 ​ 在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据: ​ 如果从数据库实现了持久化,只要重新假如到主从架构中会实现增量同步. Master 宕机 ​ 假如主从都没数据持久化,此时千万不要立马重启服务,否则可能会造成数据丢失,正确的操作如下: ​ - 在slave数据上执行SLAVEOF ON ONE,来断开主从关系并把slave升级为主库 ​ - 此时重新启动主数据库,执行SLAVEOF,把它设置为从库,自动备份…
1.客户端连接 为了安全保护,redis支持绑定IP跟端口,这个通过conf配置文件中的bind跟port来设置. 绑定后登录client控制台时就需要写明ip(或者hostname)跟端口了,如: ./redis_cli -h 10.137.19.19 -p 6389 redis_cli客户端支持远程登录,所以在集群环境中我们不需要切换机器,直接 ./redis_cli -h hostname -p 端口 就可以登录到任何一台主机. 另外它还带有循环执行命令等各种有用的功能,可以./redis…
互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题. 一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层不命中 存储层不命中,所以不将空结果写回缓存 返回空结果 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义. 缓存穿透模型 缓…
Redis Keys 命令用于查找所有符合给定模式 pattern 的 key .. 语法 redis KEYS 命令基本语法如下: redis 127.0.0.1:6379> KEYS PATTERN 可用版本 >= 1.0.0 返回值 符合给定模式的 key 列表 (Array). 实例 首先创建一些 key,并赋上对应值: redis 127.0.0.1:6379> SET w3c1 redis OK redis 127.0.0.1:6379> SET w3c2 mysql…
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Redis持久化的方案其实是很多人接触的比较少的,因为相对应的数据故障不会很多,一次初始化的设置就能保证后续故障的全部顺利解决.本文讲述一下该机制的主要设置方法和持久化方案的对比,同时也会讲述一些持久化的原理.如果对于Redis持久化比较熟悉的希望能够给到你帮助,如果不熟悉的,你大可参考本文对你的Redi…
非常抱歉,今天下午 17:10~17:40 左右,由于博客系统所使用的 redis 服务器宕机,造成博客站点无法正常访问,由此给您带来很大的麻烦,请您谅解. 我们会针对这次故障改进 redis 服务器的部署,提高 redis 服务器的高可用性.目前 redis 服务是用阿里云服务器单独部署的,还没部署到 k8s 集群上. 没想到下半年的第一篇博文竟然是故障公告,为了凑足字发到首页,简单向大家汇报一下园子的近况. 转眼间2021年上半年过去了,园子的审核工作还没全部完成,我们依然在努力还债. 20…
以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis > redis > PING PONG 在远程服务上执行命令 如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令. 语法 $ redis-cli -h host -p port -a password 实例 以下实例演示了如何连接到主机为 127.0.0.1,端口为 637…
集群命令 [root@redis06 etc]# redis-cli --cluster help Cluster Manager Commands: create host1:port1 ... hostN:portN --cluster-replicas <arg> check host:port info host:port fix host:port reshard host:port --cluster-from <arg> --cluster-to <arg>…
redis作为内存数据库, 有着很高的性能, Redis能读的速度是110000次/s, 写的速度是81000次/s; 除了进行持久化操作时, redis采用的是单线程架构, 所以如果我们在开发中不恰当的使用一些命命令, 就很有可能导致意料之外的结果, 比如如果redis中有千万级别的key, 而我们在程序中使用keys pattern命令来匹配相关的键, 那么大概率会导致redis的阻塞设置宕机; 测环境中模拟生产环境, 快速生成百万级别的key-value键值对 注意, 下面的命令仅用于测试…