重庆广告公司网站建设,WordPress明月浩空,网站文章怎么更新,昆明做网站方案列表 List 相当于数组或者顺序表。 对于List来说#xff0c;两侧都可以插入和删除#xff0c;时间复杂度是O(1)。
有很多的操作#xff0c;比如 llen 可以获取List的长度#xff0c;lrem 可以删除元素 #xff0c;lrange可以去一个字符串 #xff0c; lindex可以根据下标…列表 List 相当于数组或者顺序表。 对于List来说两侧都可以插入和删除时间复杂度是O(1)。
有很多的操作比如 llen 可以获取List的长度lrem 可以删除元素 lrange可以去一个字符串 lindex可以根据下标来取到具体的元素。 LPUSH LRANGE
LPUSH将一个或者多个元素从左侧放入头插到list中。
LRANGE查询指定区间中的元素。
LPUSH key element [element]
LRANGE key start stop
例如插入的顺序是4,3,2,1那么此时list中的数字顺序为1,2,3,4
查询的时候查询的是 0 到 -1 -1也就是指的是最后一个数字 要是此时只有8个元素但是我们LRANGE key 0 100的时候会尽可能的把所有的元素都显示出来能尽可能获取则获取。 RPUSH
和LPUSH相对R开头的是尾插。
RPUSHX
检测key是否存在不存在则插入失败。 LPOP RPOP
删除操作一个是从头删除一个是从尾删除 搭配使用 RPUSH LPOP 就相当于队列。
搭配使用 RPUSH RPOP 就相当于栈。 LINDEX
给定下标获取到对应的元素。
LINDEX key index
如果下标非法返回的就是nil。并且LINDEX支持负数下标。 LINSERT
在指定位置插入元素。返回值是插入之后得到的新元素的
LINSERT key BEFORE | AFTER pivot element 要是插入的是before 4此时list中有两个4会插入到第一个4的前面。后面的4不会处理。 LLEN
获取到当前key的长度如果当前key不存在则返回0。 LREM
LREM key count element
count表示要删除的个数element表示要删除的值
如果count 0 代表从左往右删除element删完count的数量为止如果count 0 代表从右往左删除element删完count的数量为止如果count 0 代表删除所有的element
LTRIM
LTRIM key start stop
保留start和stop之间的元素剩下的删除。 LSET
LSET key index element
根据下标修改元素。 BLPOP LPOP
LPOP 在之前已经有过介绍是删除操作。那加上了B的是什么操作呢
BLPOP是 Blocking LPOP的缩写也就是阻塞删除。要是list中没有元素BLPOP会一直等待列表中有元素添加后再删除。因此这个命令通常实现在生产者 - 消费者模型消费者等待生产者添加元素后再删除。
BLPOP 在列表为空时会阻塞直到有元素可以被弹出。LPOP 在列表为空时立即返回空值不会等待。
小结
操作类型命令时间复杂度说明添加rpushO(k)k是元素个数将一个或多个值插入到列表的尾部添加lpushO(k)k是元素个数将一个或多个值插入到列表的头部查找linsertO(n)n是pivot距离头尾的距离在列表中的元素pivot前或后插入value查找lrangeO(sn)s是start偏移量n是start到end获取列表中指定范围内的元素查找lindexO(n)n是索引的偏移量获取列表中指定索引的元素查找llenO(1)获取列表的长度查找lpopO(1)移除列表的第一个元素并返回查找rpopO(1)移除列表的最后一个元素并返回删除lremO(k)k是元素个数根据参数count移除列表中与value匹配的元素删除ltrimO(k)k是元素个数保留列表中指定范围内的元素修改lsetO(n)n是索引的偏移量设置列表中指定索引的元素值为value阻塞blpopO(1)阻塞直到列表中有元素可弹出阻塞brpopO(1)阻塞直到列表中有元素可弹出 内部编码
列表类型的内部编码有两种Ziplist 和 Linkedlist
在redis 3.2版本引入了一种新的列表数据结构用来替代 Ziplist 和 Linkedlist
Quicklist快速列表是一种双向列表每一个节点都是一个Ziplist 并且结合了 Ziplist 的内存效率和 Linkedlist的性能。因为 Quicklist 整体是一个链表链表的每一个节点都是一个压缩列表。
让每个压缩列表都不会太大同时再把多个压缩列表通过链表的结构连接起来。