thinkphp6 redis 哈希存储方式以及操作函数(笔记)

逻辑:如果redis里没有指定表数据就进行存储再输出,如果有就直接输出,代码优化后几万条数据从数据库入redis也是三四秒的时间,数据以json方式存储:key用于数据ID 跟数据库数据ID同步,value用于存储整个字段包括数据,这样数据多不会占用多余内存

$name参数是数据库表名,跟数据库表名是同步一样的,直接调用即可

/*** 缓存指定表全部数据* @Author Xven <270988107@qq.com>* @return [type]                  [description]*/
function redis_data($name) {$redis = Cache::store('redis');$data = [];// 尝试从 Redis 获取数据$lists = $redis->hGetAll($name . ':list');if (!empty($lists)) {// Redis 中有数据,直接解码并返回foreach ($lists as $key => $value) {$data[$key] = json_decode($value, true);}} else {// Redis 中没有数据,从数据库获取并写入 Redis$list = Db::name($name)->cursor();$encodedData = [];// 开始一个多重操作$redis->multi();foreach ($list as $item) {$encoded = json_encode($item, JSON_UNESCAPED_UNICODE);$redis->hSet($name . ':list', $item['id'], $encoded);$data[] = $item; // 直接将数据库查询结果添加到 $data 数组中}// 执行多重操作中的所有命令$redis->exec();}return $data;
}
/*** 查询指定ID单条数据* @Author Xven <270988107@qq.com>* @param  [type]                  $name [description]* @param  [type]                  $id   [description]* @return [type]                        [description]*/
function find_redis($name, $id) {$redis = Cache::store('redis');$info = $redis->hMget($name . ':list', [$id]);if (!empty($info)) {$info = json_decode($info[$id], true);return $info;} else {return '';}
}
/*** 指定ID数据重存更新* @Author Xven <270988107@qq.com>* @param  [type]                  $id   [description]* @param  [type]                  $name [description]* @return [type]                        [description]*/
function update_redis($name, $id, $field) {$redis = Cache::store('redis');$cursor = Db::name($name)->where('id', $id)->limit(1)->cursor();foreach ($cursor as $v) {if (!empty($v)) {$sela = $redis->hSet($field, $id, json_encode($v));if ($sela) {return true;} else {return false;}}}
}
/*** 指定ID数据重存更新* @Author Xven <270988107@qq.com>* @param  [type]                  $id   [description]* @param  [type]                  $name [description]* @return [type]                        [description]*/
function del_redis($field, $id) {$redis = Cache::store('redis');$info = $redis->hDel($field, $id);if ($info) {return true;} else {return false;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcgis pro 3.3.1安装教程

一、获取方式&#xff1a; http://dt4.8tupian.net/2/29913a61b1500.pg3二、软件目录&#xff1a; 三、安装步骤&#xff1a; &#xff08;1&#xff09;安装软件运行环境windowsdesktop-runtime 8.0.4; &#xff08;2&#xff09;选中安装文件arcgispro_33zh_cn_190127.exe&…

LabVIEW汽车状态监测系统

LabVIEW汽车状态监测系统通过模拟车辆运行状态&#xff0c;有效地辅助工程师进行故障预测和维护计划优化&#xff0c;从而提高汽车的可靠性和安全性。 项目背景&#xff1a; 现代汽车工业面临着日益增长的安全要求和客户对于车辆性能的高期望。汽车状态监测系统旨在实时监控汽…

GiantPandaCVARM Neon Intrinsics 学习指北:从入门、进阶到学个通透

【GiantPandaCV导语】Neon是手机普遍支持的计算加速指令集&#xff0c;是AI落地的工程利器。Neon Intrinsics 的出现&#xff0c;缓解了汇编语言难学难写的难题&#xff0c;值得工程师们开发利用。 前言 Neon是ARM平台的向量化计算指令集&#xff0c;通过一条指令完成多个数据…

python爬虫抓取豆瓣数据教程

环境准备 在开始之前&#xff0c;你需要确保你的Python环境已经安装了以下库&#xff1a; requests&#xff1a;用于发送HTTP请求。BeautifulSoup&#xff1a;用于解析HTML文档。 如果你还没有安装这些库&#xff0c;可以通过以下命令安装&#xff1a; pip install requests…

SD-WAN分布式组网:构建高效、灵活的企业网络架构

随着企业数字化转型的深入&#xff0c;分布式组网逐渐成为企业网络架构中的核心需求。无论是跨区域的分支机构互联&#xff0c;还是企业与云服务的连接&#xff0c;如何在不同区域实现高效、低延迟的网络传输&#xff0c;已成为业务成功的关键。SD-WAN&#xff08;软件定义广域…

使用Python和OpenCV实现火焰检测

使用Python和OpenCV实现火焰检测 项目解释&#xff1a; 此 Python 代码是使用 OpenCV、线程、声音和电子邮件功能的火灾探测系统的简单示例。 以下是它的功能的简单描述&#xff1a; 导入库&#xff1a;代码首先导入必要的库&#xff1a; cv2&#xff1a;用于图像和视频处理…

一篇文章入门傅里叶变换

文章目录 傅里叶变换欧拉公式傅里叶变换绕圈记录法质心记录法傅里叶变换公式第一步&#xff1a;旋转的表示第二步&#xff1a;缠绕的表示第三步&#xff1a;质心的表示最终步&#xff1a;整理积分限和系数 参考文献 傅里叶变换 在学习傅里叶变换之前&#xff0c;我们先来了解一…

基于uniapp微信小程序的校园二手书交易系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Spring 框架环境搭建

一、环境要求 JDK版本&#xff1a; JDK1.7及以上版本 Spring版本&#xff1a; Spring5.x版本 二、新建Maven项目 1. 创建 Maven 的普通 Java 项⽬ 2.设置项目坐标 3.设置项目的Maven环境 4.设置项目的名称和存放的工作空间 三、调整项目环境 1.修改JDK版本 properties&g…

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知&#xff0c;前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护&#xff0c;这里提供我的规范&#xff0c…

SpringBoot篇(运维实用篇 - 临时属性)

目录 一、临时属性设置 1. 简介 2. 属性加载优先级 那是否还有其他的配置方式呢&#xff1f; 3. 知识小结 二、开发环境中使用临时属性 1. 如何操作 2. 知识小结 3. 思考 三、配置文件分类 1. 简介 2. 4个级别 3. 为什么设计多种配置文件&#xff1f; 一个典型的应…

基于vue框架的的汇生活家居商城的设计与实现bdjlq(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;商品分类,商品信息,用户 开题报告内容 开题报告 项目名称&#xff1a;基于Vue框架的汇生活家居商城的设计与实现 一、项目背景与意义 随着互联网技术的不断发展和普及&#xff0c;电子商务已成为现代商业的重要组成部分。家居商城作…

免费可离线的AI抠图工具(鲜艺AI抠图 )免费下载

鲜艺AI抠图是一款使用Tauri 2 和RMBG-1.4 开发并免费提供的AI抠图工具&#xff0c;它能够快速去除图片背景&#xff0c;并支持本地和在线图片处理。&#xff1a; 极速AI抠图&#xff1a; 基于最新的AI技术&#xff0c;能够精准识别图像中的前景和背景&#xff0c;实现快速抠图…

面试经典 150 题.P27. 移除元素(002)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeElement(int[] nums, int…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...

登录后复制 import tensorflow as tfimport matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果tf.random.set_seed(42)# 生成正态分布的数据# mean0 和 stddev1 表示生成标准正态分布的数据# shape(1000,) 表示生成1000个数据点data tf.random.normal(mean0, stddev1…

13.音乐管理系统(基于SpringBoot + Vue)

目录 1.系统的受众说明 ​​​​​​​ 2 需求分析 2.1用例图及用例分析 2.1.1 用户用例图及用例分析 2.1.2 管理员用例图及用例分析 2.2 系统结构图和流程图 2.2.1 音乐播放器的系统流程图&#xff08;图2.2.1-1&#xff09; 2.2.2 系统功能表&#xff08;表2.2.2…

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…

[Linux] linux 软硬链接与动静态库

标题&#xff1a;[Linux] linux 软硬链接与动静态库 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; /** _oo0oo_* o8888888o* 88" . "88* (| -_- |)* …

[mysql]相关子查询

相关子查询 相关子查询的概述 我们前面把单行子查询和多行子查询就已经说完了,我们现在要把继续把相关子查询的内容给大家说明白,因为之前用的都是不相关子查询的案例, 我们来谈一谈相关子查询,记住单行子查询和多行子查询是可以进行相关子查询,只是我们刚才写的案例都是相关…

【C++】—— priority_queue :平衡效率与秩序的算法利器

去感受一棵草、一缕风、一场日落&#xff0c;去重新触摸真正的生活。 ——高盛元 目录 1、优先级队列 1.1什么是优先级队列 1.2 priority_queue 的使用 1.3 仿函数 2、priority_queue 的模拟实现 2.1整体框架接口 2.2插入&&向上调整 2.2删除&&向下调整…