• 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'));
    

    本文来自博客园,作者:alisleepy,转载请注明原文链接:https://www.cnblogs.com/alisleepy/p/15647570.html

  • 相关阅读:
    软件质量保证体系是什么&#160;国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
    软件测试分为几个阶段&#160;各阶段的测试策略和要求是什么?
    BUG管理工具的跟踪过程(用BugZilla为例子)
    多线程
    设计模式
    一个简单的layui登陆界面
    反射技术
    Win10繁体——简体
    Vue学习—组件的学习
    IDEA 相关问题
  • 原文地址:https://www.cnblogs.com/alisleepy/p/15647570.html
Copyright © 2020-2023  润新知