ThinkPHP5中怎么使用redis


    前提:因为本文主要围绕着在thinkphp5中使用redis的,所以关于redis的安装就不特意说明了,不过在这稍微提醒一下,安装完redis后务必要开启php.ini扩展,否则还是无法使用redis的。

    配置

    1.会用ThinkPHP5的同学们都知道,TinkPHP5中封装了缓存类,我们只需要在/application/congfig.php中的cache中填入缓存配置项就可以使用了(如下所示)。

    ThinkPHP5中怎么使用redis

    2.从/thinkphp/library/think/cache/driver/Redis.php文件可知这里封装的redis缓存只能使用redis的string基本类型,如果要使用哈希或队列等复合数据类型的话是不行的。

    看缓存类/thinkphp/library/think/cache/Driver.php会发现handler方法会返回句柄,所以我们只要在我们使用redis的地方获得这个句柄就可以使用redis的所有数据类型了,因此可以在/thinkphp/library/think/Cache.php中添加获取句柄方法getHandler

    	/**
         * 返回句柄对象,可执行其它高级方法
         *
         * @access public
         * @return object
         */
        public function handler()
        {
            return $this->handler;
        }
    	/*
        *  获取句柄
        * @param  
        */
        public static function getHandler()
        {
            return self::init();
        }

    ThinkPHP5中怎么使用redis

    redis使用

    string(字符串)

    基本的类型,一个 key 对应一个 value。

    一个string 类型的值最大能存储 512MB

    图解:

    ThinkPHP5中怎么使用redis

    // 创建数据
    $redis->set('key', 'value');// 获取数据
    $value = $redis->get('key');
    echo $value . PHP_EOL;// 修改数据,与创建数据一致,即覆盖数据
    $redis->set('key', 'value2');
    echo $redis->get('key') . PHP_EOL;// 追加数据
    $redis->append('key', '_value2');
    echo $redis->get('key') . PHP_EOL;// 删除数据
    $redis->del('key');
    // $redis->delete('key');
    var_dump($redis->get('key'));// 创建数据,带有效期
    $redis->set('timeout_key', 'timeout_value', 5);
    $redis->setex('timeout_key', 5, 'timeout_value');
    // 获取数据的有效期
    echo $redis->ttl('timeout_key') . PHP_EOL;// 判断是否已经写入,未写入则写入
    $redis->set('unique_key', 'unique_value');
    if (!$redis->setnx('unique_key', 'unique_value')) {
    	echo $redis->get('unique_key') . PHP_EOL;
    }// 批量创建
    $multi = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'];
    $redis->mset($multi);// 批量获取
    $result = $redis->mget(array_keys($multi));
    var_dump($result);

    Hash(哈希)

    hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    每个 hash 可以存储 2^32 -1 键值对(40多亿)

    图解 :

    ThinkPHP5中怎么使用redis

    // 创建 hash 表
    // 向名字叫 'hash' 的 hash表 中添加元素 ['key1' => 'val1']
    $redis->hSet('hash', 'key1', 'val1');// 获取 hash表 中键名是 key1 的值
    echo $redis->hGet('hash', 'key1') . PHP_EOL;// 获取 hash表的元素个数
    echo $redis->hLen('hash') . PHP_EOL;// 获取 hash表 中所有的键
    $keys = $redis->hKeys('hash');
    var_dump($keys);// 获取 hash表 中所有的值
    $vals = $redis->hVals('hash');
    var_dump($vals);// 获取 hash表 中所有的键值对
    // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍
    // $all = $redis->hGetAll('hash');
    // var_dump($all);// 判断 hash 表中是否存在键名是 key2 的元素
    $bool = $redis->hExists('hash', 'key2');
    echo $bool ? '存在' : '不存在' . PHP_EOL;// 批量添加元素
    $redis->hMset('hash', ['key2' => 'val2', 'key3' => 'val3']);// 批量获取元素
    $hashes = $redis->hMGet('hash', ['key1', 'key2', 'key3']);
    var_dump($hashes);// 删除 hash表
    $redis->del('hash');

    List(列表)

    列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。List types are commonly used in messaging queue services to facilitate message exchange between multiple programs.。每个列表最大可以存储约40亿个元素,即2^32-1个元素。

    乐活途购物分享社区 乐活途购物分享社区

    beta v1.1版本为第一个版本,简单的整合了基础功能,各位站长拿到程序后,不要纠结后台的功能简单,后续将不断更新扩展。在beta v1.1版本使用过程中遇到什么问题,请登录 www.loftto.com 进行反馈! 安装说明######重要提醒:程序不支持二级目录安装,请使用一级目录或二级目录绑定!#第一步,确定你的服务器支持PHP+mysql。#第二步,确定你的服务器开启了gd库。#第三步,

    乐活途购物分享社区 0 查看详情 乐活途购物分享社区

    图解 :

    ThinkPHP5中怎么使用redis

    // 向队列左侧加入元素
    $redis->lPush('lists', 'X');
    $redis->lPush('lists', 'X');
    // 向队列右侧加入元素
    $redis->rPush('lists', 'Z');// 将索引为1的数据修改为 Y
    $redis->lSet('lists', 1, 'Y');// 获取 list 长度
    $length = $redis->lLen('lists');
    echo $length;// 遍历 list
    $lists = $redis->lRange('lists', 0, $length - 1);
    dump($lists);// 从左侧出队一个元素(获取并删除)
    $x = $redis->lPop('lists');
    echo $x . PHP_EOL;
    // 从右侧出队一个元素(获取并删除)
    $z = $redis->rPop('lists');
    echo $z . PHP_EOL;// 获取左侧第一个元素
    $y = $redis->lIndex('lists', 0);
    echo $y . PHP_EOL;// 删除队列
    $redis->del('lists');

    Set(集合)

    Redis的Set是string类型的无序集合。

    和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。

    集合最大的优势在于可以进行交集并集差集操作。

    Set可包含的最大元素数量是4294967295(40多亿)。

    集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

    图解 :

    ThinkPHP5中怎么使用redis

    // 创建集合
    $redis->sAdd('sets', 'value1', 'value2');
    // 以数组形式创建集合
    $redis->sAddArray('sets2', ['value1', 'value2', 'value3']);// 取两个集合的并集
    $union = $redis->sUnion('sets', 'sets2');
    // 取两个集合的差集
    $diff = $redis->sDiff('sets', 'sets2');
    // 取两个集合的交集
    $inter = $redis->sInter('sets', 'sets2');var_dump($union, $diff, $inter);// 获取集合数量
    $card = $redis->sCard('sets');
    echo $card . PHP_EOL;// 获取集合中全部元素
    // 不推荐使用这种方法获取全部数据,会导致服务器执行超时,推荐方法后边会详细介绍
    $sets = $redis->sMembers('sets');
    var_dump($sets);// 判断元素是否是集合中的成员
    $isMember = $redis->sIsMember('sets', 'value2');
    var_dump($isMember);// 删除集合中的元素
    $redis->sRem('sets', 'value2');
    var_dump($redis->sMembers('sets'));// 随机获取一个元素
    echo $redis->sRandMember('sets');// 随机获取一个元素并从集合中删除
    echo $redis->sPop('sets');// 删除集合
    $redis->del('sets', 'sets2');

    zset(有序集合)

    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。

    redis正是通过分数来为集合中的成员进行从小到大的排序。

    // 添加成员
    $redis->zAdd('zset', 95, '小明');
    $redis->zAdd('zset', 99, '小刚');
    $redis->zAdd('zset', 100, '小红');// 统计成员个数
    echo $redis->zCard('zset') . PHP_EOL;// 获取某个成员的分数
    $score = $redis->zScore('zset', '小明');
    echo $score . PHP_EOL;// 获取某个成员的排名
    $rank = $redis->zRank('zset', '小明'); // 从低到高排序的名次
    $revRank = $redis->zRevRank('zset', '小明'); // 从高到低排序的名次
    echo $rank . PHP_EOL;
    echo $revRank . PHP_EOL;// 给指定成员增加分数
    $redis->zIncrBy('zset', 1, '小明'); // 给小明加一分// 返回指定排名范围的成员
    $range = $redis->zRange('zset', 0, 9, true); // 返回分数从低到高排序的前10名及分数
    $revRange = $redis-> zRevRange('zset', 0, 9, true); // 返回分数从高到低排序的前10名及分数
    var_dump($range);
    var_dump($revRange);// 删除成员
    $redis->zRem('zet', '小明');// 返回指定分数范围的成员
    $rangeByScore = $redis->zRangeByScore('zet', 98, 100); // 返回指定分数范围内从低到高排序的成员
    $revRangeByScore = $redis->zRevRangeByScore('zet', 98, 100); // 返回指定分数范围内从高到低排序的成员
    var_dump($rangeByScore);
    var_dump($revRangeByScore);

    以上就是ThinkPHP5中怎么使用redis的详细内容,更多请关注其它相关文章!


    # 如何实现  # 行业网站建设要点包括  # 贷款网上推广网站  # 阳江网站seo优化网站  # 黑龙江港网站建设  # 番禺抖音seo广告招聘  # 网站推广 49加  # 天津黑曼巴网站建设  # 宣城做网站优化哪家合适  # 咸阳酒吧推广招聘网站  # 转行seo专员怎么样  # redis  # 网络带宽  # 详细介绍  # 到低  # 推荐使用  # 第一个  # 键值  # 是一个  # 句柄  # 小明  # thinkphp 


    相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


    相关推荐: SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南  我的世界游戏平台入口 我的世界官方官网直达链接  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  微信如何设置字体大小_微信字体设置的阅读舒适  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  构建可配置的J*aScript加权点击计数器与共享总计功能  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  魔法祈幻界兑换码礼包大全  免费占卜在线神算_免费占卜手机神算  如何配置VS Code作为您Git操作的默认编辑器  4399造梦西游3无敌版_4399游戏入口  圆通快递官方入口不需要登录 在线查询入口快速查询  抖音官网入口快速访问 抖音网页版账号注册解析  WooCommerce 购物车:始终显示所有交叉销售商品  苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  以下哪一个是适应长期护理制度发展而设立的新职业  《微信》视频号原创声明开启方法  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  J*aScript:从子元素中批量移除特定CSS类  mysql导入sql文件能分批导入吗_mysql分批次导入大sql文件的实用技巧  《小黑盒》删除历史浏览方法  LINUX怎么查看显卡信息_LINUX查看GPU状态  Composer如何使用composer-plugin-api开发自定义插件  深入理解J*aScript异步操作:setTimeout与调用栈的真相  Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能  《浙里办》电子发票开具方法  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  批改网网页版登录 批改网电脑版学生登录入口  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  Excel宏怎么删除_Excel中删除宏的详细操作流程  解决SQLAlchemy模型跨文件关联的Linter兼容性指南  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  126邮箱申请入口官网_126邮箱注册免费登录2025  LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用  三角洲行动2025年9月10日摩斯密码分享  多多买菜门店端app订单查看方法  处理含命名空间的XML文件 Power Query中的高级技巧  PySimpleGUI中实现键盘按键与按钮事件绑定教程  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  实时数据流中高效查找最小值与最大值  PHP 4 函数中引用参数的默认值限制与解决方案  《tt语音》超级玩家开通方法  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  汽水音乐网页端访问 汽水音乐官方网页直达  《伊瑟》凶影追缉库卢鲁boss攻略  J*aScript实现网页表单实时输入字段比较与验证教程  Golang如何测试结构体方法_Golang reflect方法测试与调用技巧 

     2023-06-02

    了解您产品搜索量及市场趋势,制定营销计划

    同行竞争及网站分析保障您的广告效果

    点击免费数据支持

    提交您的需求,1小时内享受我们的专业解答。

    运城市盐湖区信雨科技有限公司


    运城市盐湖区信雨科技有限公司

    运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

     8156699

     13765294890

     8156699@qq.com

    Notice

    We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
    You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.