php 调用sMember和lRange方法返回null,reids里面有值并且在终端可以输出并且有值

来源:8-13 赛事直播在线用户处理 - redis方案(二)

qq_RS独行_0

2018-07-23

http://img.mukewang.com/szimg/5b557a170001b4ad06400184.jpg

http://img.mukewang.com/szimg/5b557a1700010e2011930826.jpg

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/7/16
* Time: 14:19
*/
/**
* 实现同步实现同步redis
*/
namespace  app\common\lib\redis;
class Predis{
   /**
    * 单例模式的变量
    * @var null
    */
   private static $_instance=null;

   public $redis = '';


   /**
    * 单例模式应用防止多次连接redis,提高性能
    * @return Predis|null
    */
   public static function getInstance(){
       if(is_null(self::$_instance) || empty(self::$_instance)){
           self::$_instance = new self();
       }
       return self::$_instance;
   }


   /**
    *连接redis
    */
   private function __construct()
   {
       $this->redis = new \Redis();
       $result = $this->redis->connect(config('redis.host'), config('redis.port'));
       if($result==false){
           throw new \Exception('redis connect fail');
       }

   }

   /**
    *redis set方法的应用
    * @param $key
    * @param $value
    * @param int $time
    * @return bool|string
    */
   public function set($key,$value,$time=0){
       if(!$key){
           return '';
       }

       if(is_array($value)){
           $value = json_encode($value);
       }

       if(!$time){
           return $this->redis->set($key,$value);
       }
       return $this->redis->setex($key,$time,$value);
   }

   /**
    * redis get方法
    * @param $key
    * @return string
    */
   public function get($key){
       if(!$key){
           return '';
       }
       return $this->redis->get($key);
   }

   /**
    * 获取有序列表的结合
    * @param $key
    * @return array
    */
   public function sMembers($key) {
       var_dump($key);
       return $this->redis->sMembers($key);
   }


   /**
    * 获取list的元素值结合
    */
   public function lRange($key){
       return $this->redis->lRange($key,0,-1);
   }

   /**
    * 魔术方法__call
    */
   public function __call($name, $arguments) {
//        echo $name.PHP_EOL;
//        print_r($arguments);
       if(count($arguments) != 2) {
           return '';
       }
       $this->redis->$name($arguments[0], $arguments[1]);
   }

}

写回答

1回答

singwa

2018-07-24

建议您吧 redis的那个key打印出来 看看是不是您最终的key

0
1
qq_RS独行_0
key值正确的我从终端吧当前的key值复制过来都不是,感觉这个方法不能用我都测试过好多次了,get方法是可以的sMember和lRange都返回null
2018-07-24
共1条回复

Swoole入门到实战打造高性能赛事直播平台

swoole创始人推荐,借助Swoole打造高性能直播平台

2228 学习 · 1062 问题

查看课程