ThinkPHP 中使用Redis

环境.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.mfbz.cn/a/376351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈交换原理(3)——交换网络

一、基本概念 交换网络是由若干个交换单元按照一定的拓扑结构和控制方式构成的网络。交换网络的三个基本要素是&#xff1a;交换单元、不同交换单元间的拓扑连接和控制方式。 1.1 单机交换网络与多级交换网络 交换网络按拓扑连接方式可分为&#xff1a;单级交换网络和多级交换网…

第三篇:跨平台QT开发-正则表达式和文件处理

正则表达式 正则表达式即一个文本匹配字符串的一种模式&#xff0c;Qt 中 QRegExp 类实现使用正则表达式 进行模式匹配&#xff0c;且完全支持 Unicode&#xff0c;主要应用&#xff1a;字符串验证、搜索、查找替换、分割。 正则表达式中字符及字符集 元素含义 c 匹配字符本…

mac电脑快捷指令实现拼图

mac访达&#xff0c;搜索输入‘快捷指令’&#xff0c;找到‘快捷指令’&#xff0c; 点击快捷指令&#xff0c;进入快捷指令中心&#xff0c;搜索‘拼图’ &#xff0c;选中‘照片拼图’&#xff0c; 点击‘添加快捷指令’&#xff0c; 在‘所有快捷键指令’中可以看到添加的快…

C++ || 模板初阶 | 函数模板 | 类模板

泛型编程 泛型编程&#xff0c;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 可以理解为活字印刷术类似的方式。 函数模板 函数模板概念 函数模板&#xff0c;代表一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用…

Python调用matlab程序

matlab官网&#xff1a;https://ww2.mathworks.cn/?s_tidgn_logo matlab外部语言和库接口&#xff0c;包括 Python、Java、C、C、.NET 和 Web 服务。 matlab和python的版本 安装依赖配置 安装matlab的engine 找到matlab的安装目录&#xff1a;“xxx\ extern\engines\python…

Linux的进程信号

注意&#xff1a;首先需要提醒一个事情&#xff0c;本节提及的进程信号和下节的信号量没有任何关系&#xff0c;请您区分对待。 1.信号概念 1.1.生活中的信号 我们在生活中通过体验现实&#xff0c;记忆了一些信号和对应的处理动作&#xff0c;这意味着信号有以下相关的特点&…

重生奇迹mu仙踪林npc

工匠尤达 NPC工匠尤达位于仙踪林的坐标为(87, 134)&#xff0c;他可以给玩家制作装备和强化装备。 精灵安吉拉 NPC精灵安吉拉位于仙踪林的坐标为(29, 196)&#xff0c;她可以给玩家提供补血、补魔服务&#xff0c;同时也能提供提高属性点数的服务。 仓库使者塞维特 NPC仓库…

SpringCloud-创建多模块项目

在微服务架构中&#xff0c;项目的组织结构对于代码的维护和团队的协作至关重要。Spring Cloud作为一个强大的微服务框架&#xff0c;提供了丰富的功能和组件&#xff0c;同时也支持多模块项目的创建&#xff0c;使得代码结构更加清晰、易于管理。本文将介绍如何使用 Spring Cl…

NModbus的NuGet包使用样例

首先仿真软件ModbusSlave简单配置3条数据&#xff1a; 连接配置&#xff1a; VS中安装NuGet包&#xff1a;NModbus4 简单获取湿度 SerialPort serialPort new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);serialPort.Open();Modbus.Device.ModbusSer…

端口扫描神器:御剑 保姆级教程(附链接)

一、介绍 御剑&#xff08;YooScan&#xff09;是一款网络安全工具&#xff0c;主要用于进行端口扫描。它具有直观的用户界面&#xff0c;方便用户进行端口扫描和信息收集。以下是御剑端口扫描工具的一些主要特点和功能&#xff1a; 图形用户界面&#xff1a; 御剑提供直观的图…

第 123 场 LeetCode 双周赛题解

A 三角形类型 II 三条边能构成三角形的充要条件是任意一边都小于其余两边之和&#xff0c;枚举各边判断能否构成三角形&#xff0c;若能再判断是否存在边想等 class Solution { public:string triangleType(vector<int> &nums) {int s accumulate(nums.begin(), num…

工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/ 概述 工厂方法模式(Factory Method Pattern)是一个对象创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 – 《设计模式:可复…

灵活应对:策略模式在软件设计中的应用

策略模式是一种行为型设计模式&#xff0c;它允许定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户端&#xff0c;使得在不修改原有代码的情况下切换或扩展新的算法成为可能。 使用策略模式的场景包…

《合成孔径雷达成像算法与实现》Figure6.9

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

java 基础 (1)简介-程序基础-流程控制-数组操作

学习教程 java入门 JavaEE JavaSe JavaMe 简单来说&#xff0c;Java SE就是标准版&#xff0c;包含标准的JVM和标准库&#xff0c;而Java EE是企业版&#xff0c;它只是在Java SE的基础上加上了大量的API和库&#xff0c;以便方便开发Web应用、数据库、消息服务等&#xff0c;…

运维必会篇-主从复制

主从复制 概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这 些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制&#xf…

进程间通信(3):共享内存

多个进程共享同一片内存空间&#xff0c;不需要进行数据的拷贝&#xff0c;效率最高&#xff1b;但存在资源竞争问题。 函数&#xff1a;shmget(搭配ftok)、shmat、shmdt、shmctl 实现流程&#xff1a; 1、创建共享内存IPC对象 shmget(ftok) 2、内存映射 shmat 3、通信 sca…

JVM Java虚拟机入门指南

文章目录 为什么学习JVMJVM的执行流程JVM的组成部分类加载运行时数据区本地方法接口执行引擎 垃圾回收什么样的对象是垃圾呢内存溢出和内存泄漏定位垃圾的方法对象的finalization机制垃圾回收算法分代回收垃圾回收器 JVM调优参数JVM调优工具Java内存泄漏排查思路CPU飙高排查方案…

Vue3快速上手(二)VSCode官方推荐插件安装及配置

一、VSCode官方插件安装&#xff0c;如下图2款插件 在用vite创建的程序里&#xff0c;提示提安装推荐的插件了&#xff0c;如下图&#xff1a; 二、配置 在设置-扩展里找到Volar插件&#xff0c;将Dot Value勾选上。这样在ref()修改变量时&#xff0c;会自动填充.value,无需…

Windows权限维持

注册表类&#xff1a; 普通注册表后门 在一般用户权限下&#xff0c;通常是将要执行的后门程序或脚本路径填写到如下注册表的键值中HKCU\Software\Microsoft\Windows\CurrentVersion\Run&#xff0c;键名任意。普通权限即可运行 cmd下操作&#xff1a; reg add "HKEY_…
最新文章