大数据技术学习——Redis

举报
slx_share 发表于 2023/03/02 11:46:34 2023/03/02
【摘要】 Redis是Key-Value内存数据库。

1       一句话介绍

RedisKey-Value内存数据库。

2       Redis特性

  • 超高读写性能

支持每秒超10万次的读写频率。

  • Value支持丰富的数据类型

支持String(包括数字)List(双向链表)SetzSet(Sorted Set)Hash(Map)五大类数据类型。例如:

  • 原子性(事务性)

支持多个操作命令合并后原子性执行。一般情况下Redis在接收到一个client发来的命令后,会立即处理并返回处理结果,但是当client在一个连接中发出multi命令(启动事务)时,这个连接会进入事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中。直到接收到exec命令,才会执行队列中所有命令,将结果打包返回给客户端,终结连接。

  • 支持发布订阅

可以设定对某一个Key值进行消息发布与订阅,当一个Key值上发布消息后,所有订阅它的客户端都会收到相应的消息。广泛用于构建实时消息系统。


Redis Channel实现了发布者与订阅者之间的解耦。

  • 支持持久化

持久化功能可自定义开启,支持RDBAOF两种方式。

  • RDB在指定的时间间隔内生成数据集的时间点快照。适合灾难恢复,对Redis性能影响小,恢复数据比AOF快;缺点是实例故障时丢失数据多,备份数据集较大时可能造成业务短时中断。
  • AOF采用Redis协议保存服务器执行的所有写操作命令,并在服务器启动时通过重新执行这些命令来还原数据集。另外支持后台对AOF文件进行重写,即将针对同一Key的操作合并。AOF可靠性较RDB高,RDBAOF同时存在时优先启用AOF恢复数据,但文件体积较RDB大,对Redis性能影响也较大。
  • 主从复制

主节点可以配置一个或多个从节点,从节点可继续级联从节点(仅在单实例模式下支持)。


初始复制阶段,主节点生成RDB文件并发送给从节点。命令传播节点,主节点将所有命令发送给从节点依次执行。从节点执行操作是异步的,因此不能保证主从节点数据强一致性。

  • 淘汰算法

原生Redis提供LRULFURandomTTL四中淘汰算法。华为FI MRS引入Smart淘汰策略,提升热数据命中率。

Redis通常被用作缓存,将热点数据写入Redis,阻断用户与数据库的直接交互,提供访问效率,降低数据库负载。

3       Redis架构


  • Redis Server:核心模块,负责Redis协议的数据读写、持久化、主从复制、集群功能。
  • Redis WSRedis 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       参考

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。