Redis问题集
一、业务方向
问题1. Redis存储的值数据多了个双引号("")
现象:Redis的数据string和hash类型值多了个双引号("");
原因:自定义配置类RedisTemplate<String, String>时,配置值的序列器又是支持Object,但值泛型是string,不是object,导致被当做对象序列化,从而存储有双引号;
解决办法:自定义配置类RedisTemplate<String, Object>即可。
二、部署方向
问题1:Redis每隔一段时间就报Connection reset by peer,尤其是每天早上报得最频繁
现象:Redis每隔一段时间就报Connection reset by peer,尤其是每天早上报得最频繁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce.core.RedisException: java.io.IOException: Connection reset by peer at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java: 74 ) at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java: 41 ) at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java: 44 ) at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java: 42 ) at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java: 272 ) at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.convertLettuceAccessException(LettuceStringCommands.java: 800 ) at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.get(LettuceStringCommands.java: 70 ) at org.springframework.data.redis.connection.DefaultedRedisConnection.get(DefaultedRedisConnection.java: 267 ) at org.springframework.data.redis.connection.DefaultStringRedisConnection.get(DefaultStringRedisConnection.java: 406 ) at org.springframework.data.redis.core.DefaultValueOperations$ 1 .inRedis(DefaultValueOperations.java: 57 ) at org.springframework.data.redis.core.AbstractOperations$ValueDeserializingRedisCallback.doInRedis(AbstractOperations.java: 60 ) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java: 222 ) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java: 189 ) at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java: 96 ) at org.springframework.data.redis.core.DefaultValueOperations.get(DefaultValueOperations.java: 53 ) Caused by: io.lettuce.core.RedisException: java.io.IOException: Connection reset by peer at io.lettuce.core.internal.Exceptions.bubble(Exceptions.java: 83 ) at io.lettuce.core.internal.Futures.awaitOrCancel(Futures.java: 250 ) at io.lettuce.core.FutureSyncInvocationHandler.handleInvocation(FutureSyncInvocationHandler.java: 75 ) at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java: 80 ) at com.sun.proxy.$Proxy260.get(Unknown Source) at org.springframework.data.redis.connection.lettuce.LettuceStringCommands.get(LettuceStringCommands.java: 68 ) ... 85 common frames omitted Caused by: java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java: 39 ) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java: 223 ) at sun.nio.ch.IOUtil.read(IOUtil.java: 192 ) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java: 380 ) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java: 253 ) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java: 1134 ) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java: 350 ) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java: 151 ) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java: 719 ) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java: 655 ) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java: 581 ) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java: 493 ) at io.netty.util.concurrent.SingleThreadEventExecutor$ 4 .run(SingleThreadEventExecutor.java: 989 ) at io.netty.util.internal.ThreadExecutorMap$ 2 .run(ThreadExecutorMap.java: 74 ) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java: 30 ) ... 1 common frames omitted |
原因:
解决办法:将Redis客户端和服务端调整为如下参数
问题2:Redis集群重新启动
现象:由于漏洞修复或参数调优需要,需要重新启动集群;
解决办法:
A. 保留原来的数据:逐个关闭redis实例,然后逐个地启动,redis集群会自动恢复起来;
B. 丢弃原来的数据,先逐个关闭redis实例,清空实例中数据存放目录下所有内容(/data/redis/bak/*),然后逐个地启动,再执行集群创建命令即可;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2020-10-20 Java 入门