
首先定义一个名为 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.
// }
}
- private static $redis:定义了一个静态私有属性 $redis,用于保存 Redis 实例。
- private static $object:定义了一个静态私有属性 $object,用于保存 Redis 类的单例对象。
- private function __construct():构造函数是私有的,这样可以防止外部直接实例化 Redis 类,而是通过 createRedisObject 方法获取单例对象。
- public static function createRedisObject():静态方法用于获取 Redis 类的单例对象,确保在整个应用中只有一个 Redis 实例。
- public function exitsKey($key):检查 Redis 中是否存在指定的键名 $key,如果存在则返回 true,否则返回 false。
- public function setDate($key,$val,$expire):向 Redis 中设置键值对,并可以指定过期时间 $expire。
- public function delDate($key):从 Redis 中删除指定的键名 $key。
- 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,
],
],
];
文章评论