Redis内容总结
2021-02-06 本文已影响0人
Oliver_Li
- Redis:常用的
key-value 数据库
,key总是一个字符串对象
,value可以是字符串对象
、列表对象
、哈希对象
、集合对象
,有序集合对象
中的一种。 - 上面的5种类型底层是以6种数据结构实现的。例如
列表对象
在元素数量少于512个,而且每个元素长度小于64字节时,底层实现就是ziplist
,否则就是linkedlist
。其他几种基本类型也是这样,在不同情况下会使用不同的基础结构。 - Redis服务可以概括为
多路复用IO
+Hash表
-
多路复用IO
:维护客户端并把接收的指令发送到队列,供Redis单线程处理
,协议使用Redis自己的RESP。 -
Hash表
:Hash表
贯穿Redis数据的存储,实现和Java的HashMap类似,使用的是头插法。serverCron
定时函数辅助维护数据,如删除过期数据等。
-
- Redis主要使用内存,数据持久化到磁盘时可选择AOF和RDB,RDB为全量备份,AOF为增量备份,一般都开。
- 多机部署分为主从、哨兵、集群三种:
- 主从:主从复制,减缓压力。
- 哨兵:主从复制,主节点宕机从节点使用raft选举出新主节点,避免服务不可用。
- 集群:主从复制,常见最小6节点,3主3从,主从可自动宕机替换,采用分槽机制,最常见的使用方式。
- 主要涉及的算法:
- 淘汰策略:LRU、LFU
- 集群分片迁移:hash一致性
- 集群广播:Gossip
- 选举:raft