Redis使用基本套路
Redis的数据,通常都是来自于数据库。
存入Redis当中,可以快速的查询。不用每次都关联查询,然后其他处理什么的。
通常可以把一些,不经常变的数据存储其中。
避免数据变动,而Redis缓存数据不变,可以为缓存数据设置一个过期时间。
通常Redis存储的数据都是数组进行json加密,而取出的时候,进行json解密就可以了。
变量命名的时候,确保每个key都是唯一的。可以用冒号分割变量。
基础版本:
// 获取题目类型数据
vendor('Func.Red');
$red = Red::create();
$red_result = $red->get('question:type:select');
if (!$red_result) {
// 获取数据
$question_type_model = M('question_type');
$question_type_list = $question_type_model->where(['level'=>2])->order('pid asc,weight desc')->select();
$question_type_select = [];
foreach ($question_type_list as $k => $item) {
$question_type_select[$k]['id'] = $item['id'];
$question_type_select[$k]['name'] = $item['remark']."【".$item['short_name']."】";
}
// 存入Redis
$red->set('question:type:select',json_encode($question_type_select));
} else {
$question_type_select = json_decode($red_result,true);
}
$this->assign('question_type_select',$question_type_select);
定时版本:
// 获取题目类型数据
vendor('Func.Red');
$red = Red::create();
$red_result = $red->get('question:type:select');
if (!$red_result) {
// 获取数据
$question_type_model = M('question_type');
$question_type_list = $question_type_model->where(['level'=>2])->order('pid asc,weight desc')->select();
$question_type_select = [];
foreach ($question_type_list as $k => $item) {
$question_type_select[$k]['id'] = $item['id'];
$question_type_select[$k]['name'] = $item['remark']."【".$item['short_name']."】";
}
// 存入Redis
$red->setEx('question:type:select',3600*24,json_encode($question_type_select));
} else {
$question_type_select = json_decode($red_result,true);
}
$this->assign('question_type_select',$question_type_select);
一天有效。
Redis使用基本套路的更多相关文章
- Redis(六):list/lpush/lrange/lpop 命令源码解析
上一篇讲了hash数据类型的相关实现方法,没有茅塞顿开也至少知道redis如何搞事情的了吧. 本篇咱们继续来看redis中的数据类型的实现: list 相关操作实现. 同样,我们以使用者的角度,开始理 ...
- Redis实战之征服 Redis + Jedis + Spring (三)
一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 通过spring-data-redis完 ...
- 征服 Redis + Jedis + Spring (三)—— 列表操作【转】
一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 相关链接: 征服 Redis 征服 Re ...
- Day10 - Python协程、异步IO、redis缓存、rabbitMQ队列
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- Redis源代码分析(二十)--- ae事件驱动
事件驱动的术语出现更频繁.听起来非常大的,今天我把Redis内部驱动器模型来研究它,奖励的感觉啊.一个ae.c主程序,加4文件的事件类型,让你彻底弄清楚,Redis是怎样处理这些事件的. 在Redis ...
- Spring Boot 整合 Redis 实现缓存操作
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 产品没有价值,开发团队再优秀也无济于事 – <启示录> 』 本文提纲 ...
- 基于Nginx+redis的Asp.net站点搭建
剧情介绍 在传统的信息系统(比如小规模的ERP\MES系统),往往只是进行简单的应用服务器和数据库服务器的分布式部署,以此来提高应用系统的负载能力,而伴随着访问的增大,应用服务器层面除了做硬件和网络的 ...
- spring使用redis做缓存
缓存 什么是缓存? 在高并发下,为了提高访问的性能,需要将数据库中 一些经常展现和不会频繁变更的数据,存放在存取速率更快的内存中.这样可以 降低数据的获取时间,带来更好的体验 减轻数据库的压力 缓存适 ...
- 10种软件开发中 over-engineering 的错误套路
别把「不要过度使用 Generic」误解成「不用 Generic」,也别把「不要写一些不必要的 Wrapper」误解成「不写任何 Wrapper」.我只是在讲 over-engineering 这个事 ...
随机推荐
- Lucas 卢卡斯定理
Lucas: 卢卡斯定理说白了只有一条性质 $$ C^n_m \equiv C^{n/p}_{m/p} \times C^{n \bmod p}_{m \bmod p} \ (mod \ \ p) $ ...
- Linux 如何实现 VLAN
LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机.一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在 ...
- oracle查询当前用户名下所有表
select * from all_tables where owner='TEST': TEST为用户名,用户名必须是大写. 查看当前登录的用户的表: select table_name from ...
- Scrapy学习-1-入门
基础知识 爬虫发展史 爬虫去重 1. 存储到数据库中 存取速度慢 2. 存储到内存中的集合里,内存占用十分大 当爬取数据有1亿条时 1*10**8*2Byte*50str_len/1024/102 ...
- 洛谷——P2298 Mzc和男家丁的游戏
P2298 Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来 ...
- spring解决乱码
spring提供的工具类解决乱码问题 在web.xml配置中添加如下代码: <!--乱码处理--> <filter> <filter-name>encodingFi ...
- PLsql/Oracle数据库中没有scott账户,如何创建并解锁
当然首先要装好Oracle 11g 然后还要有sqlplus,这个在Oracle11g的时候应该都会配上的 进入正题,如果oracle/plsql没scott账户,如何创建 先找到Oracle安装目录 ...
- 在Oracle Linux上安装dtrace
http://www.ohsdba.cn/index.php?g=Home&m=Article&a=show&id=171 时间: 2016-10-09 00:40:04 ...
- 64-bit Itanium与x64
64-bit Itanium是什么意思 64-bit Itanium,指的是intel 安腾处理器,intel安腾处理器是Intel的某一代处理器,当然是在酷睿(即core)这一代之前出来的. ora ...
- (C++ STL)list的实现
#include <iostream> using namespace std; //採用迭代器和空间配置器所实现的双向链表的基本功能 template<class _Ty,clas ...