问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp+redis-TP框架里怎么扩展redis操作

发布网友 发布时间:2022-04-06 02:53

我来回答

2个回答

懂视网 时间:2022-04-06 07:14

下面由thinkphp教程栏目给大家介绍ThinkPHP6多例Redis类实现,希望对需要的朋友有所帮助!

在Thinkphp项目中封装一个Redis多库单例操作类

1.操作前的准备

如果没有安装phpredis模块那么先执行

composer require predis/predis

2.配置Redis连接信息

在appconfigcache.php中配置

'redis' => [
 // 驱动方式
 'type' => 'redis',
 // 连接地址
 'host' => Env::get('redis.host'),
 // 端口
 'port' => Env::get('redis.port'),],

更多配置参考

/**
 * 配置参数
 * @var array
 */protected $options = [
 'host' => '127.0.0.1',
 'port' => 6379,
 'password' => '',
 'select' => 0,
 'timeout' => 0,
 'expire' => 0,
 'persistent' => false,
 'prefix' => '',
 'tag_prefix' => 'tag:',
 'serialize' => [],];

在.env中配置连接信息

[REDIS]host = 127.0.0.1
port = 6379

3.编写代码

在appcommon下创建文件Redis.php

<?phpnamespace appcommon;use thinkfacadeConfig;use thinkcachedriver
edis as ThinkRedis;class Redis extends ThinkRedis{
 /**
 * @var int
 */
 protected $hash;

 /**
 * @var array
 */
 protected static $instance = [];

 /**
 * Redis constructor.
 * @param $db
 */
 private function __construct($db)
 {
 $options = Config::get('cache.stores.redis');
 $options['select'] = $db;
 $this->hash = $db;
 $this->options = array_merge($this->options, $options);
 parent::__construct();
 }

 private function __clone()
 {
 }

 /**
 * @param int $db
 * @return PredisClient|Redis
 */
 public static function instance($db = 0)
 {
 if (! isset(self::$instance[$db])) {
  self::$instance[$db] = new self($db);
 }

 return self::$instance[$db];
 }

 public function __destruct()
 {
 self::$instance[$this->hash]->close();
 unset(self::$instance[$this->hash]);
 }}

4.使用方式

use appcommonRedis;

$redis = Redis::instance(4);
$redis->hSet('user:1', 'userName', 'admin');

Redis::instance(1)->hSet('user', 'name', 'admin1');
Redis::instance(2)->hSet('user', 'name', 'admin2');
Redis::instance(3)->hSet('user', 'name', 'admin3');

更多使用方法请参考 redis命令手册

热心网友 时间:2022-04-06 04:22

redis操作和什么框架没太大关系,开启php的reids扩展,直接使用redis操作函数就好了
你可以去后盾人平台看看,里面的东西不错
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绩效工资从工资里扣合法吗 无人机电机轴的主要功能有哪些? 闽侯南通多久发展 南通哪个位置最有潜力 南通未来的机遇有哪些 江苏南通的发展前景怎么样 南通这座城市未来发展前景怎样 我女儿阳历08年01月08日出生,{农历07年腊月初一}请高人帮忙改个名字... 我女儿是2012年1月10日10:35分出生的五行缺什么,取什么名字好 这种图片效果怎么做出来的,不是纯白板,仔细看有一个个均匀分布的小圆点... thinkphp中的redis怎么用啊 thinkphp中使用redis tinkphp5.1手册命名规范中类的文件名均以命名空间定义怎么理解? C++命名空间,疑惑 请问xhtml中开头的命名空间是怎样理解的,为什么每次写的都是同样一个名字? C++标准命名空间 什么是.NET Framework的命名空间?命名空间为什么要分层次? c#中的命名空间用和不用有什么区别 嵌套命名空间它的含义是什么,怎么去理解?? C#中&quot;命名空间&quot;的意思和功能? As3 达人请进来,我刚学到命名空间,对概念不是很理解,我送点分数给你们,嘿嘿,先到先得 Python之禅中的namespace怎么理解 模块与命名空间 C++命名空间是什么? 学校学了一个月C语言,然后开始学c#,感觉对c#的命名空间和类表示不能理解,有通俗一点的解释吗 C++命名空间到底有什么作用?请举例说明 c#中什么叫做命名空间? 1】 命名空间里可以包容 命名空间? 2】 类一定在 命名空间里面; 3】 命名空间里面 可以 声明变量? C#里的命名空间是什么意思? 如何理解命名空间?使用命名空间有什么好处? thinkphp 怎么开启redis拓展 thinkphp redis 怎么选择数据库 thinkphp怎么使用redius Thinkphp5怎么扩展Redis数据库,实现Redis的CURD操作 ThinkPHP 框架,redis不能用,extension_loaded(&#39;redis&#39;) 返回false thinkphp redis存入session怎么调用 thinkphp 用redis 怎么选择数据库? 如何在thinkphp3.2.3里面设置redis thinkphp怎么配置redis密码 thinkphp6 index.php多应用时为什么自定义的入口无法访问多应用? 关于thinkphp开发的几种规范 Laravel 数据库id设置是自增可save新增sql出来的id为什么是字符串 laravel差入数据库主键自增怎么写 laravel怎么increment多个字段 laravel 怎么获取要修改的信息 使用laravel 的多对多的多态关联父表主键必须是叫做&#39;id&#39;吗 在Laravel框架中,比如我进行注册,判断两次密码是否一致,但是我的重复密码又不能插入到数据库中 laravel 伪静态怎么给参数命名 steam错误代码118真正解决方法 怎么把钉钉里面刷视频的小程序删除