首先 , 先说说,这篇文章所要解决的问题是什么:
主要就是在,我们突然需要在关闭 redis的时候 进行 运行我们的 spring boot 的程序的 时候 , 这时候 都会突然报错 。 主要的 报错类型就基本就是 redis 未连接的报错类型。然后导致程序挂掉。
主要的原因便是:spring boot redis 的自动配置类(名字忘了,当然,你也可以想办法替换掉这个自动类,也是解决问题的方案之一)。这个类会强迫我们去生成一个对应的redisTemplate , 这个redisTemplate在创建的时候,会需要将 redisConnectionFactory set 进去 。 这时候,会触发 redisConnectionFactory 的 getConnect方法(有时候可能是另外一个获取 集群连接的接口) 。倘若你没有正常连接。程序就会报错,把你程序搞崩。因此,如果你想解决这个问题,最好就从这个 redisConnectionFactory 入手。
redisConnectionFactory 只是一个接口 , 官方目前( 应该说我目前 ) 使用的是 LutteConnectionFactory( 名字太长了记不住,差不多是这个名字) 这个对应的 实体类。我们可以直接继承这个类(我曾经尝试过implements redisConnectionFactory 接口 , 然后内核使用 Lutte ,但是不知道报什么错失败了, 可能是我哪里出了什么小问题 , 可以自己尝试一下),然后改写 , 只需要 getConnection 这个方法 , 使用 try 来 不让报错 下沉把程序搞崩溃了就行 , 下面写个小例子,不一定要按照我的方案来写
1.直接启动
进入redis根目录,执行命令:
#加上‘&’号使redis以后台程序方式运行
./redis-server &
2.通过指定配置文件启动
可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf
进入redis根目录,输入命令:
./redis-server /etc/redis/6379.conf
#如果更改了端口,使用`redis-cli`客户端连接时,也需要指定端口,例如:
redis-cli -p 6380
后台方式启动
修改redis.conf,把daemonize no修改成daemonize yes
停止:redis-cli shutdown
查找进程号
ps -ef | grep redis
杀进程
kill -6 pid
redis快照问题错误信息如下:
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
排查与解决步骤:
进入redis使用info命令查看,会发现最后一次快照失败的信息
rdb_last_bgsave_status:err
处理方法:
1.进入redis临时关闭配置(如果需要,要再redis.conf上写上该配置,不然下次重启redis配置会失效)
config set stop-writes-on-bgsave-error no
ubuntu 卸载redis1. 卸载软件
apt-get remove redis
2. 清除配置
apt-get remove --purge redis
3. 删除残留文件
find / -name redis
--一般设置如下
rm -rf var/lib/redis/
rm -rf /var/log/redis
rm -rf /etc/redis/
rm -rf /usr/bin/redis-*
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)