Redis缓存不起效的一种可能原因解决

今天公司新上了一个网站,但是页面缓存却没有起作用,每次刷新页面在页面中的随机内容都再次随机而不是被缓存下来。显然,原因是Redis挂了。

先看一眼

~# redis-cli
127.0.0.1:6379> keys *
1) "cgi"

进入了Redis的bash,但是查询发现只有一条记录。说明Redis并没有Down,但是确实是出现了问题。

127.0.0.1:6379> set 0 1
(error) 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. 

随意插入一条key:value记录,报错,错误内容为“not able to persist on disk”,无法更改磁盘内容。

考虑到可能是Redis配置问题,先看下Redis的配置文件

~# vi /etc/redis/6379.conf

找到了以下内容

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/redis/6379

Redis将缓存数据库存在到了/var/redis/6379/dump.rdb这个文件内。顺势找到这个文件并查看权限

~# cd /var/redis/6379
~# ll
-rw-r--r-- 1 root root   18 Nov 13 03:25 dump.rdb

没有修改权限。看来原因找到了,Redis无法修改缓存数据库,导致内容没有写入。修改权限为777,重启Redis。

root@localhost:/var/redis/6379# chmod 777 dump.rdb 
root@localhost:/var/redis/6379# ll
-rwxrwxrwx 1 root root   18 Nov 13 03:25 dump.rdb*
root@localhost:/var/redis/6379# ps aux|grep redis
root      3392  0.1  0.0  39648  3156 ?        Ssl  Nov13  21:00 /usr/local/bin/redis-server *:6379              
root     29174  0.0  0.0   9392  2096 pts/3    R+   09:25   0:00 grep --color=auto redis
root@localhost:/var/redis/6379# kill -9 3392
root@localhost:/var/redis/6379# /usr/local/bin/redis-server /etc/redis/6379.conf

这里有一段插曲,因为尝试使用service redis restart失败,考虑到可能Redis并没有被写入Service中,所以就查询了以下进程然后重启。再次刷新页面,测试Redis是否工作。

root@localhost:/var/redis/6379# redis-cli
127.0.0.1:6379> set 1 1
OK
127.0.0.1:6379> keys *
  1) "<CONTENTS>"
  ...
  8) "<CONTENTS>"

显示正常,Redis已经可用。

附:

后来去init.d下查找了一下,发现Redis是有service,只不过名字是redis_6379

~# cd /etc/init.d/
~# ll
-rwxr-xr-x  1 root root 1098 Nov  4 09:45 redis_6379*
~# service redis_6379 restart
Please use start or stop as first argument
~# service redis_6379 stop
Stopping ...
Redis stopped
~# service redis_6379 start
Starting Redis server...

 

 

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注