php操作redis的一些基本操作

php操作redis的一些基本操作

背景:个人学习redis,php操作redis基本操作,记录一下,后续也可以完善完善作为一个工具类使用

代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: wkk
 * Time: 2021/12/5 - 00:04
 * Desc: <php操作redis相关操作(未完待补充)>
 */

class WkkRedis
{
    private static $ip   = '127.0.0.1'; // redis服务IP地址
    private static $auth = '123456';  // 如果开启了password,需要auth操作
    private $redis;

    public function __construct()
    {
        $this->redis = $this->initRedis(self::$ip, self::$auth);
    }

    /**
     * @brief 实例化redis类
     *
     * @param $ip
     * @param $auth
     * @return Redis
     */
    private function initRedis($ip, $auth): Redis
    {
        $redis = new Redis();
        $redis->connect($ip);
        // 如果设置了密码,则需要执行auth方法
        if ($auth) {
            $redis->auth($auth);
        }

        return $redis;
    }


    /**
     * @brief 添加string类型的值
     *
     * @param string $key
     * @param string $value
     * @param int $expire
     * @return bool
     */
    public function setStr(string $key, string $value, int $expire = 0): bool
    {
        // 设置过期时间
        if ($expire > 0) {
            return $this->redis->set($key, $value, $expire);
        }

        // 永不过期
        return $this->redis->set($key, $value);
    }

    /**
     * @brief 获取string类型的值
     *
     * @param $key
     * @return bool|mixed|string
     */
    public function getStr($key)
    {
        return $this->redis->get($key);
    }

    /**
     * @brief 添加string类型的键值对,如果key存在不处理,key不存在则添加
     *
     * @param string $key
     * @param string $value
     * @return bool
     */
    public function setnxStr(string $key, string $value): bool
    {
        return $this->redis->setnx($key, $value);
    }

    /**
     *  @brief 删除string类型的键,删除键值对信息
     *
     * @param string $key
     * @return int
     */
    public function delKey(string $key): int
    {
        return $this->redis->del($key);
    }

    /**
     *  @brief 删除string类型的键,同时删除多个
     *
     * @param array $keys
     * @return int
     */
    public function delKeys(array $keys): int
    {
        return $this->redis->del($keys);
    }

    /**
     *  @brief 设置超时时间,单位:秒
     *
     * @param string $key
     * @param int $expire
     * @return bool
     */
    public function setExpire(string $key, int $expire): bool
    {
        return $this->redis->expire($key, $expire);
    }

    /**
     * @brief  添加hash键值对,添加单个键值对
     *
     * @param string $key
     * @param string $hashKey
     * @param string $value
     * @return bool|int
     */
    public function hsetHash(string $key, string $hashKey, string $value)
    {
        return $this->redis->hSet($key, $hashKey, $value);
    }

    /**
     * @brief 添加hash键值对,可以同时添加多个键值对
     *
     * @param string $key
     * @param array $value
     * @return bool
     */
    public function hmsetHash(string $key, array $value): bool
    {
        return $this->redis->hMSet($key, $value);
    }

    /**
     * @brief 获取hash键值信息,获取单个键值
     *
     * @param string $key
     * @param string $hashKey
     * @return string
     */
    public function hgetKey(string $key, string $hashKey): string
    {
        return $this->redis->hGet($key, $hashKey);
    }

    /**
     * @brief 获取hash键值信息,获取所有键值对信息,包括键名和键值
     *
     * @param string $key
     * @return array
     */
    public function hgetAll(string $key): array
    {
        return $this->redis->hGetAll($key);
    }


    /**
     * @brief 给链表添加值,支持同时添加多个value,逗号分隔value即可
     *
     * @param string $key
     * @param $value
     * @return bool|int
     */
    public function lpush(string $key, $value)
    {
        return $this->redis->lPush($key, $value);
    }

    /**
     * @brief 链表右侧取出值
     *
     * @param $key
     * @return bool|mixed
     */
    public function rpop($key)
    {
        return $this->redis->rPop($key);
    }

    /**
     * @brief 链表从左侧取出值,从列表中删除一个值,返回该值
     *
     * @param $key
     * @return bool|mixed
     */
    public function lpop($key)
    {
        return $this->redis->lPop($key);
    }

    /**
     * @brief 获取链表的值,从start到end位置
     *
     * @param $key
     * @param int $start
     * @param int $end
     * @return array
     */
    public function lrange($key, int $start = 0, int $end = -1): array
    {
        return $this->redis->lRange($key, $start, $end);
    }

    /**
     * @brief 获取链表的长度
     *
     * @param string $key
     * @return bool|int
     */
    public function gelListLen(string $key)
    {
        return $this->redis->lLen($key);
    }

    /**
     * @brief 添加数据到集合中
     *
     * @param string $key
     * @param $value
     * @return bool|int
     */
    public function saddValue(string $key, $value)
    {
        return $this->redis->sAdd($key, $value);
    }

    /**
     * @brief 判断value是否在集合中
     *
     * @param $key
     * @param $value
     * @return bool
     */
    public function sismenber($key, $value): bool
    {
        return $this->redis->sIsMember($key, $value);
    }

}

# demo1:连接redis
//$redis = new WkkRedis();
# $res   = $redis->setStr('php_str_test', 'php操作redis,写入键值对信息,超时时间为-1,永不过期');
//$val = $redis->getStr('php_str_test');
//var_dump($val);
//$res = $redis->delKey('php_str_test2');
//exit($res);

//$redis->setnxStr('php_str_test1', '通过setnx写入数据1');
//$redis->setnxStr('php_str_test2', '通过setnx写入数据2');
//$res = $redis->delKeys(['php_str_test1', 'php_str_test2']);
//exit($res);

//$res = $redis->hsetHash('php_hash_demo', 'name', '王凯凯');
//var_dump($res);

//$res = $redis->hmsetHash('php_hash_demo', ['age' => 28, 'gender' => '男', 'birth' => '1993306']);
//var_dump($res);
//$val = $redis->hgetKey('php_hash_demo', 'name');
//var_dump($val);

//$res = $redis->lpush('list_key1', '1');
////$val = $redis->lRange('list_key1', 0, -1);
//var_dump($res);

//var_dump($redis->rpop('list_key1'));

//var_dump($redis->hgetAll('php_hash_demo'));
//var_dump($redis->hgetKey('php_hash_demo', 'name'));
posted @ 2021-12-05 22:58  alisleepy  阅读(424)  评论(0)    收藏  举报