大数据技术学习——Redis
1 一句话介绍
Redis是Key-Value内存数据库。
2 Redis特性
- 超高读写性能
支持每秒超10万次的读写频率。
- Value支持丰富的数据类型
支持String(包括数字)、List(双向链表)、Set、zSet(Sorted Set)、Hash(Map)五大类数据类型。例如:
- 原子性(事务性)
支持多个操作命令合并后原子性执行。一般情况下Redis在接收到一个client发来的命令后,会立即处理并返回处理结果,但是当client在一个连接中发出multi命令(启动事务)时,这个连接会进入事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中。直到接收到exec命令,才会执行队列中所有命令,将结果打包返回给客户端,终结连接。
- 支持发布订阅
可以设定对某一个Key值进行消息发布与订阅,当一个Key值上发布消息后,所有订阅它的客户端都会收到相应的消息。广泛用于构建实时消息系统。
Redis Channel实现了发布者与订阅者之间的解耦。
- 支持持久化
持久化功能可自定义开启,支持RDB和AOF两种方式。
- RDB在指定的时间间隔内生成数据集的时间点快照。适合灾难恢复,对Redis性能影响小,恢复数据比AOF快;缺点是实例故障时丢失数据多,备份数据集较大时可能造成业务短时中断。
- AOF采用Redis协议保存服务器执行的所有写操作命令,并在服务器启动时通过重新执行这些命令来还原数据集。另外支持后台对AOF文件进行重写,即将针对同一Key的操作合并。AOF可靠性较RDB高,RDB和AOF同时存在时优先启用AOF恢复数据,但文件体积较RDB大,对Redis性能影响也较大。
- 主从复制
主节点可以配置一个或多个从节点,从节点可继续级联从节点(仅在单实例模式下支持)。
初始复制阶段,主节点生成RDB文件并发送给从节点。命令传播节点,主节点将所有命令发送给从节点依次执行。从节点执行操作是异步的,因此不能保证主从节点数据强一致性。
- 淘汰算法
原生Redis提供LRU、LFU、Random、TTL四中淘汰算法。华为FI MRS引入Smart淘汰策略,提升热数据命中率。
Redis通常被用作缓存,将热点数据写入Redis,阻断用户与数据库的直接交互,提供访问效率,降低数据库负载。
3 Redis架构
- Redis Server:核心模块,负责Redis协议的数据读写、持久化、主从复制、集群功能。
- Redis WS:Redis WebService管理模块,主要负责Redis集群的创建、扩容、减容、查询、删除等操作,集群管理信息存入DB数据库。
3.1 Redis单机模式
- 单机模式下,一个节点部署一个主实例及多个从实例,从实例可继续级联从实例。从事实例只读。
- 主实例宕掉,从实例不会自动升主。
- 单机模式下,支持多数据库,相当于独立命名空间,不同库间逻辑隔离,Key不冲突。数据库从0编号开始命名,默认16个。
3.2 Redis集群模式
- 集群模式实现单机模式的功能子集。支持单机模式下单数据库所有命令,但不支持多数据库以及相应的命令。
- 多个Redis实例构成一个集群。共16384个槽位均为到各个主实例上。Key散列到各槽位的算法如下:
HASH_SLOT = CRC16(key) mod 16384
CRC16算法计算结果可较好均匀分配到16384个槽位中,实现数据负载均衡。
- 同一节点可以部署一个或多个Redis实例。
- 主实例可以有多个从实例,但是从实例不能级联从实例。从实例默认不读不写,可配置只读。
- 一个主实例故障后,需要其他半数以上主实例选举其从实例升主。
- 可进行实例扩缩容,并进行槽位迁移。
4 参考
- 点赞
- 收藏
- 关注作者
评论(0)