配置redis缓存实例出现报错 及解决方法

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

由此,问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值