zoukankan      html  css  js  c++  java
  • redis执行失败后如何处理

    redis执行失败后如何处理

    redis出现错误的两种情况:1) Redis连接失败,系统异常   2)Redis执行失败

    1、redis连接失败,抛出异常(RedisException类)

    如果无法访问Redis服务器,phpredis会抛出RedisException对象。如果连接 出现问题,Redis服务已关闭,或者redis主机压力过大,则可能发生这种情况。在任何其他不涉及无法访问的服务器(例如key不存在,无效命令等)的问题情况下,phpredis将返回FALSE。

    解决方法:

    1)依次检查Linux,php,nginx,redis配置方面可能出现的问题

    2)检查phpredis连接redis用的方法是connect()还是pconnect()

    说明:通常我们在使用phpredis连接redis的时候,都是用的connect()方法,在大量的php请求请求到redis的时候,这种方式会不断的建立和关闭连接,占用很多资源,导致服务器出现大量的TIME_WAIT,这样就会有很多php请求无法连接redis,出现Redis server went away这个异常,实际就说明redis服务没有收到请求。

    3)try ... catch ... 是必须要做的标准开发编程手段

    下面给出一段参考代码:

     1     public function testRedis()
     2     {
     3         $redis=new Redis();
     4         try {
     5             $redis->connect('127.0.0.1', 6379);
     6             $redis->setex('test_key', 60, 'test');
     7         } catch (Exception $e) {
     8             die( "Cannot connect to redis server:".$e->getMessage() );
     9         }
    10     }

     

    2、执行失败

    这个比较简单,根据phpredis手册,针对执行失败返回的结果进行处理即可

    下面给出一段参考代码:

    1         //记录分享次数
    2         $res = $this->redis->incr('share' . $openid);
    3         //执行成功,则设在缓存时间
    4         if ($res) {
    5             $this->redis->expire('share' . $openid, EXPIRE_TIME);
    6         }

    3、执行失败,是否需要提示用户?

    这是需要视情况而定的,主要是根据这个执行失败对用户的影响程度

    1)对用户影响不大

    比如点赞排行榜这种的,某个用户的点赞成功与否对总的点赞次数影响不明显,这种情况下使用redis缓存点赞失败,无须提示用户。

    2)对用户影响比较明显

    比如redis缓存的是用户个人收藏的图书信息,如果收藏失败,就无法显示收藏的图书信息,直接影响到用户的体验,这种就需要友好地提示用户。

     

    参考链接:

    phpredis中文手册:https://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

    phpredis英文手册:https://github.com/phpredis/phpredis/

  • 相关阅读:
    android Textview动态设置大小
    小米1plus MIUI RadioButton的问题
    快读
    高精集合
    清北学堂part2
    清北学堂part1
    OTZ%%%子谦。大佬
    筛质数大优化
    回文日期
    高精度加法
  • 原文地址:https://www.cnblogs.com/hld123/p/14109924.html
Copyright © 2011-2022 走看看