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