php

Redis相关记录

一、Redis 是什么

Redis 是一个开源的 高性能内存数据库,

主要用来做缓存,也能做消息队列、排行榜、计数器等。

可以理解成:

它既是“数据放内存的数据库”,

也是“能跨语言、跨网站共享的缓存中心”。

它最初是为了解决 Memcached 只能存字符串、功能太弱 的问题而诞生的,

现在几乎成了所有网站缓存、队列、计数的首选方案。


二、Redis 的核心特点

数据在内存中,速度极快(通常是数据库的几十倍甚至上百倍)

可选持久化:可以把内存数据定时保存到磁盘,防止断电丢失

支持多种数据结构:不仅能存 key/value,还能存 hash、list、set、zset 等

跨语言、跨进程、跨服务器共享

可搭配多种客户端(PHPPython、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 与其他缓存的比较

特性 Redis Memcached APCu 文件缓存

存储位置 内存(独立服务) 内存(独立服务) 内存(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

url链接:https://www.qozr.com/cms_redis-xiang-guan-ji-lu.html

Tag标签: php , Redis

上一篇: APCu 相关记录

下一篇: 没有下一篇了

更多新闻

Copyright © 千欧中软 版权所有 www.qozr.com seo | 网站建设 [渝ICP备15005074号] 渝公网安备50011802011077 | sitemap