ThinkPHP 中使用Redis

news2024/11/15 19:36:31

环境.env

[app]
app_debug = "1"
app_trace = ""

[database]
database = ""
hostname = "127.0.0.1"
hostport = ""
password = ""
prefix = "ls_"
username = ""

[redis] 
hostname = "127.0.0.1"
hostport = "6379" 
password = "123456"
prefix = "redis_" 

[project]
env_name = ""
file_domain = "xxx.xxx.xxx.xxx" 

配置 config

<?php 

// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------
use think\facade\Env; 

return [
    // 缓存配置为复合类型
    'type'  =>  'complex', 
    'default'	=>	[
      'type'	=>	Env::get('cache.type','File'),
      // 全局缓存有效期(0为永久有效)
      'expire'=>  0, 
      // 缓存前缀
      'prefix'=>  'shop_',
       // 缓存目录
      'path'  =>  '',
    ],
    'redis'	=>	[
      'type'	=>	'redis',
      'host'	=> Env::get('redis.hostname'),
      'port'    => Env::get('redis.hostport'),
      'password' => Env::get('redis.password'),
      'expire'=>  0, 
      'prefix'=>  'redis_', // 缓存前缀
    ],    
    // 添加更多的缓存类型设置
];

Redis缓存处理类

<?php 
// +----------------------------------------------------------------------
// | Redis缓存处理类
// +----------------------------------------------------------------------
// |  
// +----------------------------------------------------------------------
// | author: 007
// +----------------------------------------------------------------------
namespace app\common\logic;
 
use think\facade\Env;
use think\facade\Cache;

class RedisLogic
{  
    private $rc = null; //连接实例 
    
    protected $module = ''; // 模块标识

    public function __construct($module = '')
    {
        $this->rc = Cache::store('redis'); 
        $this->module = $module;
    }

    
    public function getkeys($key)
    {  
        return $this->rc->keys($key); 
    }

    public function setCache($key, $val)
    { 
        if($this->module) $key = $this->module.":".$key;
        return $this->rc->set($key, $val); 
    }

    public function getCache($key)
    { 
        if($this->module) $key = $this->module.":".$key;
        return $this->rc->get($key); 
    }  

    public function delete($key)
    { 
        if($this->module) $key = $this->module.":".$key;
        $prefix = Env::get('redis.prefix','');
        $key = $prefix.$key;
        return $this->rc->del($key);  
    }

    /**
     * 删除指定key的缓存
    *
    * 若 `$key===true` 则表示删除全部
    *
    *      // 支持下面的方式
    *      $this->delete('abc');
    *      $this->delete('abc', 'abc2');
    *      $this->delete(['abc', 'abc2']);
    *
    *      // 删除全部
    *      $this->delete(true);
    *      // 也可使用
    *      $this->delete_all();
    *
    * @param string|array|true $key
    */
    public function delCache($key)
    {   
        // $this->_connect(); 
        if (true === $key) {
            return $this->rc->flushAll();
        } else {
            if (is_array($key)) {
                $keys = $key;
            } else {
                $keys = func_get_args();
            }
            return $this->rc->del($keys);
        }
    } 
    
 
    public function hGetAllCache($key)
    { 
        if($this->module) $hash= $this->module.":".$key; 
        return $this->rc->hGetAll($hash); 
    } 
 

    // 判断hash表中字段是否存在,存在返回true,失败返回false
    public function hExistsCache($key, $field)
    {
        if($this->module) $hash= $this->module.":".$key;   
        return $this->rc->hExists($hash, $field); 
    } 

    public function hSetCache($key, $field, $val)
    {
        if($this->module) $hash= $this->module.":".$key;    
        return $this->rc->hSet($hash, $field, $val); 
    } 


    public function hGetCache($key, $field)
    {
        if($this->module) $hash= $this->module.":".$key;     
        return $this->rc->hGet($hash, $field); 
    } 

    public function hMgetCache($key, $fields)
    {
        // $fields = ['name', 'age']
        if($this->module) $hash= $this->module.":".$key;    
        return $this->rc->hMget($hash, $fields); 
    }

    public function hMsetCache($key, $entry)
    {
        // $entry = ['name' => 'jet', 'age' => 18]
        if($this->module) $hash= $this->module.":".$key;   
        return $this->rc->hMset($hash, $entry); 
    }
    
    
    public function hIncrByCache($key, $field, $add)
    { 
        if($this->module) $hash= $this->module.":".$key;   
        return $this->rc->hIncrBy($hash, $field, $add); 
    }

    public function hIncrByFloatCache($key, $field, $add)
    { 
        if($this->module) $hash= $this->module.":".$key;   
        return $this->rc->hIncrByFloat($hash, $field, $add); 
    }

}
?>

控制器中使用

<?php 


namespace app\data\controller; 
 
use app\common\logic\RedisLogic;   

class Test extends Base 
{ 
    public function redis()
    { 
		if(class_exists('Redis')){ 
		    echo '<br>服务器支持Redis服务<br>';  
		    $redis = new RedisLogic();     
		    $redis->setCache('key',12365478); 
		    echo '<br>key:',$redis->getCache('key'); 
		    echo $redis->delete('key');   
		}
		else{
		    echo '服务器不支持Redis服务';
		}
    }
    
}


 

使用redis的场景和对应示例代码icon-default.png?t=N7T8https://www.cnblogs.com/liuxinyustu/articles/13504257.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1439640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】通过socket看系统调用过程

一、通过socket看系统调用过程 在Linux操作系统中&#xff0c;系统调用是用户空间与内核空间之间交互的一种方式。当一个应用程序需要执行操作系统级别的任务时&#xff0c;比如创建一个网络套接字&#xff08;socket&#xff09;&#xff0c;它必须通过系统调用请求内核来执行…

SQL在云计算中的新角色:重新定义数据分析

文章目录 1. 云计算与数据分析的融合2. SQL在云计算中的新角色3. 分布式SQL查询引擎4. SQL-on-Hadoop解决方案5. SQL与其他数据分析工具的集成6. 实时数据分析与SQL7. SQL在云数据仓库中的角色8. 安全性与隐私保护9. SQL的未来展望《SQL数据分析实战&#xff08;第2版&#xff…

Snipaste使用

今天推荐一款好用的截图、贴图软件工具&#xff0c;名字叫Snipaste&#xff0c;以下是官方介绍的截图 软件官方下载地址&#xff1a; Snipaste 下载 1、截图功能 2、标注 3、开发中的使用 有时候在开发中需要临时把一些任务规则信息&#xff0c;放在代码编辑器旁边进行参考&am…

蓝桥杯每日一解

可以看看a的ascii码为6532 而A为ascii码为65&#xff0c;大小写相差32位 #include <iostream>using namespace std; int main(){int n;cin >> n;char a;for (int i 1;i<n;i){while(scanf("%c",&a) ! EOF){//无限输入直到输入到空格if(a a || a …

【多模态大模型】GLIP:零样本学习 + 目标检测 + 视觉语言大模型

GLIP 核心思想GLIP 对比 BLIP、BLIP-2、CLIP 主要问题: 如何构建一个能够在不同任务和领域中以零样本或少样本方式无缝迁移的预训练模型&#xff1f;统一的短语定位损失语言意识的深度融合预训练数据类型的结合语义丰富数据的扩展零样本和少样本迁移学习 效果 论文&#xff1a;…

OpenShift AI - 运行欺诈检测模型和流程

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.50 的环境中验证 文章目录 准备运行环境安装 OpenShift AI 环境安装 Minio 对象存储软件创建 Data Science Project创建 Data connection创建 Workbench配置 Model server创建 …

python调用golang中函数方法

一、原因说明&#xff1a;由于simhash方法有多种实现方式&#xff0c;现python中simhash方法与golang中的不一样&#xff0c;需要两者代码生成结果保持一致&#xff0c;故采用python中的代码调用golang编译的so文件来实现。 环境配置&#xff1a;①Windows10系统要有gcc环境&a…

【Git版本控制 03】远程操作

目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统&#xff0c;同⼀个Git仓库&#xff0c;可以分布到不同的机器上。怎么分布呢&#xff1f; 找⼀台电脑充当服务器的⻆⾊&#xff…

幻方(Magic Square)

幻方&#xff08;Magic Square&#xff09; 幻方概述 什么是幻方呢&#xff1f;幻方&#xff08;Magic Square&#xff09;就是指在nn&#xff08;n行n列&#xff09;的方格里填上一些连续的数字&#xff0c;使任意一行、任意一列和对角线上的数字的和都相等。例如有33的3行3…

【操作系统】MacOS虚拟内存统计指标

目录 命令及其结果 参数解读 有趣的实验 在 macOS 系统中&#xff0c;虚拟内存统计指标提供了对系统内存使用情况和虚拟内存操作的重要洞察。通过分析这些指标&#xff0c;我们可以更好地了解系统的性能状况和内存管理情况。 命令及其结果 >>> vm_stat Mach Virtu…

电力负荷预测 | 基于TCN的电力负荷预测(Python)———数据预处理

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 基于TCN的电力负荷预测(Python) python3.8 keras2.6.0 matplotlib3.5.2 numpy1.19.4 pandas1.4.3 tensorflow==2.6.0

电赛相关——自制模块1

目录 一、双电源供电 原理图 PCB 仿真图 制板文件 二、单电源供电 原理图 PCB 仿真图 制板文件 该模块使用一个双运放&#xff0c;实现对输入信号改变幅度&#xff08;放大或衰减&#xff0c;可调节&#xff0c;索性叫它变幅器吧&#xff09;以及隔离缓存&#xff08…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊&#xff01; 转融通是一种证券借贷机制&#xff0c;它允许机构投资者在融资融券交易中借入或借出证券。 具体来说&#xff0c;机构投资者可以向券商借入证券&#xff0c;或者将持有的证券借给券商&#xff0c;以扩大…

Golang 基础 Go Modules包管理

Golang 基础 Go Modules包管理 在 Go 项目开发中&#xff0c;依赖包管理是一个非常重要的内容&#xff0c;依赖包处理不好&#xff0c;就会导致编译失败&#xff0c;本文将系统介绍下 Go 的依赖包管理工具。 我会首先介绍下 Go 依赖包管理工具的历史&#xff0c;并详细介绍下…

EMQX Enterprise 5.3 发布:审计日志、Dashboard 访问权限控制与 SSO 一站登录

EMQX Enterprise 5.3.0 版本已正式发布&#xff01; 新版本带来多个企业特性的更新&#xff0c;包括审计日志&#xff0c;Dashboard RBAC 权限控制&#xff0c;以及基于 SSO&#xff08;单点登录&#xff09;的一站式登录&#xff0c;提升了企业级部署的安全性、管理性和治理能…

docker proxy 【docker 代理】

第一种 创建代理配置文件 mkdir -p /etc/systemd/system/docker.service.d/ cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf Environment"HTTP_PROXYhttp://192.168.21.101:7890" Environment"HTTPS_PROXYhttp://192.168.21.1…

IP定位技术助力打击网络欺诈

随着网络技术的飞速发展&#xff0c;网络欺诈行为也呈现出愈发猖獗的态势。然而&#xff0c;在这个数字化世界中&#xff0c;IP定位技术正逐渐崭露头角&#xff0c;成为打击网络欺诈的一大利器。本文将从多个方面探讨如何利用IP定位技术解决网络欺诈问题。 IP地址定位技术的基本…

寒假作业-day5

1>现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用直接插入排序实现升序排序 函数4:请使用插入排序实现升序排序 代码&#xff1a; #include<stdio.h&g…

MPLS VPN功能组件

VPN实例 VPN实例即为VPN路由转发表VRF&#xff0c;不同VPN之间的路由隔离通过VPN实例实现&#xff0c;PE上存在多个路由转发表&#xff0c;包括一个公网路由转发表&#xff0c;以及一个或多个VPN路由转发表。 PE为每个直接相连的Site建立并维护专门的VPN实例&#xff0c;VPN实…

C#中实现串口通讯和网口通讯(使用SerialPort和Socket类)

仅作自己学习使用 1 准备部份 串口通讯需要两个调试软件commix和Virtual Serial Port Driver&#xff0c;分别用于监视串口和创造虚拟串口。网口通讯需要一个网口调试助手&#xff0c;网络上有很多资源&#xff0c;我在这里采用的是微软商店中的TCP/UDP网络调试助手&#xff0…