当前位置: 首页 > news >正文

Redis全面指南:从入门到精通

一、Redis 简介

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,支持多种数据结构,常用于缓存、消息队列、实时分析等场景。

1.1 核心特性

  • 高性能:数据存储在内存中,读写速度极快(每秒数十万次操作)。
  • 数据结构丰富:支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。
  • 持久化:提供 RDB(快照)和 AOF(日志追加)两种持久化机制,确保数据安全。
  • 高可用与分布式:通过 Redis Sentinel 实现故障转移,Redis Cluster 支持水平扩展。
  • 多功能:支持事务、发布/订阅、Lua 脚本、过期键等特性。

1.2 典型应用场景

  • 缓存:加速数据库查询,减轻后端负载。
  • 会话存储:存储用户会话信息,支持分布式系统。
  • 排行榜/计数器:利用有序集合实现实时排名。
  • 消息队列:通过列表或 Stream 类型实现异步任务处理。

1.3 基本命令示例

# 字符串操作
SET key value
GET key# 哈希操作
HSET user:1 name "Alice"
HGET user:1 name# 列表操作
LPUSH tasks "task1"
RPOP tasks

1.4 与其他数据库对比

  • 内存存储:与 MySQL 等磁盘数据库相比,Redis 牺牲持久性换取更高性能。
  • 数据结构灵活性:相比 Memcached(仅支持字符串),Redis 提供更丰富的数据类型。

Redis 适用于需要低延迟和高并发的场景,但需注意内存成本及持久化配置的权衡。

二、redis安装配置

2.1 安装redis

yum - install redis

2.2 启动 Redis 服务

安装完成后,启动 Redis 服务并设置开机自启:

systemctl start redis
systemctl enable redis

2.3 配置 Redis

编辑 Redis 配置文件以进行基本设置:

vi /etc/redis.conf

修改以下关键配置项:

bind 0.0.0.0  # 允许远程访问(如需限制本地访问,设置为 127.0.0.1)
protected-mode no  # 关闭保护模式(仅在测试环境使用)
requirepass yourpassword  # 设置访问密码(替换 yourpassword)

daemonize更改为yes以便让程序在后台作为守护进程运行

保存并退出后,重启 Redis 服务以应用配置:

systemctl restart redis

2.4 测试 Redis 连接

进入控制台:

使用 Redis 命令行工具测试连接:

redis-cli

输入以下命令验证密码和连接:

auth yourpassword
ping
127.0.0.1:6379> ping   #测试是否连接成功
PONG                   ##代表连接成功
127.0.0.1:6379> 

2.5 防火墙配置(可选)

如需允许外部访问 Redis 默认端口(6379),运行以下命令:

firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

2.6 redis-benchmark压力测试

/usr/bin/redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 50000

三、redis.conf 配置文件结构

Redis 的配置文件 redis.conf 采用键值对格式,包含多个核心模块,每个模块以注释 # 分隔。主要模块包括网络配置、通用配置、持久化、复制、安全等。

3.1 网络配置

bind
指定 Redis 监听的网络接口。默认绑定本地回环地址(127.0.0.1),若需远程访问需修改为服务器 IP 或 0.0.0.0(所有接口)。
示例:

bind 192.168.1.100 127.0.0.1

port
设置 Redis 服务端口,默认为 6379

port 6379

protected-mode
保护模式,默认开启(yes)。若未设置密码且绑定非本地地址,需关闭(no)以允许外部连接。

protected-mode no

3.2 通用配置

daemonize
是否以守护进程运行,默认 no。生产环境建议改为 yes

daemonize yes

pidfile
指定 Redis 进程 ID 文件路径。

pidfile /var/run/redis_6379.pid

loglevel
日志级别,可选 debugverbosenotice(默认)、warning

loglevel notice

logfile
日志文件路径,默认为空(输出到标准输出)。

logfile /var/log/redis_6379.log

databases
设置数据库数量,默认 16(编号 0-15)。

databases 16

3.3 持久化配置

RDB 快照
通过 save 指令触发快照生成,格式为 save <seconds> <changes>

save 900 1      # 900秒内至少1次修改触发快照
save 300 10     # 300秒内至少10次修改
save 60 10000   # 60秒内至少10000次修改

dir
持久化文件(RDB/AOF)存储目录,默认当前目录。

dir /var/lib/redis

AOF 持久化
通过 appendonly 开启 AOF 模式(默认关闭)。

appendonly yes
appendfilename "appendonly.aof"  # AOF文件名
appendfsync everysec             # 同步频率:everysec/always/no

3.4 安全配置

requirepass
设置客户端连接密码。

requirepass yourpassword

rename-command
重命名高危命令以增强安全性。

rename-command FLUSHDB "GUARDED_FLUSHDB"
rename-command CONFIG ""  # 禁用命令

3.5 性能优化

maxmemory
设置最大内存限制(如 4GB),超出时根据 maxmemory-policy 处理。

maxmemory 4gb
maxmemory-policy volatile-lru  # 淘汰策略:LRU/TTL等

tcp-backlog
TCP 连接队列长度,建议调高(如 511)。

tcp-backlog 511

3.6 集群配置

cluster-enabled
启用集群模式(默认关闭)。

cluster-enabled yes

cluster-config-file
集群节点配置文件路径。

cluster-config-file nodes-6379.conf

3.7 注意事项

  1. 修改配置后需重启 Redis 或通过 CONFIG REWRITE 动态重载。
  2. 生产环境建议关闭透明大页(echo never > /sys/kernel/mm/transparent_hugepage/enabled)。
  3. 监控 used_memoryevicted_keys 指标以优化内存策略。

3.8 Redis工具

./redis-benchmark	#用于进行redis性能测试工具
./redis-check-dump	#用于修复备份数据文件
./redis-cli	#redis的客户端
./redis-server	#redis服务端
./redis-check-aof	#修复出问题的AOF文件
./redis-sentinel	#用于集群管理
#引入其他文件
include /path/to/other.conf
#加载一些so文件
loadmodule /path/to/other_module.so
#网络配置,绑定自己的ip
bind 127.0.0.1
#是否受保护,默认打开
protected-mode yes
#设置端口号
port 6379
#tcp连接
tcp-backlog 511
timeout 0
tcp-keepalive 300
#是否守护进程开启,默认是no
daemonize yes
#管理守护进程
supervised no
#配置pid,如果以后台形式运行就需要指定pid
pidfile /var/run/redis_6379.pid
#设置日志级别
loglevel notice
#日志生成的文件位置名
logfile ""
#默认数据库数量
databases 16
#是否显示logo
always-show-logo yes
#快照,在指定时间内执行了多少次操作,会写入持久化文件.rdb
save 900 1
save 300 10
save 60 10000
#持久化出错后是否继续工作
stop-writes-on-bgsave-error yes
#是否压缩rdb文件
rdbcompression yes
#是否校验,如果出错自动修复
rdbchecksum yes
#
dbfilename dump.rdb
#rdb保存目录
dir ./
#主从复制
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
#设置密码
requirepass foobared
#客户的限制
maxclients 10000
#内存设置
maxmemory <bytes>
#是否开启aof
appendonly no
#持久化名
appendfilename "appendonly.aof"
#每秒执行一次
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes

四、Redis基础操作

4.1 连接Redis

使用redis-cli命令连接到本地Redis服务器:

redis-cli

如需连接远程服务器或指定端口:

redis-cli -h hostname -p port -a password
4.2 键值操作

设置键值对:

SET key value

获取键值:

GET key

删除键:

DEL key

检查键是否存在:

EXISTS key
4.3 数据类型操作

字符串(String)
追加字符串:

APPEND key value

获取字符串长度:

STRLEN key

哈希(Hash)
设置哈希字段:

HSET key field value

获取哈希字段:

HGET key field

获取所有字段:

HGETALL key

列表(List)
左推入列表:

LPUSH key value

右推入列表:

RPUSH key value

获取列表范围:

LRANGE key start stop

集合(Set)
添加元素:

SADD key member

获取所有元素:

SMEMBERS key

检查成员是否存在:

SISMEMBER key member

有序集合(Sorted Set)
添加带分数成员:

ZADD key score member

获取范围:

ZRANGE key start stop
4.4 服务器管理

查看所有键:

KEYS *

清空当前数据库:

FLUSHDB

清空所有数据库:

FLUSHALL

查看服务器信息:

INFO
4.5 过期时间

设置键的过期时间(秒):

EXPIRE key seconds

查看剩余时间:

TTL key
4.6 发布订阅

发布消息到频道:

PUBLISH channel message

订阅频道:

SUBSCRIBE channel
4.7 事务

开启事务:

MULTI

执行事务:

EXEC
4.8 Redis持久化机制

Redis提供两种主要的持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。这两种方式可以单独使用,也可以结合使用以确保数据安全。

4.8.1RDB持久化

RDB是Redis默认的持久化方式,通过生成数据快照实现:

  • 在指定时间间隔内,将内存中的数据集快照写入磁盘。
  • 生成的RDB文件是一个紧凑的二进制文件,适合备份和灾难恢复。
  • 可以通过SAVEBGSAVE命令手动触发,SAVE会阻塞服务器,BGSAVE在后台异步执行。

配置文件示例:

save 900 1      # 900秒内至少1个key被修改则触发
save 300 10     # 300秒内至少10个key被修改则触发
dbfilename dump.rdb  # RDB文件名
dir ./         # 存储路径
4.8.2 AOF持久化

AOF记录所有写操作命令,以文本形式追加到文件中:

  • 提供更好的持久性,支持每秒同步、每次操作同步或不同步。
  • AOF文件会不断增长,Redis提供BGREWRITEAOF命令重写AOF文件以减小体积。
  • AOF文件易于理解和解析,适合误操作后的数据恢复。

配置文件示例:

appendonly yes           # 启用AOF
appendfilename "appendonly.aof"
appendfsync everysec     # 每秒同步
auto-aof-rewrite-percentage 100  # 文件增长100%时触发重写
auto-aof-rewrite-min-size 64mb   # 最小重写大小
4.8.3 混合持久化

Redis 4.0+支持RDB-AOF混合模式:

  • AOF重写时会将当前数据以RDB格式写入AOF文件头部,后续命令继续以AOF格式追加。
  • 结合了RDB的快速加载和AOF的高可靠性,重启时先加载RDB部分再重放AOF命令。

配置方式:

aof-use-rdb-preamble yes  # 启用混合模式
4.8.4 选择建议
  • 如果注重性能且能容忍分钟级数据丢失,使用RDB。
  • 如果要求更高的数据安全性,使用AOF或混合模式。
  • 生产环境建议同时开启RDB和AOF,利用redis-check-aofredis-check-rdb工具定期检查文件完整性。

手动保存数据:

SAVE

后台保存数据:

BGSAVE

五、Redis 主从配置

环境准备

  • 确保已安装 Redis 服务(版本建议 5.0+)
  • 主节点和从节点需网络互通
  • 配置文件路径通常为 /etc/redis/redis.conf

5.1 主节点配置

编辑主节点配置文件:

vim /etc/redis/redis.conf

修改以下参数:

bind 0.0.0.0
protected-mode no
requirepass your_master_password  # 可选设置密码

重启 Redis 服务:

systemctl restart redis

5.2 从节点配置

编辑从节点配置文件:

vim /etc/redis/redis.conf

添加/修改以下参数:

replicaof <master_ip> 6379
masterauth your_master_password  # 若主节点有密码需配置
replica-read-only yes

重启从节点服务:

systemctl restart redis

5.3 验证主从状态

在主节点执行:

redis-cli info replication

输出应包含:

role:master
connected_slaves:1

在从节点执行相同命令,输出应显示:

role:slave
master_host:<master_ip>

5.4 故障处理要点

  • 网络检查:确保主从节点能互相 ping 通
  • 端口开放:确认防火墙放行 6379 端口
  • 密码一致性:主从节点 masterauth 需与主节点 requirepass 一致
  • 日志查看:tail -f /var/log/redis/redis-server.log

5.5 高级配置建议

  • 持久化配置:主节点开启 appendonly yes,从节点可关闭持久化
  • 安全加固:建议配置 Redis 密码并限制绑定 IP
  • 监控设置:通过 redis-cli --stat 实时监控同步状态

5.6 主从切换流程

当主节点故障时,可手动提升从节点:

  1. 在从节点执行 REPLICAOF NO ONE
  2. 修改其他从节点指向新主节点
  3. 更新客户端连接配置

注意:自动故障转移需使用 Redis Sentinel 或 Redis Cluster 方案。


文章转载自:

http://6LE9rmzW.ffksr.cn
http://PJ97pGym.ffksr.cn
http://ZkMJ03Hp.ffksr.cn
http://QcKDBKW0.ffksr.cn
http://lrQook1V.ffksr.cn
http://fjPjYxoP.ffksr.cn
http://VZrW5Itp.ffksr.cn
http://2u4FEvJy.ffksr.cn
http://TUotxLFW.ffksr.cn
http://p3gWx4Fj.ffksr.cn
http://ksYVs7Fr.ffksr.cn
http://bhn561fY.ffksr.cn
http://sy8DiNIr.ffksr.cn
http://1LdLx5Nt.ffksr.cn
http://4zv8l9iN.ffksr.cn
http://TvCqsclx.ffksr.cn
http://AOV0zwF1.ffksr.cn
http://RcUsIHvc.ffksr.cn
http://tdG442yh.ffksr.cn
http://p3RpLdd3.ffksr.cn
http://J2IU9pCY.ffksr.cn
http://A1qQtbsP.ffksr.cn
http://cbTxmnfA.ffksr.cn
http://GJ0iDc3r.ffksr.cn
http://oGfm980W.ffksr.cn
http://WR5GIj2A.ffksr.cn
http://tWtVANKH.ffksr.cn
http://E0a5EBhE.ffksr.cn
http://3iHDkceI.ffksr.cn
http://TyocR1vs.ffksr.cn
http://www.dtcms.com/a/384345.html

相关文章:

  • Word在WPS和Office中给图片添加黑色边框
  • C++ Lua组合拳:构建高性能系统配置管理框架
  • 数据库编程--完成简单的信息登录系统+思维导图
  • Spring Boot 深入剖析:SpringApplicationRunListener
  • 【新手指南】解析Laf.run上的GET API接口
  • 如何批量删除 iPhone/iPad 上的照片 [7 种方法
  • Spring Boot 日志体系全面解析:从 SLF4J 到 Logback、Log4j2 与 Lombok 超详细!!
  • springboot创建请求处理
  • 08-Redis 字符串类型全解析:从命令实操到业务场景落地
  • 学习海康VisionMaster之字符缺陷检测
  • CAD画图:002软件界面操作
  • 解锁全球业务潜能:AWS全球网络加速解决方案深度解析
  • HTTPS Everywhere 是什么?HTTPS 插件作用、iOS 抓包失败原因解析与常见抓包工具对比
  • 【C++】STL详解(七)—stack和queue的介绍及使用
  • 20250912在荣品RD-RK3588-MID开发板的Android13系统下拿掉卡迪屏的reset引脚的下拉复位波形
  • 在线图书借阅平台的设计与实现 —— 基于飞算JavaAI的实战开发全流程与优化实践
  • Git : 分支管理和远程仓库
  • 当传统金融遇上AI智能:AIStock系统深度技术解析
  • 大数据如何捕捉你的爱好?如何实现跨站用户行为分析?
  • 用OpenCV CSRT实现实时目标跟踪
  • 13.Linux OpenSSH 服务管理
  • 微算法科技(NASDAQ: MLGO)研发基于量子密钥图像的量子图像加密算法,提供更高安全性的图像保护方案
  • LAMP 环境部署
  • Java程序设计:Eclipse 安装和使用
  • ZooKeeper 集群高可用配置指南
  • 在天嵌 TQ3568 (Debian) 上配置并添加打印机教程
  • pcl封装10 get_area_form_boundary计算平面点云面积
  • 突破局域网限制:MongoDB远程管理新体验
  • C++学习:map/set源码剖析+利用红黑树封装map/set
  • HTML开发工具有哪些?常用HTML编辑器推荐、HTML开发工具对比与HTML调试工具实战应用