Redis 作用及安装
type
status
date
slug
summary
tags
category
icon
password
一、Redis 的作用
Redis 是一种 基于内存的高性能键值数据库,常用作缓存,也可以作为消息队列、分布式锁、会话存储等。
1. 主要应用场景
- 缓存服务器:加快访问速度(减少数据库压力)
- 存储热点数据:例如排行榜、用户 session
- 存储需要过期的数据:如验证码、临时 token
- 消息队列 / 发布订阅
2. 关键点
- 缓存命中率:缓存使用的核心指标,命中率越高,性能越好。
- 适合缓存的数据:静态数据、访问频繁的数据、短期内可过期的数据。
3. Redis 与 NoSQL
- NoSQL:Not Only SQL(非关系型数据库)
- 常见 NoSQL 数据库:Memcached、MongoDB、Redis
二、Redis 的特性
- 内存存储:数据主要存放在内存中,速度极快。
- 键值对存储:支持多种数据结构(字符串、哈希、列表、集合、有序集合等)。
- 持久化机制:支持写入磁盘(RDB 快照、AOF 日志)。
- 多种部署模式:
- 单机模式
- 主从复制
- 哨兵模式(高可用)
- 分片集群(水平扩展)
三、Redis 安装部署(Linux 环境示例)
1. 安装依赖
- Redis官网:https://redis.io/
2. 下载 & 编译
3. 配置环境变量
4. 修改配置文件(后台运行)
5. 启动 Redis
6. 测试
7. 关闭 Redis
8. redis配置
基础配置
- bind 192.168.66.144
指定 Redis 只监听该 IP 地址上的连接。
👉 如果只想本机访问,可以写
127.0.0.1;如果要远程访问,需要写服务器的局域网或公网 IP。- protected-mode yes
- 如果只监听
127.0.0.1,保护模式不会限制访问。 - 如果绑定了外网 IP 且没有设置密码,会拒绝外部访问。
保护模式,默认开启。
- port 6379
Redis 默认端口。
- tcp-backlog 511tcp-backlog 511
- 但要注意:Linux 内核会把这个值 截断为内核参数的最大值,即:
/proc/sys/net/core/somaxconn/proc/sys/net/ipv4/tcp_max_syn_backlog- 所以如果你只改了 Redis 配置,内核参数太小,依然不会生效。
- 修改 Redis 配置:
- 修改系统参数(比如 CentOS/Ubuntu):
- 永久生效(写入 sysctl):
tcp-backlog 控制内核 listen 队列长度,默认 511。在高并发环境下,可以这样设置:
要想高并发场景不掉连接 → Redis 配置 + 内核参数 一起改。
网络 & 连接
- timeout 0
客户端空闲连接超时时间,
0 表示永不超时。- tcp-keepalive 300
每隔 300 秒检测一次客户端是否存活,用于清理死连接。
运行模式
- daemonize yes
后台运行。
- pidfile /var/run/redis_6379.pid
保存 Redis 进程的 PID 文件路径。
- loglevel notice
日志级别,可选:
debug | verbose | notice | warning。- logfile "”
- 当值为空字符串时,Redis 日志会输出到标准输出(stdout)。
- 如果你是前台运行(
daemonize no),日志会直接显示在终端里。 - 如果你是后台运行(
daemonize yes),日志会写入到syslog(取决于系统配置,一般是/var/log/messages或journalctl里)。
logfile "" 的意思是:- databases 16
默认提供 16 个逻辑数据库(编号 0–15)。
- always-show-logo no
启动时是否打印 Redis Logo。
- set-proc-title yes
是否允许 Redis 修改进程名。
- proc-title-template "{title} {listen-addr} {server-mode}"
进程名显示模板,例如:
- locale-collate ""
排序时使用的语言环境,空表示系统默认。
RDB(快照持久化)
- stop-writes-on-bgsave-error yes
如果后台保存 RDB 出错,是否禁止写入。
- rdbcompression yes
保存 RDB 时是否压缩数据。
- rdbchecksum yes
RDB 文件是否使用校验和,保证数据完整性。
- dbfilename dump.rdb
RDB 文件名。
- rdb-del-sync-files no
在 RDB 传输完成后是否删除临时文件。
- dir ./
数据文件存放目录。
主从复制
- replica-serve-stale-data yes
yes:可读旧数据。no:拒绝请求,返回错误。
从节点在与主节点断开时是否继续提供旧数据:
四、补充知识点
- RDB vs AOF
- RDB(快照):性能好,适合灾难恢复,但可能丢失最后一次快照之后的数据。
- AOF(日志):记录每个写操作,更安全,但日志体积较大,恢复速度慢。
- 常用数据结构
- String:字符串(最常用,缓存 key-value)
- Hash:哈希表(存储对象属性)
- List:列表(消息队列、任务队列)
- Set:无序集合(去重功能,如用户点赞 ID 集合)
- Sorted Set:有序集合(排行榜、积分系统)
- 内存淘汰策略(缓存满时如何处理)
noeviction:不删除,写入报错(默认)allkeys-lru:所有 key 都可淘汰,使用 LRU(最少使用)算法volatile-lru:只淘汰设置了过期时间的 key- 其他策略:LFU、TTL 优先等
五、补充
- 过期设置命令:
文档中
set url "http://www.jd.com" EX 10 是正确的写法,但需要注意:EX 表示秒级过期时间。有的人会误以为是毫秒,需要用 PX 才是毫秒。👉 总结一句话:Redis 是一个高性能的内存数据库,常用于缓存、分布式场景,掌握其数据结构和持久化策略是学习重点。
Loading...