PHP

搭配ccORM的redis连接操作类代码

字号+ 编辑: 国内TP粉 修订: 呆头鹅甲 来源: 原创 2018-04-14 22:07 我要说两句(0)

搭配ccORM的Redis操作库代码。需要搭配Yaf框架。

Redis连接类代码, 注意, 本代码是阻塞的,需要搭配Yaf配置文件。


<?php

declare(strict_types=1);
/**
 * Yaf专用
 * @author  qinchao  <castor@vrenetic.com>
 * @version 20200515
 */
class Db_Redis
{
/**
     * redis实例线程
     * @var  object
     */
public $redis;

/**
     * 实例容器
     * @var  array
     */
public static $instanceContainer;

/**
     * 业务逻辑用长连接线程
     * @var  array
     */
private static $_redisp = [];

// pdo操作类长连接线程
private static $_redis_pdo = [];

/**
     * 启动连接
     * @access  public   static
     * @param   integer  $dbIndex
     * @return  object
     */
public static function connect(int $dbIndex = 0)
{
if (empty(self::$instanceContainer)) {
self::$instanceContainer = new self();

self::$instanceContainer->redis = new \Redis();
}
$config = Yaf\Registry::get('config')->redis->cache;
$redis  = &self::$instanceContainer->redis;
$redis->connect($config->host, (int) $config->port);
$redis->auth($config->auth);
$redis->select($dbIndex);
return self::$instanceContainer;
}

/**
     * 长连接句柄
     * 根据库序号产生多个句柄容器
     * @access  public
     * @param   integer  $dbIndex  库号
     * @return  object
     */
public static function pconnect(int $dbIndex = 0)
{
if (!isset(self::$_redisp[$dbIndex])) {
self::$_redisp[$dbIndex] = new \Redis();
}
$redis = &self::$_redisp[$dbIndex];
$config = Yaf\Registry::get('config')->redis->cache;
$redis->pconnect($config->host, (int) $config->port);
$redis->auth($config->auth);
$redis->select($dbIndex);
return self::$_redisp[$dbIndex];
}

/**
     * pdo操作类专用的连接句柄
     * 根据库序号产生多个句柄容器
     * @access  public  static
     * @param   array   $config
     * @return  object
     */
public static function pconnectForPdo(array $config)
{
if (!isset(self::$_redis_pdo[$config['db']])) {
self::$_redis_pdo[$config['db']] = new \Redis();
}

$redis = &self::$_redis_pdo[$config['db']];
$redis->pconnect($config['ip'], (int) $config['port']);
$redis->auth($config['auth']);
$redis->select($config['db']);
return self::$_redis_pdo[$config['db']];
}

/**
     * 以下方法都是给redis短链接用的
     * 不要和长连接的线程容器搞混了
     */

/**
     * 获取redis实例
     * @access  public
     * @since   20200723
     * @return  object
     */
public function getInstance()
{
return $this->redis;
}

/**
     * @access public
     */
public function close()
{
return $this->redis->close();
}

/**
     * 使用Redis缓存键值
     * @access public
     * @param  resource  $redis   redis连接句柄
     * @param  string    $key     键名称
     * @param  string    $value   键值
     * @param  integer   $ttl     键值生存时间
     * @return boolean   存储结果
     */
public function set($key, $value, int $ttl = -1)
{
$redis = &$this->redis;

if (empty($redis)) {
return false;
}

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

return $redis->set((string) $key, $value, $ttl);
}

/**
     * 对指定键定义过期时间
     * @access  public
     * @since   20200723
     * @return  integer
     */
public function expire($key, $ttl)
{
return $this->redis->expire($key, $ttl);
}

/**
     * 删除指定键的方法
     * @access  public
     * @since   20200723
     * @return  integer
     */
public function del($key)
{
return $this->redis->del($key);
}

/**
     * 获取redis指定键内的值方法
     * @access  public
     * @since   20200723
     * @return  mixed
     */
public function get($key)
{
return $this->redis->get($key);
}

/**
     * 追加字符串方法
     * @access  public
     * @since   20200723
     * @return  integer   指定键的长度
     */
public function append($key, $string)
{
return $this->redis->append($key, $string);
}

/**
     * 右推入队列
     * @access  public
     * @param   string  $key
     * @param   string  $value
     */
public function rpush($key, $value)
{
return $this->redis->rpush($key, $value);
}

/**
     * 左冒泡队列
     * @access  public
     * @param   string  队列名称
     */
public function lpop($key)
{
return $this->redis->lpop($key);
}

/**
     * 获取队列长度
     * @access  public
     * @param   string  队列名称
     * @return  integer
     */
public function lLen($key)
{
return $this->redis->lLen($key);
}
}


阅完此文,您的感想如何?
  • 鼓掌

    0

  • 鄙视

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • 解决pecl安装swoole报错 error

  • php针对mysql的orm: 一个轻量级的pdo操作类

  • shell_exec() has been disabled for security reasons 解决方法

  • 鸟哥出品的高性能php框架YAF的安装和配置

我要说说
网上宾友点评
沙发已空
搭配ccORM的redis连接操作类代码