Redis底层数据结构
Redis常用的类型有STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)
Redis 键值对存储的结构
为了实现从键到值的快速访问,Redis使用了哈希表来保存所有键值对。键对应Redis设置的Key,而值对应的并不是值本身,而是指向具体值的指针。使用哈希表的最大好处就是可以用O(1)的时间复杂度快速找到键值对。但既然是哈希表,那么必然会有着哈希冲突的问题。
哈希冲突即指的是,当两个key的哈希值和哈希桶计算对应关系时,正好落在了同一个哈希桶上。
Redis解决哈希冲突的方式是使用链式哈希,即拉链法。当多个元素指向同一个哈希桶时,在同一个哈希桶中采用链表来保存对应的数据,它们之间依次用指针连接。
链式哈希有个很明显的问题,就是当同一个桶的元素过多时,链表的长度会越来越长,在链表查询数据的时间复杂度又是O(n),意味着链越长查询时间就越久。针对这个问题,Redi