Redis详解

简介

一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

在这里插入图片描述

数据类型

Redis支持五种数据类型:String,hash,List,Set,Sorted Set

全局哈希表结构如下:
在这里插入图片描述
哈希冲突: redis解决哈希冲突使用的是 链地址法(拉链法)
常见的解决Hash冲突的方案:开放寻址法、链地址法和再哈希法。

  1. 开放寻址法:原理是当发生hash冲突时,会以当前地址为基准,然后根据寻址方法(探查寻址),去寻找下一次地址。若依旧发生冲突,则继续寻址,直到找到一个空的位置为止。
  2. 链地址法(拉链法):HashSet其实都是采用的拉链法来解决哈希冲突的,就是在每个位桶实现的时候,我们采用链表(jdk1.8之后采用链表+红黑树)的数据结构来去存取发生哈希冲突的输入域的关键字(也就是被哈希函数映射到同一个位桶上的关键字)
  3. 再哈希法

在这里插入图片描述

持久化

AOF和RDB
数据库是写前日志,而Redis的AOF是写后日志
AOF

1.回写策略

  1. Always,同写同回,写完立马同步到磁盘上。
  2. Evevrysec,每秒写回
  3. No,操作系统控制写回,先写入内存缓冲区,再由操作系统决定何时将缓冲区内容写回。

在这里插入图片描述
2.AOF重写机制
每次AOF重写,Redis都会先执行一个内存拷贝,用于重写;然后使用两个日志来保证在重写过程中新写入的数据不会丢失。
AOF
AOF是写日志,但是如果要恢复的话,就需要一条一条执行,如果我们有快照,就不需要管理这个过程,而是能够直接获取状态了。
RDB
内存快照 RDB,为什么需要内存快照,为了解决AOF数据恢复过慢问题。
在这里插入图片描述
Redis执行的是全量快照,bgsave创建一个子线程,专门用于写入RDB文件,避免了主线程的阻塞。

集群方式

集群方式主要有三种 主从模式,哨兵模式,集群模式

1. 主从模式
主从为了解决单点问题,通常会把数据复制多个副本到其他机器,满足故障恢复和负载均衡等求,主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性
缺点:主节点宕机则不能工作,写能力单机,性能有限,单节点存储能力有限
2. 哨兵模式
Redis Sentinel 是一个分布式系统, Redis Sentinel为Redis提供高可用性。可以在没有人为干预的情况下阻止某种类型的故障。
监控》告警 》故障恢复:
1.Sentinel定期检查主从服务是否正常工作 2.当故障时会通过API向管理员或其他程序发通知
3.Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器,当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
在这里插入图片描述

3. Redis Cluster(集群)
是 redis的分布式解决方案,在3.0版本正式推出
当遇到单机、内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡目的。
在这里插入图片描述
Cluster 默认会对 key 值使用 crc32 算法进行 hash 得到一个整数值,然后用这个整数值对 16384 进行取模来得到具体槽位。
Cluster 还允许用户强制某个 key 挂在特定槽位上,通过在 key 字符串里面嵌入 tag 标记,这就可以强制 key 所挂在的槽位等于 tag 所在的槽位。

小结

每日一小节,进步一大节。

相关推荐

  1. Redis 详解

    2024-02-20 09:10:03       35 阅读
  2. Redis详解

    2024-02-20 09:10:03       24 阅读
  3. RedisRedis事务详解

    2024-02-20 09:10:03       27 阅读
  4. 详解Redis:什么是Redis

    2024-02-20 09:10:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-20 09:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-20 09:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-20 09:10:03       87 阅读
  4. Python语言-面向对象

    2024-02-20 09:10:03       96 阅读

热门阅读

  1. c++面试

    2024-02-20 09:10:03       38 阅读
  2. HarmonyOS 权限 介绍

    2024-02-20 09:10:03       44 阅读
  3. PTA-求分数序列的前n项和分数 20

    2024-02-20 09:10:03       52 阅读
  4. 用Python实现批量创建Excel文件

    2024-02-20 09:10:03       60 阅读
  5. K8S部署MySQL主从环境

    2024-02-20 09:10:03       33 阅读
  6. CS214 C语言 computer

    2024-02-20 09:10:03       42 阅读
  7. 导出Excel,支持最佳

    2024-02-20 09:10:03       57 阅读
  8. 华为配置旁挂三层组网隧道转发示例

    2024-02-20 09:10:03       43 阅读