Redis相关记录
一、Redis 是什么
Redis 是一个开源的 高性能内存数据库,
主要用来做缓存,也能做消息队列、排行榜、计数器等。
可以理解成:
它既是“数据放内存的数据库”,
也是“能跨语言、跨网站共享的缓存中心”。
它最初是为了解决 Memcached 只能存字符串、功能太弱 的问题而诞生的,
现在几乎成了所有网站缓存、队列、计数的首选方案。
二、Redis 的核心特点
数据在内存中,速度极快(通常是数据库的几十倍甚至上百倍)
可选持久化:可以把内存数据定时保存到磁盘,防止断电丢失
支持多种数据结构:不仅能存 key/value,还能存 hash、list、set、zset 等
跨语言、跨进程、跨服务器共享
可搭配多种客户端(PHP、Python、Node.js、Java 等)
三、在 PHP 中的典型用法
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 设置缓存
$redis->set('site_config', json_encode($config_array));
// 获取缓存
$config = json_decode($redis->get('site_config'), true);
// 设置过期时间
$redis->setex('token_123', 3600, 'abcxyz');
// 删除缓存
$redis->del('site_config');
操作方式和文件缓存几乎一样,只是读写速度快得多。
同时还能用过期机制控制缓存失效,自动清理旧数据。
四、Redis 适合存什么
Redis 不仅能存配置或页面缓存,更多用于:
应用场景 说明
网站配置 各站点共享域名、API 地址等全局配置
登录状态 保存用户登录 token,快速验证
热门文章列表 使用 zset 维护点击排行
队列任务 后台异步处理(发送短信、生成图片等)
限流与统计 控制访问频率、防止刷接口
会话共享 多台 PHP-FPM、Nginx 共用一个 session
五、Redis 与其他缓存的比较
存储位置 内存(独立服务) 内存(独立服务) 内存(PHP进程) 硬盘
是否持久化 可选 否 否 是
是否跨进程 是 是 否 是
支持复杂结构 多类型 仅字符串 无 可自定义
安装复杂度 稍高 中 低 无需
推荐使用度 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐
简单理解:
Redis 是 “内存数据库 + 缓存中心”,
Memcached 是 “早期的内存缓存”,
APCu 是 “PHP 自己的小缓存”。
六、常见问题
Redis 挂了怎么办?
正常网站会在应用层设置“兜底机制”:
先尝试从 Redis 读取;
如果连接失败或无数据,就从文件或数据库读取;
同时记录 Redis 异常状态,避免每次都重复尝试。
这样即使 Redis 暂时不可用,网站也不会卡顿。
Redis 会吃光内存吗?
Redis 默认在内存中保存所有数据,如果空间不够会触发清理策略(LRU/LFU)。
因此生产环境通常会设置:
最大内存限制(maxmemory)
淘汰策略(volatile-lru 等)
多网站如何共用 Redis?
有两种思路:
使用不同的 数据库编号(DB index)(默认 0~15);
使用 前缀区分,如:
siteA_config
siteB_config
siteC_userlist
第二种方式更灵活,也最常见。
七、小结
Redis 是目前最通用的缓存方案,
几乎所有框架(WordPress、ThinkPHP、Laravel、Django 等)都原生支持。
如果你的网站需要跨进程共享、缓存大量数据、或有后台任务,
Redis 是优选方案;
若只是单机站点、少量配置,APCu 更轻。
编辑:千欧中软
阅读量:8
上一篇: APCu 相关记录
下一篇: 没有下一篇了
更多新闻
Copyright © 千欧中软 版权所有 www.qozr.com seo | 网站建设 [渝ICP备15005074号]
渝公网安备50011802011077 | sitemap