陈奇网络工作室

处理redis持久化问题

系统运输

这是最近在开发过程中遇到的问题,因为必须经常使用Redis作为中间查询操作,它会突然故障,服务中止,并抛出异常

2020-01-0909:34:17.848 error 25703---- [ xnio-2 task-83 ] o.z.p.spring.web.advice.advice trait:interer

org.spring framework.data.redis.redissystemexception:errorinexecution; nestedexceptionisio.lettuce.core.rediscommandexecutionexception:misconfiguredtosaverdbsnapshots、 butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled.pleasecheckredislogsfordetailsaboutttttherrororrorod

atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (

atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (

atorg.spring framework.data.redis.connection.lettuce.lettuceexceptionconverter.convert (

atorg.spring framework.data.redis.passthroughexceptiontranslationstrategy.translate (

atorg.spring framework.data.redis.fallbackexceptiontranslationstrategy.translate (

atorg.spring framework.data.redis.connection.lettuce connection.convertlettuceaccessexception ( )

atorg.spring framework.data.redis.connection.lettucehashcommands.convertlettuceaccessexception (

atorg.spring framework.data.redis.connection.lettuce.lettucehashcommands.hset ( lettucehashcommands.Java:70 )

atorg.spring framework.data.redis.connection.defaultedredisconnection.hset ( defaultedredisconnection.Java:827

atorg.spring framework.data.redis.connection.defaultstringredisconnection.hset (

atorg.spring framework.data.redis.core.defaulthashoperations.lambda $ put $8( defaulthashoperations.Java:178

atorg.spring framework.data.redis.core.redis template.execute ( redis template.Java:224 ) )。

atorg.spring framework.data.redis.core.redis template.execute ( redis template.Java:184 ) )。

atorg.spring framework.data.redis.core.abstract operations.execute ( abstract operations.Java:95 ) )。

atorg.spring framework.data.redis.core.defaulthashoperations.put ( defaulthashoperations.Java:177 ) )。

atcom.SMP team.AAAA.service.impl.redisserviceimpl.setessession ( redisserviceimpl.Java:59 ) )。

atcom.SMP team.AAAA.service.impl.redisserviceimpl $ $ fastclassbyspringcglib $ $ 11b 51629.invoke ( generated ) ) )

atorg.spring framework.cglib.proxy.method proxy.invoke ( method proxy.Java:204 ) )。

是.

caused by:io.lettuce.core.rediscommandexecutionexception:misconfredisisconfiguredtosaverdbsnapshots, butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled.pleasecheckredislogsfordetailsaboutttttherrororrorod

随后,通过redis-cli登录到redis服务器并检查情况,发现ping不通

( error ) misconfredisisconfiguredtosaverdbsnapshots,butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetasetttttttastion

这个提示及其友好,虽然很长,但我喜欢:)

Redis问题

misconfredisisconfiguredtosaverdbsnapshots,butiscurrentlynotabletopersistondisk.commandsthatmaymodifythedatasetaredisabled

Redis被配置为存储数据库快照,但当前无法永久保存到硬盘。 用于修改集合数据的命令不可用。 请检查Redis日志中的详细错误消息。

原因

如果强制关闭Redis快照,则无法将其永久化。 本质上是因为内存不足。 因此,需要相关的内存处理。

修改修复配置

更改快照备份的目录,并将快照重定向到其他目录

更改主机内存配置

解决方案1

通过将stop-writes-on-bgsave-error设置为no,直接关闭持久性快照的保存

127.0.0.1:6379 configsetstop-writes-on-BG save-errorno

这在生产中可能会出现一些问题。 但这种方法治标不治本,他只是让我们“无视”他。 需要了解bgsave失败的原因,例如当redis用于缓存或会话场景时

解决方案2

将备份的rdb文件重定向到目录

configsetdir/tmp/some/directory/other/than/var

CONFIG SET dbfilename temp.rdb

使用此命令后,必须确保bgsave_in_progress返回结果0

解决方案3

在内核运行期间动态更改内核运行参数

echo\\\& quot; VM.overcommit_memory=1\\& quot; /etc/sysctl.conf

sysctl vm.overcommit_memory=1

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3