PHP+Redis 实例 页面缓存
2023-09-11 14:19:38 时间
- string redis数据结构(这里我一直都找不到更好的替代品,string主要是方便我操作它的过期时间)
- expire()函数,设置键的生存时间。
- exists()函数,判断键是否存在。(判断的方法有很多种,ttl()获取它的生存时间,get()函数,判断是否有数据(不过get判断最好不用))。
按规则生成一个缓存key,传入key判断,redis是否有值,有值就返回,无值了就读取数据库.
<?php class Test { public $redis = null; public function __construct() { $this->redis = new Redis(); $this->redis->connect('127.0.0.1',6379); $this->redis->auth(''); } //这里是个例子模型,按照自己的用法去套进去就行 //以文章为例子吧 //页面级,接口级都可以用 public function getData() { //判断缓存的键是否还存在 if(!$this->redis->exists("cache:".$commentid)) { //缓存不存在 //下面的get_mysql_data()函数只是个例子,按照自己具体情况去mysql获取数据 $data = $this->get_mysql_data(); $json = json_encode($data,JSON_UNESCAPED_UNICODE); //存入redis $this->redis->set("cache:".$commentid,$json); //设置过期时间5分钟 $this->redis->expire("cache:".$commentid,60*60*5); } $json = $this->redis->get("cache:".$commentid); $data = json_decode($json,true); return $data; } }
对于上面的代码有几点提示:
- 上面只是一个例子,看你自己具体的使用去定
- 其中mysql数据获取的哪里,要看你自己mysql使用mysqli或者pdo等等方法获取的,哪里随便你替换。
- 过期时间哪里等下就说
- 看到30.31行,那里为什么重新从redis拿多一次数据呢?为什么不直接返回mysql的$data不就行了,其实是可以的,只是为了防止redis没有把数据缓存进去,而做的一步,还有一步报错,我没写,自己添加进去吧。
转:https://www.cnblogs.com/sunshine-H/p/7941382.html
相关文章
- redis实现消息队列-java代码实现
- Shiro缓存使用Redis、Ehcache、自带的MpCache实现的三种方式实例
- Redis持久化
- 50道Redis面试题及答案整理,史上最全!
- spring boot:在服务端用redis存储jwt登录后的用户信息(spring boot 2.4.4)
- ubuntu 安装redis
- Docker搭建Redis高可用集群(基于redis-sentinel)
- 聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)
- [Link]使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
- 〖Python 数据库开发实战 - Python与Redis交互篇⑤〗- 利用 redis-py 实现哈希数据类型的常用指令操作
- 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门
- Java连接远程Redis
- 014-redis应用-07-Scan命令
- Redis 漏斗限流 (redis-cell)
- redis源码之压缩列表ziplist
- Redis进阶学习10---redis最佳实践
- Redis进阶学习04---秒杀优化和消息队列
- 03-Redis客户端连接Redis服务器(redis.conf 文件配置没有生效导致redis运行报错Error: Connection reset by peer)
- 【项目实战】Redis使用场景之计数
- 【Redis】五大数据结构及其常用指令
- 【服务器安装Redis】Centos7离线安装redis
- Docker学习笔记17:docker实例之安装 Node.js、PHP、MySQL、Tomcat、Python、Redis、MongoDB、Apache
- Redis is configured to save RDB snapshots redis的 rdb持久化错误
- 【redis】跟我一起动手玩玩redis主从复制和哨兵模式
- Redis未授权访问漏洞(四)SSH key免密登录