Redis是非关系型数据库,使用key value结构做存储
redis支持了string,list,hash,set,zset5种类型。
以下是一些基础结构
1.string结构
SDS结构,线程安全,防止溢出,惰性空间释放
2.list结构
双端,无环
3.dictionary结构
hash表实现,可以参考hashmap的实现
渐进rehash,新建B,然后后续使用的时候,慢慢从A->B
4.跳跃表
有序集合的实现
5.压缩列表
是列表键和哈希键的底层实现支持。
对象类型
1.字符串对象
编码规则为INT/RAW/EMBSTR
2.列表对象
编码规则为ziplist/linkedlist
3.哈希对象对象
编码规则为intset/hashtable
4.有序集合对象
编码可以是ziplist/skiplist
Redis使用集群
集群通过使用分片来进行数据共享
一个集群包括多个节点(node)
建立集权的方式
1.集群建立的时候将多个节点进行连接。采取cluster meet ip port 来将其连接,具体方式看下图
2.一个概念叫做槽指派
每个数据库都有16384个槽(slot),当数据库确认0-16384能够正常处理的时候,集群处于OK
本质上是hash一致性的实现。但是与普通的实现不同的是,solt是虚拟的。可能NX-NY一段给某个机器节点使用。
保证高可用