redis学习笔记
Redis 学习笔记
1. Redis的定义
1.1 Redis 的特点
2. Redis的作⽤
2.1 缓存
2.2 消息队列
2.3 实时分析
2.4 会话存储
2.5 分布式锁
3. 常⻅的基本服务架构
3.1 单机架构
3.2 主从架构
3.3 哨兵架构
3.4 集群架构
4. Redis集群如何搭建
4.1 安装Redis
4.2 配置Redis
4.3 启动Redis节点
4.4 创建集群
4.5 验证集群
5. Redis的基本命令
5.1 键操作
5.2 列表操作
5.3 哈希操作
5.4 集合操作
5.5 有序集合操作
5.6 其他常⽤命令
6. Redis如何实现优化性能
1
2
6.1 配置优化
6.2 内存管理
6.3 数据结构选择
6.4 持久化优化
6.5 ⽹络优化
6.6 监控和维护
7. Redis的常⻅错误点
7.1 配置错误
7.2 内存泄漏
7.3 数据⼀致性
7.4 ⽹络问题
7.5 性能瓶颈
7.6 解决⽅法
Redis 是⼀个开源的、⾼性能的键值数据库,全称是 Remote Dictionary Server。它⽀持多种数据结
构,如字符串、列表、哈希、集合和有序集合等,能够实现低延迟、⾼吞吐量的操作。Redis 通常⽤作
缓存、消息代理、实时分析和实时数据存储。
⾼性能:Redis⽀持⾼吞吐量和低延迟的操作,尤其适⽤于⾼并发场景。
⽀持多种数据结构:除了字符串,还⽀持列表、哈希、集合和有序集合等。
持久化:⽀持两种持久化⽅式,RDB(快照)和AOF(追加⽂件)。
⾼可⽤性:⽀持主从复制、哨兵模式和集群模式,确保数据⾼可⽤和⾼可靠性。
丰富功能:⽀持Lua脚本、事务、发布订阅等⾼级功能。
Redis 学习笔记
1. Redis的定义
1.1 Redis 的特点
●
●
●
●
●
2. Redis的作⽤
2.1 缓存
Redis常⽤于缓存场景。通过将频繁访问的数据存储在Redis中,减少对数据库的直接访问,提⾼应⽤的
响应速度。Redis的⾼性能和低延迟使其成为缓存的理想选择。
2.2 消息队列
Redis⽀持发布订阅模式和列表结构,可以实现⾼效的消息队列系统。常⻅的应⽤场景包括任务队列、实
时消息推送等。
2.3 实时分析
Redis的⾼性能和内存存储特性使其适⽤于实时分析场景。例如,实时统计⽤户⾏为、实时排⾏榜等。
2.4 会话存储
Redis可以作为会话存储的解决⽅案,存储⽤户的会话信息,确保⽤户在不同请求间保持⼀致的状态。
2.5 分布式锁
Redis⽀持Redisson等分布式锁实现,适⽤于分布式系统中的资源同步控制。
3. 常⻅的基本服务架构
3.1 单机架构
单机架构是最简单的部署⽅式,适⽤于数据量较⼩、访问量不⼤的场景。所有数据存储在⼀个Redis实例
中。
3.2 主从架构
主从架构通过主节点处理写操作,从节点处理读操作,实现读写分离,提⾼系统的吞吐量。从节点可以
同步主节点的数据,提供数据冗余和⾼可⽤性。
3.3 哨兵架构
3
4
哨兵架构通过多个哨兵节点监控主从节点的健康状态,实现⾃动故障转移。当主节点故障时,哨兵会选
举⼀个新的主节点,并重新配置从节点。
Redis集群架构通过分⽚将数据分布到多个节点上,实现⽔平扩展。每个节点负责⼀部分数据,⽀持⾼可
⽤性和⾼扩展性。
搭建Redis集群需要以下步骤:
在每个节点上安装Redis。
编辑每个节点的redis.conf⽂件,配置集群模式和绑定地址:
在每个节点上启动Redis服务:
使⽤Redis CLI创建集群:
3.4 集群架构
4. Redis集群如何搭建
4.1 安装Redis
4.2 配置Redis
4.3 启动Redis节点
4.4 创建集群
port 6379
cluster-enabled yes
cluster-config-file
nodes.
conf
cluster-node-timeout 5000
appendonly yes
1
2
3
4
5
redis-server /path/to/redis.conf
1
redis-cli
--cluster
create <host1>:<port1> <host2>:<port2> ...
--cluster-re
plicas
<num_replicas>
1
5
使⽤Redis CLI连接到集群:
以下是Redis的⼀些常⽤命令:
SET key value
:设置键值。
GET key
:获取键值。
DEL key
:删除键。
EXPIRE key seconds
:设置键的过期时间。
LPUSH key value
:向列表头部添加元素。
RPUSH key value
:向列表尾部添加元素。
LPOP key
:移除并返回列表头部的第⼀个元素。
RPOP key
:移除并返回列表尾部的第⼀个元素。
HSET key field value
:设置哈希字段的值。
HGET key field
:获取哈希字段的值。
HMSET key field1 value1 field2 value2
:设置多个哈希字段的值。
HGETALL key
:获取哈希所有字段和值。
SADD key member
:向集合添加元素。
SMEMBERS key
:获取集合所有元素。
4.5 验证集群
5. Redis的基本命令
5.1 键操作
●
●
●
●
5.2 列表操作
●
●
●
●
5.3 哈希操作
●
●
●
●
5.4 集合操作
●
●
redis-cli
--cluster
check <host>:<port>
1
6
SINTER key1 key2
:获取两个集合的交集。
SUNION key1 key2
:获取两个集合的并集。
ZADD key score member
:向有序集合添加元素。
ZRANGE key start stop
:按顺序获取有序集合元素。
ZRANK key member
:获取有序集合中元素的排名。
ZSCORE key member
:获取有序集合中元素的分数。
PING
:测试连接。
QUIT
:关闭连接。
FLUSHDB
:清空当前数据库。
FLUSHALL
:清空所有数据库。
内存配置:合理配置
maxmemory
,避免内存溢出。
持久化配置:根据业务需求选择合适的持久化⽅式(RDB或AOF)。
⽹络配置:优化⽹络参数,如
tcp-backlog
和
timeout
。
数据压缩:使⽤压缩技术(如LZF)减少内存占⽤。
淘汰策略:配置合适的内存淘汰策略(如LRU)。
根据业务需求选择合适的数据结构,减少内存占⽤和提升性能。
●
●
5.5 有序集合操作
●
●
●
●
5.6 其他常⽤命令
●
●
●
●
6. Redis如何实现优化性能
6.1 配置优化
●
●
●
6.2 内存管理
●
●
6.3 数据结构选择
●
6.4 持久化优化
7
RDB快照:定期⽣成RDB⽂件,⽀持快速恢复。
AOF持久化:使⽤AOF持久化提⾼数据 durability,但注意⽂件⼤⼩和性能。
绑定IP:配置
bind
绑定特定IP,提⾼安全性。
防⽕墙设置:配置防⽕墙限制访问。
优化⽹络延迟:减少⽹络延迟,提⾼集群性能。
监控⼯具:使⽤
redis-cli
、
redis-benchmark
等⼯具监控性能。
性能调优:根据监控结果调整配置。
内存配置不⾜:导致内存溢出,性能下降。
持久化配置不当:可能导致数据丢失或性能问题。
内存使⽤过⾼:导致系统响应变慢或崩溃。
数据膨胀:某些数据结构占⽤过多内存。
主从复制延迟:从节点数据不⼀致。
集群分⽚不均:导致某些节点负载过重。
⽹络延迟:影响集群性能。
节点通信失败:导致集群不可⽤。
●
●
6.5 ⽹络优化
●
●
●
6.6 监控和维护
●
●
7. Redis的常⻅错误点
7.1 配置错误
●
●
7.2 内存泄漏
●
●
7.3 数据⼀致性
●
●
7.4 ⽹络问题
●
●
8
⾼并发场景性能不⾜:需要优化配置或架构。
配置优化:调整内存、持久化和⽹络参数。
数据结构优化:选择合适的数据结构。
监控和维护:定期监控和调优系统性能。