Redis数据结构(四)

存储list:
list存储方式采用头和尾插入的方式,这样效率快,如果没有这个插入的数据,redis自己会创建这个数据,如果是中间插入的话,采用list方式效率就会很慢。

ArrayList使用数组方式:
采用索引的方式,去查询的速度是非常快的,新增和删除操作,涉及到位移操作,所以比较慢,
LinkedList使用双向链接方式:
每个元素都记录了前后元素的指针,插入和删除操作时候,只是改变了前后元素的指针操作即可,速度就会非常快了。
(1)双向链表插入数据
(2)双向链表删除数据

存储list常用命令:
(1)两端添加
链表左端添加:
语法:lpush [key][value][value]
lpush mylist a b c
语法:rpush [key][value][value]
lpush mylist2 1 2 3
(2)查看列表
语法:lrange [table][start][end] (从零开始计数,负数从表尾开始)
lrange mylist 0 5
lrange mylist2 0 -2

(3)两端弹出
从列表中弹出数据,这时列表中就没有数据了
左端弹出:
lpop mylist
右端弹出:
rpop list
(4)获取列表元素个数
左端查看:
llen mylist
(5)扩展命令
仅在存在的表头插入数据,不存在这个表,就不会插入数据了。
lpushx mylist x
rpushx mylist2 x
删除命令
自动遍历数据,然后从头开始删除,规定个数的数据
lrem mylist3 2 3 从头删除2个3数据
从尾往上删除
rrem mylist3 -2 1 从后往前删除两个1
插入元素
lset mylist 3 aaa 在第三个元素前添加‘aaa’
在元素前插入数据
创建数据:
lpush mylist4 a b c
lpush mylist4 a b c
在b前插入数据
linsert mylist4 before b 11
在b后插入数据
linsert mylist4 after b 22

尾部元素砍出,并添加到头部
创建数据
lpush mylist5 1 2 3
lpush mylist6 a b c
数据处理
rpoplpush mylist5 mylist6
应用在消息队列当操作中。

 

原文地址:https://www.cnblogs.com/liuyangfirst/p/7098285.html