数据类型:List
List目录
- Lpush和Rpush
- Lpop和Rpop
- Llen
- Lindex
- Lset
- Lrange
- Ltrim
- blpop和brpop
list是redis提供的"列表"数据类型, 就类似于我们使用过的链表, 支持头部操作和尾部操作, 不支持随机访问, 如果随机操作某个下标, 时间复杂度为O(N)。
list的底层数据结构是quicklist。 quicklist是双向链表和压缩列表(ziplist)的结合体。 每一个quicklist节点就是一个压缩列表。
Lpush和Rpush
lpush key value [value...]
rpush key value [value...]
- lpush和rpush都是向key所在的键值对的值中插入数据。 lpush代表头插, rpush代表尾插。
- 可以同时插入多个数据。
- O(1) , 其实应该是插入数据的个数
Lpop和Rpop
lpop key
rpop key
- lpop和rpop都是从key对应的值中弹出数据, lpop代表头删, rpop代表尾删。
- O(1)
Llen
llen key
- 获取key的值的长度。
- 这里的llen的第一个l代表的意思是list。 而lpush中的l代表的是left。
- O(1)
Lindex
lindex key index
- 获取某个值的某个下标处的数据。
- index为要获取的位置下标, 下标从0开始。
- O(N)
Lset
lset key index value
- 将对应的值的某个下标处的数据修改成value
- index为要修改的值的位置下标, 下标从0开始;value为修改后的值。
- O(N)
Lrange
lrange key start end
- 获取对应的值的start 到end的值。 下标从0开始。
- 如果end为 -1, 则代表最后一个位置, -2代表倒数第二个位置。
- O(N)
Ltrim
ltrim key start end
- 将对应的值截取,只剩余start 到end之间的值。下标从0开始。
- 如果end为 -1, 则代表最后一个位置, -2代表倒数第二个位置。
- O(N)
blpop和brpop
blpop key [key ...] timeout
brpop key [key ...] timeout
- 对多个key进行删除。
- blpop和brpop为阻塞删。只有当后面的key中有至少一个成功删除了数据, 才会返回,否则一直阻塞。
- timout为阻塞时间, 必须设置,否则报错。