Redis学习笔记-----Redis的连接报错和关闭报错

前言

在日常开发中我们习惯使用Esclipse连接Redis的服务端,这时候我们经常会遇到一个报错

1.在Eclipse中的报错
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

意思是:missf Redis已配置为保存RDB快照,但它当前无法在磁盘上持久化。可以修改数据集的命令被禁用,因为此实例配置为在RDB快照失败时报告写入期间的错误(停止对bgsave error的写入选项)。有关RDB错误的详细信息,请查看Redis日志。

在网上查找的过程:
原因主要是因为强制把redis快照关闭导致不能持久化的问题,在网上查了一些相关解决方案,通过stop-writes-on-bgsave-error值设置为no即可避免这种问题。

【1】命令行修改实例:

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

【2】修改redis.conf文件: vi打开redis-server配置的redis.conf文件,然后使用快速匹配模式:
/stop-writes-on-bgsave-error定位到stop-writes-on-bagsave-error字符串所在位置,接着设置为no即可

2.反思:虽然它很好地解决了我Eclipse上的报错,但我在使用Linux命令行对Redis进行shutdown操作时,仍然会报错:

127.0.0.1:6379> shutdown
(error) ERR Errors trying to SHUTDOWN. Check logs.

在这里我深刻地意识到这是一个治标不治本的方法,很可能是redis上生成的数据库dump.rdb的权限上有问题,导致了这两个错误,于是我查看了相关错误的日志信息。

3069:C 27 Jan 11:51:35.054 # Failed opening the RDB file dump.rdb (in server root dir /usr/local/redis) for saving: Permission denied

解释是:无法打开用于保存的RDB文件dump.RDB(在服务器根目录/usr/local/redis中):权限被拒绝

在解释上可得知,确实是dump.rdb的权限出现问题,可更重要的是连它的安装目录权限都被拒绝了,那么就应该是安装redis的目录上有权限不允许的情况,导致dump.rdb的操作失效。这时我们可以通过修改安装目录的权限得到该问题的解决
(重点命令: chmod 757 redis #其中redis为安装目录 )

[gs@localhost Desktop]$ cd /usr/local/redis                  # /usr/local/redis 为我安装redis的目录
[gs@localhost redis]$ cd ..
[gs@localhost local]$ ls													
bin  etc  games  include  lib  libexec  redis  sbin  share  src
[gs@localhost local]$ chmod 757 redis					# 修改该文件的权限
chmod: changing permissions of `redis': Operation not permitted             #提示用户的权限不足
[gs@localhost local]$ su root                               # 可以通过su root 进行管理员的切换
Password: 
[root@localhost local]# chmod 757 redis               # 修改成功
[root@localhost local]# 
[root@localhost local]# cd redis
[root@localhost redis]# ps -ef|grep -i redis                   # 查看现在运行的redis的相关程序
root      4119  4106  0 12:58 pts/0    00:00:00 grep -i redis
[root@localhost redis]# ./bin/redis-server ./redis.conf                  #打开redis的服务端
[root@localhost redis]# ./bin/redis-cli -a "guoweixin"                   #打开redis的客户端
127.0.0.1:6379> keys *
1) "user"
127.0.0.1:6379> shutdown
not connected>                                                                #成功关闭
发布了41 篇原创文章 · 获赞 2 · 访问量 2003

猜你喜欢

转载自blog.csdn.net/TheWindOfSon/article/details/104091695