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,尤其是每天早上报得最频繁

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/*),然后逐个地启动,再执行集群创建命令即可;

 

posted @ 2021-10-20 13:07  如幻行云  阅读(466)  评论(0编辑  收藏  举报