找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3447

积分

0

好友

475

主题
发表于 6 小时前 | 查看: 5| 回复: 0

Redis是一个高性能的开源键值对(Key-Value)数据库,以其出色的速度和对多种数据结构的支持而闻名,被广泛用于缓存、消息队列、会话存储等场景。本文将系统性地介绍Redis的安装部署、核心操作、数据持久化与备份,并最终构建一个高可用的Redis主从同步架构。

环境准备与安装

建议从Redis官方网站下载源码包进行编译安装,以获得最新的稳定版本。以下是下载与编译安装的基本步骤。

$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make

编译成功后,生成的可执行文件位于src目录下。

基础配置与管理

默认情况下,Redis以后台模式运行,端口号为6379。其核心配置文件为redis.conf。让我们修改几个关键配置以方便使用。

首先,设置Redis以后台服务(守护进程)模式运行:

daemonize yes

接着,指定日志文件的存放路径,便于问题排查:

logfile "/path/to/your/redis.log"

配置完成后,可以使用以下命令启动Redis服务并连接客户端:

$ src/redis-server ../redis.conf    # 指定配置文件启动服务
$ src/redis-cli                     # 使用客户端连接

核心数据结构与常用命令

Redis支持五种核心数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。

一、String类型
用于存储字符串、整数或浮点数。

set key1 com           # 设置键值,重复设置会覆盖
setnx key1 zhangsan    # 仅当key1不存在时设置,用于分布式锁等场景
setex key3 100 fansik  # 设置key3并指定100秒后过期
ttl key3               # 查看key3的剩余生存时间(秒)
mset key4 123 key5 213 # 批量设置
mget key1 key2 key4 key5 # 批量获取
del key1               # 删除键

二、Hash类型
类似于编程语言中的Map,适合存储对象。

hset hash1 name fanjinbao   # 设置单个字段
hget hash1 name             # 获取单个字段值
hmset hash1 work it singel yes # 批量设置多个字段
hmget hash1 work single     # 批量获取多个字段值
hgetall hash1               # 获取Hash中所有字段和值
hlen hash1                  # 获取字段数量

三、List类型
一个简单的字符串列表,按插入顺序排序,支持从两端插入或弹出。

lpush list a b c         # 从左侧(头部)插入 a, b, c
lrange list 0 -1         # 列出list中索引0到-1(全部)的元素
lpop list                # 从左侧弹出一个元素(取出并删除)
rpush list 1 2 3         # 从右侧(尾部)插入 1, 2, 3
rpop list                # 从右侧弹出一个元素

四、Set类型
无序且元素唯一的字符串集合,支持交集、并集、差集等集合运算。

sadd set1 a b c d        # 向集合中添加元素
smembers set1            # 查看集合中所有元素
srem set1 a              # 删除指定元素
sinter set1 set2         # 求两个集合的交集
sunion set1 set2         # 求两个集合的并集
sdiff set1 set2          # 求集合set1与set2的差集(set1有而set2没有的元素)

五、Sorted Set类型
在Set基础上,为每个元素关联一个分数(score),元素按分数排序。

zadd zset 1 123 2 234    # 添加元素123(分数1)和234(分数2)
zrange zset 0 -1         # 按分数升序显示所有元素
zrange zset 0 -1 withscores # 显示元素及其分数
zrank zset 555           # 返回元素555在升序排列中的索引(排名)
zrevrank zset 444        # 返回元素444在降序排列中的索引

六、键(Key)相关命令

keys *                  # 查询所有键(生产环境慎用)
keys set*               # 模糊匹配以`set`开头的键
exists list             # 判断键是否存在
expire set1 10          # 为键set1设置10秒后过期
ttl set1                # 查看键set1的剩余生存时间
type keyfansik          # 查看键的数据类型
select 1                # 切换到1号数据库(默认16个,0-15)
move set1 2             # 将键set1移动到2号数据库

七、服务器相关命令

dbsize                 # 返回当前数据库的键总数
info                   # 获取详细的服务器和数据库状态信息
flushdb                # 清空当前数据库
flushall               # 清空所有数据库
config get *           # 获取所有配置参数
config set timeout 1000 # 设置客户端连接超时时间为1000秒

数据持久化策略

Redis提供两种主要的持久化方式:RDB(快照)和AOF(追加日志)。

RDB(快照)
在指定时间间隔内,将内存中的数据快照写入磁盘二进制文件(默认dump.rdb)。配置项在redis.conf中:

save 900 1    # 900秒内至少有1个key被更改,则触发快照
save 300 10   # 300秒内至少有10个key被更改
save 60 10000 # 60秒内至少有10000个key被更改

手动执行SAVE命令会阻塞主进程创建快照,而BGSAVE会在后台异步执行。

AOF(Append Only File)
记录所有写操作命令,以文本协议格式追加到文件末尾(默认appendonly.aof)。开启并配置AOF:

appendonly yes
appendfsync everysec # 每秒同步一次,在性能和数据安全间取得平衡

AOF方式数据更安全,但文件通常比RDB大,恢复速度也较慢。生产环境常结合使用两种方式。

数据库安全

为Redis服务设置访问密码是基础的安全措施。可以在配置文件中永久设置,或通过命令行临时设置。

永久密码
修改配置文件redis.conf

requirepass admin

临时密码
通过CONFIG命令设置(重启后失效):

127.0.0.1:6379> CONFIG set requirepass "runoob"
OK

设置密码后,客户端连接必须先进行认证:

127.0.0.1:6379> AUTH "runoob"
OK

禁用或重命名危险命令
为了防止误操作或被恶意利用,可以在配置文件中重命名或禁用某些命令,例如:

rename-command CONFIG fansik  # 将CONFIG命令重命名为fansik
rename-command CONFIG ""      # 禁用CONFIG命令

搭建Redis主从同步架构

主从复制是Redis实现高可用的基石。一个主节点(Master)可以有一个或多个从节点(Slave)。主节点负责处理写操作,并将数据变更同步给从节点;从节点作为只读副本,承担读请求,起到负载均衡和故障转移的作用。

配置步骤

  1. 配置主节点
    编辑主服务器的redis.conf,确保允许远程连接(如果从节点与主节点不在同一机器):

    bind 0.0.0.0

    同时,强烈建议设置主节点密码(requirepass),如上文安全部分所述。

  2. 配置从节点
    编辑从服务器的redis.conf,添加以下两行:

    slaveof 192.168.110.131 6379  # 指定主服务器的IP和端口
    masterauth admin               # 如果主服务器设置了密码,这里填写主服务器的密码

    slaveof指令告诉Redis实例作为谁的从节点。

  3. 验证主从状态

    • 分别重启主、从服务器。
    • 在主从节点上分别使用info replication命令查看复制状态。
    • 在从节点上,你应该能看到类似以下信息:
      role:slave
      master_host:192.168.110.131
      master_port:6379
      master_link_status:up  # 状态为“up”表示主从连接正常
    • 在主节点上写入数据,观察从节点是否能立即读取到,这是验证同步是否成功最直接的方式。

至此,一个基础的Redis主从复制环境就搭建完成了。通过这种架构,不仅提升了系统的读性能,也为后续实现故障自动切换的哨兵(Sentinel)模式或更复杂的集群(Cluster)模式奠定了基础。技术社区如云栈社区中,有更多关于Redis哨兵、集群配置及生产环境优化的深入探讨和实践分享。

参考资料

[1] redis数据库主从配置, 微信公众号:mp.weixin.qq.com/s/_Rb6w0oTf23d55YlNCgstA

版权声明:本文由 云栈社区 整理发布,版权归原作者所有。




上一篇:Java后端小红书面试:性能优化核心备战指南
下一篇:探索Linux系统的极限轻量化:Tiny Core Linux 17发布,17MB即可启动
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-25 23:59 , Processed in 0.462247 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表