配置redis缓存实例出现报错 及解决方法
redis由于其高并发和高性能常被用于缓存配置时常常会遇到一些问题。正常情况下,访问应该如下展示:第一次访问页面再次刷新上次访问页面,会出现如下页面 mysql 变为redis但在配置过程中常常出现,没有出现redis,一直是mysql可能出现的原因:1没有关闭防火墙systemctl stop firewalldsystemctl disable firewalld 开机自关闭防火墙sed -i
·
redis由于其高并发和高性能常被用于缓存
原理图如下
配置时常常会遇到一些问题。
正常情况下,访问应该如下展示:
第一次访问页面
再次刷新上次访问页面,会出现如下页面 mysql 变为redis
但在配置过程中常常出现,没有出现redis,一直是mysql
可能出现的原因:
1 首先出现问题,先看日志,再找可能的原因
vim /var/log/httpd/error.log
查看报错原因
2 redis没有启动
src/redis.server redis.conf
查看redis是否启动
ps -ef |grep redis
如下才算启动成功
若没有出现,要将redis.conf中daemonize no改为yes
再次启动redis服务即可
3php页面的逻辑出现问题
<?php
$redis = new Redis();
$redis->connect('192.168.75.171',6379) or die ("could net connect redis server");
$query = "select * from dog"; //红色代表这里是你的数据库里的表名
//为了简单一点,这里就读取了8条数据
for ($key = 1; $key < 9; $key++)
{
if (!$redis->get($key))
{
$connect = mysql_connect('192.168.75.168','root','Nebula@123');
mysql_select_db(mytest); //mytest是192.168.75.168的数据库名
$result = mysql_query($query);
//如果没有找到$key,就将该查询sql的结果缓存到redis
while ($row = mysql_fetch_assoc($result))
{
$redis->setex($row['id'],10,$row['name']); //设置时间超过10秒后清除缓存
}
$myserver = 'mysql';
break;
}
else
{
$myserver = "redis";
$data[$key] = $redis->get($key);
}
}
echo $myserver;
echo "<br>";
for ($key = 1; $key < 9; $key++)
{
echo "number is <b><font color=#FF0000>$key</font></b>";
echo "<br>";
echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
echo "<br>";
}
?>
注意:由于PHP页面for循环为最少九次,故在192.168.75.168的mytest库中的表dog,数据必须要有9条才可以。查看日志(vim /var/log/httpd/error.log)发现如下报错
导致再次刷新页面会出现 mysql没有变为redis
这个问题是因为redis一个键对应一个值,要将数据库的内容添加到与PHP页面中访问的数目一致才可以。
再次访问mysql便会变成redis
由此,问题解决
更多推荐
已为社区贡献4条内容
所有评论(0)