php+redis队列链表操作类

php redis队列处理

/**
 * 队列链表操作类
 *
 */
class QueueModel extends BaseModel
{

  public $redisHandler; //redis 句柄
  const QUEUE_LIST_KEY=‘article_list_queue‘; //队列保存键名
  const QUEUE_LIST_LEN=‘article_list_length‘;//队列长度保存键名
  const QUEUE_LIST_LEN_CACHE_TIME=3600; //队列长度保存键名缓存时间
    /**
     * 初始化
     */
    function __construct()
    {
        parent::__construct();
        //设置redis链接
        $this->redisHandler=$this->redis;

    }

    /**
     * [getLength 获取队列长度]
     * @return [type] [description]
     */
    public function getLength(){
           $length=(int)$this->redisHandler->get(self::QUEUE_LIST_LEN);
           if(!empty($length)){
             $length=$this->redisHandler->lSize(self::QUEUE_LIST_KEY);
             $this->redisHandler->setex(self::QUEUE_LIST_LEN, self::QUEUE_LIST_LEN_CACHE_TIME, $length);
           }
           return $length ? $length :0;
    }

    /**
     * [insertQueue 插入队列]
     * @param  [type] $data [description]
     * @return [type]       [description]
     */
    public function  insertQueue($data){
         $length=$this->redisHandler->lPush(self::QUEUE_LIST_KEY,serialize($data));
         if($length){
            $this->setInc(1);
         }
         return $length;
    }

     /**
      *[removeQueue 从队列中取出数据]
      * @return [type] [description]
      */
     public function removeQueue(){
            $value=$this->redisHandler->rPop(self::QUEUE_LIST_KEY);
            if($value){
                $this->setDec(1);
                return unserialize($value);
            }else{
                return false;
            }

     }
     /**
      * [setInc 队列长度增加]
      * @param integer $value [description]
      */
     public function setInc($value=1){
        $list_len=$this->getLength()+$value;
        return $this->redisHandler->setex(self::QUEUE_LIST_LEN, self::QUEUE_LIST_LEN_CACHE_TIME,  $list_len);
     }

     /**
      * [setDec 队列长度减少]
      * @param integer $value [description]
      */
     public function setDec($value=1){
         $list_len=$this->getLength()-$value;
         return $this->redisHandler->setex(self::QUEUE_LIST_LEN, self::QUEUE_LIST_LEN_CACHE_TIME,  $list_len);
     }

}
时间: 2024-08-02 01:34:01

php+redis队列链表操作类的相关文章

redis队列链表使用操作

lpush/rpush:lpush从链表左边插入,rpush从链表右边插入 127.0.0.1:6379> lpush character a (integer) 1 127.0.0.1:6379> rpush character b (integer) 2 127.0.0.1:6379> rpush character c (integer) 3 那么这个链表是a-->b-->c 取出链表中元素 127.0.0.1:6379> lrange character 1 2

Redis队列——PHP操作简单示例

1 入队操作 2 <?php 3 $redis = new Redis(); 4 $redis->connect('127.0.0.1',6379); 5 while(True){ 6 try{ 7 $value = 'value_'.date('Y-m-d H:i:s'); 8 $redis->LPUSH('key1',$value); 9 sleep(rand()%3); 10 echo $value."\n"; 11 }catch(Exception $e){

php redis数据库操作类

<?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * @author xuen * */ class Redis { private $redis; //当前数据库ID号 protected $dbId=0; //当前权限认证码 protected $auth; /** * 实例化的对象,单例模式. *

php的redis 操作类,适用于单台或多台、多组redis服务器操作

redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台.多组redis服务器操作 使用方法: 1.$rs=new mz_redis();$rs->load_config_file('redis_config1.php');$www=$rs->connect(1,true,0)==单台读连接,连接read_array第一个元素对应的redis服务器中的随

使用RedisTemplate的操作类访问Redis(转载)

原文地址:http://www.cnblogs.com/luochengqiuse/p/4641256.html private ValueOperations<K, V> valueOps; private ListOperations<K, V> listOps; private SetOperations<K, V> setOps; private ZSetOperations<K, V> zSetOps; 1. RedisOperations接口说明

深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis

上一篇说了RedisTemplate对注解事务的支持,以及提供的序列化器. 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了.但是通过回调去获取connection,完全没有达到一个模版类的功能.所以这篇我们会讲下几种Operations接口提供的方法. private ValueOperations<K, V> valueOps; private

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个数的控制并节约系统资源.假设希望在系统中某个类的对象仅仅能存在一个.单例模式是最好的解决方式. 2 模式核心思想 1)某个类仅仅能有一个实例: 2)它必须自行创建这个实例: 3)它必须自行向整个系统提供这个实例. 3 模式架构图 4 项目应用 4.1 需求说明 CleverCode在实际的PHP项目

使用RedisTemplate的操作类访问Redis(转)

深入理解Spring Redis的使用 (三).使用RedisTemplate的操作类访问Redis 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了.但是通过回调去获取connection,完全没有达到一个模版类的功能.所以这篇我们会讲下几种Operations接口提供的方法. private ValueOperations<K, V> valu

封装php redis缓存操作类

封装php redis缓存操作类,集成了连接redis并判断连接是否成功,redis数据库选择,检测redis键是否存在,获取值,写入值,设置生存时间和删除清空操作. php redis类代码: <?php/*** redisdrive.class.php* php redis 操作类**/class redisdrive{ //键名 public $key; //值 public $value; //默认生存时间 public $expire = 86400; /*60*60*24*/ //连