![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis-troubles
文章平均质量分 50
redis使用过程中遇到的问题
真雪
知止
展开
-
Redis trouble22 -- cluster模式下,从节点内存大于主节点内存原因分析
rehash导致主从节点内存大小不一原创 2022-07-12 00:41:12 · 442 阅读 · 0 评论 -
Redis trouble21 -- aof持久化导致redis命令阻塞
目录1.异常日志2.问题分析3.引起原因4.解决方案5.appendfsync everysec不是1s1.异常日志 Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.* Asynchronous AOF fsync is ta...原创 2022-01-11 14:48:27 · 1679 阅读 · 4 评论 -
Redis trouble20 -- UNLINK非阻塞异步删除bigkey
一、问题引出起因: redis有很多的数据类型尤其像是list , hash ,set , zset 时间复杂度为O(N)的数据类型,执行操作: 当我们执行del的时候,大的数据类型可能会导致我们的redis阻塞几秒钟甚至是几分钟结果: 会导致redis阻塞,也可能会造成集群的主从切换,从而导致生产环境故障二、非阻塞删除bigkeyRedis的作者提出解决方案:非阻塞删除(参考Lazy Redis is better Redis)非阻塞删除,就是将删除操作放到另外一个线程(而非 Red..原创 2020-11-04 17:03:13 · 2560 阅读 · 0 评论 -
Redis trouble19 -- 集群从节点同步主节点数据异常,内存溢出同时产生大量core文件问题
现象描述:redis5.0.5集群要对集群进行扩容,先扩从节点,由于是docker swarm管理的镜像启动,策略是一直重启,产生以下几点现象:1.当从节点没有启动起来并且每次重启都会加载出一个core.xxxx文件,文件大小与dump和aof文件同大小2.Redis aborting for OUT OF MEMORY 及 Out Of Memory allocating 18...原创 2020-03-30 14:40:24 · 1867 阅读 · 0 评论 -
Redis trouble18 -- Unable to configure Redis to keyspace notifications
解决方案redis的服务端没有开启配置数据库通知的配置,在redis服务端执行下边命令即可config setnotify-keyspace-events Egxconfig rewritenotify-keyspace-events数据库通知数据库通知是Redis 2.8版本新增加的功能,这个功能可以让客户端通过订阅给定的频道或者模式,获知数据库中键变化,以及数据库中命令执行情况分类:键空间通知:“某个键执行了什么命令”的通知称为键空间通知(key-space n...原创 2021-09-08 16:41:55 · 1871 阅读 · 4 评论 -
Redis trouble17 -- slaveof主从同步注意点
注意点:1.使用slaveof主从同步的时候,是要求从节点的masterauth与主节点配置的requirepass相同才会创建主从关系2.使用slaveof主从同步是将所有db中的数据都同步过去3.在slaveof同步过程中,从节点是只读的,如果想要从节点也可写,在从节点中配置:config set replica-read-only noconfig set slave-read-only no若主从均可写,会存在数据不一致的情况,要谨慎使用...原创 2021-09-08 16:11:30 · 960 阅读 · 0 评论 -
Redis trouble16 -- (Non critical) Master does not understand: Unrecognized REPLCONF option: capa
一、问题描述看日志上边的信息有两个ERR:1.(Non critical) Master does not understand REPLCONF capa: -ERR Unrecognized REPLCONF option: capa2.Partial resynchronization not possible (no cached master)1:S 19 Aug 2021 11:06:02.919 * MASTER <-> REPLICA sync started1:原创 2021-09-08 15:39:57 · 980 阅读 · 0 评论 -
Redis trouble15 -- unable to failover:check ‘cluster-replica-validity-factor‘ configuration option
一、问题描述标题太短了放不下,完整的异常提示为:Currently unable to failover: Disconnected from master for longer than allowed. Please check the 'cluster-replica-validity-factor' configuration option.原为三主三从集群,同时宕掉一对主从,此时集群状态fail,启动从节点,会发现从节点并没有如我们所想那样成为主节点,集群状态依旧fail,这个是个正原创 2021-09-08 15:20:12 · 795 阅读 · 0 评论 -
Redis trouble14 -- signal-handler (1619081683) Received SIGTERM scheduling shutdown...
一、问题描述异常1:主从中断报错Unable to partial resync with the slave for lack of backlog (Slave request was: 2595405802583).异常2:Discarding previously cached master state异常3:1:signal-handler (1619081683) Received SIGTERM scheduling shutdown...1:S 22 Apr 2.原创 2021-09-08 14:46:35 · 5189 阅读 · 0 评论 -
Redis trouble13 -- Error creating bean with name stringRedisTemplate defined in class path resource
一、问题描述org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redissonController': Unsatisfied dependency expressed through field 'stringRedisTemplate'; nested exception is org.springframework.beans.factory.Unsat原创 2021-09-07 18:00:41 · 1504 阅读 · 0 评论 -
Redis trouble12 -- aof 文件损坏修复
一、问题描述aof持久化的redis执行flushall之后,想恢复数据,于是删除aof中的最后一条指令flushall之后,重启redis提示aof文件损坏,使用fix修复会存在清空数据的危险二、解决方案aof-load-truncated yesredis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会load并继续,而no会直接恢复失败配置之后重启节点对于redis集群若想恢复需要重.原创 2021-09-07 17:57:07 · 638 阅读 · 0 评论 -
Redis trouble11 -- redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream
一、问题描述一次线上问题,客户端使用的时候时不时就会报出来这个问题,当时开发还问题是不是服务端配置的问题,我当时特别肯定的说不是,结果打脸了二、解决方案经过排查redis服务端的timout设置为了10,将timeout设置为0,问题解决...原创 2021-09-07 15:47:16 · 803 阅读 · 0 评论 -
Redis trouble10 -- redis内存突增找不到原因?
一、问题描述一次线上内存突增,数据量并没有增加,但是数据量确增长了差不多2G,过一段时间后差不多又降低了1G,找了很久都没找到是什么引起的,最终找到原因二、问题原因上边的问题是因为redis当数据量达到一定程度的时候会进行一次rehash才会导致内存上涨如下表所示是key的数量与对应的hash列表所占内存大小,当key数量较小的时候,是感知不到内存的变化的,当key数量达到6千7百万的时候,可以看到内存已经按G的大小来计算了,就没办法忽略了.key数量对应的hash列表所占内存.原创 2021-09-07 15:43:28 · 275 阅读 · 0 评论 -
Redis trouble09 -- Detected DNS change. zcx.zcx.com has changed from 10.xx.xx.17 to 10.xx.xx.18
一、问题描述redisson在使用时抛出以下异常2021-03-24 14:18:49.172 INFO 8 --- [isson-netty-2-1] o.r.c.pool.MasterPubSubConnectionPool : 1 connections initialized for zcx.zcx.com/10.172.17.17:301672021-03-24 14:18:49.175 INFO 8 --- [sson-netty-2-24] org.redisson.conne..原创 2021-09-07 15:28:08 · 1192 阅读 · 3 评论 -
Redis trouble08 -- 客户端并没有调用ping命令,但是监控上看到有很多的ping指令在执行
多半是开启了testOnBorrow配置,每个连接执行前都会进行连接检测,连接检测的原理就是调用ping返回pong命令,下边是testOnBorrow的使用原理GenericObjectPool类中调用factory.validateObject(p)public T borrowObject(final long borrowMaxWaitMillis) throws Exception { ... if (p != null && getTestOnBorrow原创 2021-09-06 14:33:20 · 440 阅读 · 0 评论 -
Redis trouble07 -- MISCONF redis save RDB snapshots, but is currently not able to persist
一、问题描述线上每隔一天redis就会报出来下边的问题MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist二、解决方案归根到底就是redis持久化失败:提供下边的配置解决Redis服务端参数:config set stop-writes-on-bgsave-error noconfig rewrite系统参数:sysctl vm.overcommit_原创 2021-09-06 11:47:47 · 70 阅读 · 0 评论 -
Redis trouble06 -- io.lettuce.core.RedisCommandTimeoutException:Command timed out after 10 seconds
一、问题描述线上一段时间时不时的会报出来下边的问题Redis command timed out;nested exception is io.lettuce.core.RedisCommandTimeoutException:Command timed out after 10 second这个问题在github上有提到过,大家最终的解决方式都是下边的第一种二、解决方案1.将lettuce换成jedis2.第二种方案并没有验证,因为上边的问题也不是随时可以复现的,只是个人分析原创 2021-09-06 11:38:21 · 5882 阅读 · 0 评论 -
Redis trouble05 -- redis5.0.5 cluster节点handshake状态问题
问题现象:redis5.0 3×3集群 其中一台机器宕掉,执行以下命令进行删除节点,发现此命令不适用于宕机的情况redis-cli -a 123456 --cluster del-node 10.19.111.111:7111 b13572217a29c7921de5ce545b1847c36d365c6e后进入到集群中的一个节点,执行cluster forget node_id命令...原创 2020-03-18 00:20:07 · 2701 阅读 · 0 评论 -
Redis trouble04 -- 数据明明存储进去了,但是读取不到redis中的数据,scan发现数据前面多了xac\xed\x00\x05t\x00\特殊字符
一、问题描述:数据存储到redis中,从代码中也能从redis中读取到,但是从cli客户端中不能查询到数据,通过scan后发现存入的数据前边都多了一串特殊字符二、问题分析存储数据的时候我们使用的是redis的默认的序列化方式(JDK序列化方式),要想读出来数据,需要使用相同的序列化方式,这就是为什么代码中可以读取到数据,因为代码中的redis使用的还是jdk的序列化方式,但是cli客户端就不一样了,我们使用cli客户端读取数据,使用没有进行序列化的key,和使用jdk序列化之后的key是.原创 2021-09-03 15:25:36 · 1035 阅读 · 0 评论 -
Reids trouble03 -- stringRedisTemplate.opsForSet().isMember(key,value)一直返回false问题
在用stringRedisTemplate.opsForSet().isMember(key,value)判断key中是否存在value值时,明明存在值却一直返回false,原来是因为redis默认的序列化方式有问题,而且没有设定redistemplate的stringredistemplate子类导致的.序列化方式优化如下,解决上述问题@Configurationpublic class RedisConfig { @Bean public RedisTemplate red原创 2020-08-26 11:12:49 · 8185 阅读 · 5 评论 -
Redis trouble02 -- redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream
问题描述:生产环境代码日志里报出来redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream这个异常问题,平均每分钟都在刷同样的异常信息.对这个异常的理解大致可以定位为连接被掐断org.springframework.data.redis.RedisConnectionFailureException: Unexpected end of stream.; nested exception .原创 2020-12-15 18:29:08 · 1848 阅读 · 0 评论 -
Redis trouble01-- keys命令导致集群崩溃
keys命令导致集群崩溃总是原理上知道keys命令很危险,线上禁用,会导致各种问题,终于见到真身了一、redis-migrate-tool迁移失败,fork:cannot allocate memory导致前一天晚上,我用redis-migrate-tool工具迁移哨兵数据到集群,也遇到问题工具里边一直提示我Partial resynchronization for MASTER [] not possible(no cached master).我开始还理解这是在部分同步?为啥进行部分同步原创 2020-12-28 19:44:34 · 644 阅读 · 0 评论