|
|
@ -47,6 +47,7 @@ index可以为负数,index=-1表示倒数第一个元素,同理index=-2表
|
|
|
|
### 2.2底层数据结构(quicklist)
|
|
|
|
### 2.2底层数据结构(quicklist)
|
|
|
|
实际上Redis的list并不是一个简单的linkedlist,而是quicklist(快速链表)。
|
|
|
|
实际上Redis的list并不是一个简单的linkedlist,而是quicklist(快速链表)。
|
|
|
|
在元素较少情况下,会使用一块连续的内存存储,这个结构是ziplist(压缩列表)。将所有的元素彼此紧挨着存储,也可以看作是数组结构。当数据量比较多的时间才会变成quicklist,因为普通的链表需要的附加指针空间(前后指针),所以Redis将链表和ziplist结合组成quicklist,将多个ziplist使用双向指针连接使用。
|
|
|
|
在元素较少情况下,会使用一块连续的内存存储,这个结构是ziplist(压缩列表)。将所有的元素彼此紧挨着存储,也可以看作是数组结构。当数据量比较多的时间才会变成quicklist,因为普通的链表需要的附加指针空间(前后指针),所以Redis将链表和ziplist结合组成quicklist,将多个ziplist使用双向指针连接使用。
|
|
|
|
|
|
|
|
quicklist内部默认单个ziplist长度为8kb,超过这个字节数,就会另启一个ziplist
|
|
|
|
![[Snipaste_2023-02-22_16-10-55.png]]
|
|
|
|
![[Snipaste_2023-02-22_16-10-55.png]]
|
|
|
|
## 3.hash
|
|
|
|
## 3.hash
|
|
|
|
Redis字典相当于Java的HashMap,属于无序字典,在数据结构上使用的是数组+链表也就是散列表结构。
|
|
|
|
Redis字典相当于Java的HashMap,属于无序字典,在数据结构上使用的是数组+链表也就是散列表结构。
|
|
|
@ -99,4 +100,7 @@ hash结构可以结构化存储用户信息,相比于json存储,可以单独
|
|
|
|
![[Snipaste_2023-02-23_10-00-41 7.png]]
|
|
|
|
![[Snipaste_2023-02-23_10-00-41 7.png]]
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 底层数据结构(跳跃列表)
|
|
|
|
### 5.2 底层数据结构(跳跃列表)
|
|
|
|
查看数据结构相关文档
|
|
|
|
查看数据结构相关文档
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3 假如元素score值相同
|
|
|
|
|
|
|
|
zset的排序元素不只看score值,如果score相同还会比较value值(字符串比较)
|