请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

https://img1.sycdn.imooc.com//szimg/5b557a170001b4ad06400184.jpg

https://img1.sycdn.imooc.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]);
   }

}

正在回答 回答被采纳积分+3

1回答

singwa 2018-07-24 00:59:51

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

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_RS独行_0 #1
    key值正确的我从终端吧当前的key值复制过来都不是,感觉这个方法不能用我都测试过好多次了,get方法是可以的sMember和lRange都返回null
    回复 有任何疑惑可以回复我~ 2018-07-24 09:15:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信