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使用基本套路的更多相关文章

  1. Redis(六):list/lpush/lrange/lpop 命令源码解析

    上一篇讲了hash数据类型的相关实现方法,没有茅塞顿开也至少知道redis如何搞事情的了吧. 本篇咱们继续来看redis中的数据类型的实现: list 相关操作实现. 同样,我们以使用者的角度,开始理 ...

  2. Redis实战之征服 Redis + Jedis + Spring (三)

    一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 通过spring-data-redis完 ...

  3. 征服 Redis + Jedis + Spring (三)—— 列表操作【转】

    一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 相关链接: 征服 Redis 征服 Re ...

  4. Day10 - Python协程、异步IO、redis缓存、rabbitMQ队列

    Python之路,Day9 - 异步IO\数据库\队列\缓存   本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...

  5. Redis源代码分析(二十)--- ae事件驱动

    事件驱动的术语出现更频繁.听起来非常大的,今天我把Redis内部驱动器模型来研究它,奖励的感觉啊.一个ae.c主程序,加4文件的事件类型,让你彻底弄清楚,Redis是怎样处理这些事件的. 在Redis ...

  6. Spring Boot 整合 Redis 实现缓存操作

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!   『 产品没有价值,开发团队再优秀也无济于事 – <启示录> 』   本文提纲 ...

  7. 基于Nginx+redis的Asp.net站点搭建

    剧情介绍 在传统的信息系统(比如小规模的ERP\MES系统),往往只是进行简单的应用服务器和数据库服务器的分布式部署,以此来提高应用系统的负载能力,而伴随着访问的增大,应用服务器层面除了做硬件和网络的 ...

  8. spring使用redis做缓存

    缓存 什么是缓存? 在高并发下,为了提高访问的性能,需要将数据库中 一些经常展现和不会频繁变更的数据,存放在存取速率更快的内存中.这样可以 降低数据的获取时间,带来更好的体验 减轻数据库的压力 缓存适 ...

  9. 10种软件开发中 over-engineering 的错误套路

    别把「不要过度使用 Generic」误解成「不用 Generic」,也别把「不要写一些不必要的 Wrapper」误解成「不写任何 Wrapper」.我只是在讲 over-engineering 这个事 ...

随机推荐

  1. android源码mk文件里的TARGET_OUT指向哪里?

    android源码核心变量大都在build/core/envsetup.mk中建立 在该文件中,可以找到 TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ ...

  2. 聊天程序(基于Socket、Thread)

    聊天程序简述 1.目的:主要是为了阐述Socket,以及应用多线程,本文侧重Socket相关网路编程的阐述.如果您对多线程不了解,大家可以看下我的上一篇博文浅解多线程 . 2.功能:此聊天程序功能实现 ...

  3. *Codeforces587E. Duff as a Queen

    $n \leq 200000$的序列,支持以下$q \leq 4e4$个操作:区间异或$k$:查询区间能异或出多少不同的数.数字$0 \leq a_i \leq 1e9$. 大概是要区间线性基.区间修 ...

  4. dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)

    在dos中使用set定义变量: set  a=8              (注意等号两边没有空格) 引用变量如: echo  %a%        将打印a的值 (%a%是获取变量a的值) dos中 ...

  5. MongoDB GridFS(命令行+php操作)

    一.GridFS是什么 & 为什么需要它 我们知道目前MongoDB的BSON文件最大只能是16M,也就是说单个文档最多只能存储16M的数据,那么如果需要MongoDB存储超过16M的大文件该 ...

  6. Mac OS X 下安装python的MySQLdb模块

    参考资料: mac os x下python安装MySQLdb模块   http://www.codeif.com/post/1073/ MAC OSX使用Python安装模块有关问题  http:// ...

  7. 解决maven无法下载依赖的jar包的问题

    背景: 公司内部有搭建maven私服,自己做了个核心jar包,一开始是xxx-core.1.0.0.SNAPSHOT版本,是本地和项目环境都可以正常使用的.为支持上线,发布稳定版本,xxx-core. ...

  8. spark学习(六)Java版RDD基本的基本操作

    1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName(" ...

  9. 前端模板Nunjucks简介

    参考资料: https://mozilla.github.io/nunjucks/ https://mozilla.github.io/nunjucks/templating.html https:/ ...

  10. 使用图片作为textview组件的背景

    <TextView android:layout_gravity="center" android:layout_width="100dp" androi ...