酆叔のBlog

  • 首页
  • 分享技术
  • 八卦黑料
  • 生活日常
  • 日记
酆叔のBlog
上辈子作恶多端,这辈子早起上班。
  1. 首页
  2. IT技术
  3. 正文

ThinkPHP6单例封装Redis

2024年7月29日 609点热度 0人点赞 0条评论

首先定义一个名为 Redis 的类,用于封装对 Redis 缓存的操作。

<?php

namespace app\common\lib;

use think\facade\Cache;

class Redis
{
    private static $redis;
    private static $object;

    private function __construct()
    {
        self::$redis=Cache::store('redis')->handler();
    }

    public static function createRedisObject(){
        if (!self::$object instanceof Redis){
            self::$object=new Redis();
        }
        return self::$object;
    }

    public function exitsKey($key){
        if (!self::$redis->get($key)){
            return false;
        }
        return true;
    }

    public function setDate($key,$val,$expire){
        if (!self::$redis->set($key,$val)){
            return false;
        }
        return true;
    }
    public function delDate($key){
        if (!self::$redis->del($key)){
            return false;
        }
        return true;
    }

//    private function __clone(): void
//    {
//        // TODO: Implement __clone() method.
//    }
}
  1. private static $redis:定义了一个静态私有属性 $redis,用于保存 Redis 实例。
  2. private static $object:定义了一个静态私有属性 $object,用于保存 Redis 类的单例对象。
  3. private function __construct():构造函数是私有的,这样可以防止外部直接实例化 Redis 类,而是通过 createRedisObject 方法获取单例对象。
  4. public static function createRedisObject():静态方法用于获取 Redis 类的单例对象,确保在整个应用中只有一个 Redis 实例。
  5. public function exitsKey($key):检查 Redis 中是否存在指定的键名 $key,如果存在则返回 true,否则返回 false。
  6. public function setDate($key,$val,$expire):向 Redis 中设置键值对,并可以指定过期时间 $expire。
  7. public function delDate($key):从 Redis 中删除指定的键名 $key。
  8. private function __clone(): void:克隆函数是私有的,防止外部克隆对象,确保单例对象的唯一性。

此类的作用是封装了对 Redis 缓存的常用操作,并通过单例模式确保了在应用中只有一个 Redis 实例,以提高效率和避免资源浪费。在使用时,可以通过调用 createRedisObject 方法获取单例对象,然后调用其方法进行 Redis 操作。

任何在config目录中找到缓存配置文件cache.php,进行redis配置

<?php

// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------

return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'file'),

    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // 更多的缓存连接
        'redis'    =>    [
            'type'     => 'redis',
            'host'     => '127.0.0.1',
            'port'     => '6379',
            'password' => '',
            'select'   => '0',
            // 全局缓存有效期(0为永久有效)
            'expire'   => 0,
            // 缓存前缀
            'prefix'   => '',
            'timeout'  => 0,
        ],
    ],
];
标签: Redis 设计模式
最后更新:2024年8月12日

酆叔

上辈子作恶多端,这辈子早起上班。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
2025/05/15 周四 晴 2025/05/12 周一 晴 2025/05/08 周四 多云 2025/05/07 周三 阵雨 2025/05/06 周二 阵雨 2025/04/30 周三 多云
夕阳 GO 编码风格 安装MySql 校园霸凌 认识PHP(六)数据类型 PHP之访问修饰符
腾讯云
又拍云
订阅
订阅

COPYRIGHT © 2024 酆叔のBlog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备2023016219号