Redis 实现页面缓存、购物车、登录 token示例、点赞 / 阅读计数,排行榜 示例

案例 1:Redis 实现页面缓存(加速网站)

复制代码
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 缓存KEY
$key = "page:home:info";

// 先看缓存有没有
$cache = $redis->get($key);

if ($cache) {
    // 有缓存,直接输出(超快)
    echo "来自缓存:";
    echo $cache;
} else {
    // 没有缓存,从数据库查
    $data = "这里是从 MySQL 查询的首页数据(300万条表查询)";

    // 存入 Redis,缓存 10 秒
    $redis->setex($key, 10, $data);

    echo "来自数据库:";
    echo $data;
}

作用:大幅降低 MySQL 压力,页面秒开。

案例 2:Redis 实现登录 Token(最常用)

复制代码
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 1. 用户登录成功,生成 token
$userId = 1001;
$token = md5(uniqid());

// 2. 存入 Redis,2小时过期
$redis->setex("token:$token", 7200, $userId);

// 3. 前端请求时,验证 token
$userToken = $_GET['token'];
$uid = $redis->get("token:$userToken");

if ($uid) {
    echo "已登录,用户ID:" . $uid;
} else {
    echo "请重新登录";
}

作用:替代 Session,支持分布式、多端登录。

案例 3:Redis 实现简易购物车

复制代码
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 用户ID
$userId = 1001;
$key = "cart:$userId";

// 加入购物车
$redis->hSet($key, "product:1001", 2); // 商品1001,买2个
$redis->hSet($key, "product:1002", 1);

// 查看购物车
$cart = $redis->hGetAll($key);
echo "你的购物车:<br>";
print_r($cart);

// 删除商品
$redis->hDel($key, "product:1001");

作用:速度极快,比数据库存购物车快 100 倍。

  • 页面缓存 → 快
  • 登录 Token → 安全、支持分布式
  • 购物车 → 高性能
  • 高频计数 → 不卡 MySQL

案例 4:Redis 实现:文章阅读量 + 点赞功能(防重复、超高并发)

复制代码
<?php
// 连接 Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 文章ID
$articleId = 1001;
// 用户ID
$userId = 10086;


// ==========================
// 1. 文章阅读量 +1(超高并发不卡顿)
// ==========================
$redis->incr("article:view:$articleId");


// ==========================
// 2. 点赞(防重复点赞,最关键!)
// ==========================
$likeKey = "article:like:$articleId";

// 判断用户是否已经点过赞
if (!$redis->sIsMember($likeKey, $userId)) {
    // 没点过 → 加入集合
    $redis->sAdd($likeKey, $userId);
    // 点赞数 +1
    $redis->incr("article:like:count:$articleId");
    echo "点赞成功!";
} else {
    echo "你已经点过赞了~";
}


// ==========================
// 3. 获取结果(前端显示)
// ==========================
$viewCount = $redis->get("article:view:$articleId"); // 阅读量
$likeCount = $redis->scard($likeKey); // 点赞数

echo "<br>阅读量:" . $viewCount;
echo "<br>点赞数:" . $likeCount;
?>

超简单说明(一看就懂)

  1. incr 计数 +1,比 MySQL 快 100 倍,高并发不卡死。

  2. 集合 set 用来存谁点过赞,天然防重复

  3. sIsMember 判断用户是否已经点赞。

  4. scard 获取点赞人数。

案例5、Redis 排行榜(热门文章 / 积分排名)

Redis 实现排行榜(有序集合 sorted set)

功能

  • 文章积分排名

  • 用户积分排名

  • 热门榜单

  • 支持:增加分数、获取排名、取前 10 名

    connect('127.0.0.1', 6379); // 排行榜 KEY $key = "ranking:article"; // ========================== // 1. 给文章增加积分(阅读/点赞/评论都能加) // ========================== // 文章1001 + 5分 $redis->zIncrBy($key, 5, "1001"); // 文章1002 + 3分 $redis->zIncrBy($key, 3, "1002"); // 文章1003 + 10分 $redis->zIncrBy($key, 10, "1003"); // ========================== // 2. 获取排行榜前 3 名(从大到小) // ========================== $topList = $redis->zRevRange($key, 0, 2, true); echo "排行榜前三名:
    "; print_r($topList); // ========================== // 3. 获取某个文章的 排名 + 分数 // ========================== $articleId = "1003"; $score = $redis->zScore($key, $articleId); // 分数 $rank = $redis->zRevRank($key, $articleId); // 排名(从0开始,+1就是第1名) echo "

    文章 $articleId 分数:$score"; echo "
    排名:" . ($rank + 1); ?>

必记 4 个函数(超简单)

  1. zIncrBy → 给某个成员加分
  2. zRevRange → 取从高到低的排行榜
  3. zScore → 获取分数
  4. zRevRank → 获取排名

为什么 Redis 做排行榜最快?

  • MySQL 排名要 order by百万数据巨慢
  • Redis 有序集合 天然排序
  • 高并发、百万数据毫秒级出排名

你已经学会 Redis 5 大最牛功能

  1. 页面缓存
  2. 登录 Token
  3. 购物车
  4. 点赞 / 阅读计数
  5. 排行榜
相关推荐
二宝哥3 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
时空无限8 小时前
vllm 缓存对模型启动时间的影响
缓存·vllm
ShiXZ2139 小时前
Redis docker-compose 部署指南
redis·docker·eureka
青山木12 小时前
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
java·数据库·redis·后端·缓存
YDS82913 小时前
大营销平台 —— 活动SKU库存扣减业务及其一致性处理
java·spring boot·redis·rabbitmq·ddd
咏方舟【长江支流】14 小时前
【开源】跨语言·跨平台·跨数据库(6) ——一种ORM缓存的接口实现和容错处理
数据库·缓存·开源·咏方舟-长江支流·用宝框架
爬也要爬着前进1 天前
redis主从搭建
数据库·redis·缓存
用户095367515831 天前
在系统的学习 redis 前的疑惑
redis·go
吴声子夜歌1 天前
Redis 3.x——集群故障转移
java·数据库·redis·集群
明豆1 天前
Redis 分布式缓存生产实战
redis·分布式·缓存