简介:
单键多值
Redis 列表List是简单的字符串列表,按照插入顺序排序。添加元素可以在列表的头部(左边)或者尾部(右边)。
列表List的底层实际上是一个双向链表,对两端的操作性能很高,通过下标索引操作中间的节点性能会较差。
常用命令:
lpush/rpush [key] [value1] [value2] ... 从左边/右边插入一个或者多值
lpop/rpop [key] 返回左边/右边的值 并删除
rpoplpush [key1] [key2] 从key1列表右边取出值,插入key2列表的左边
lrange [key] [st] [ed] 从key对应的List中按照下标索引获取st到ed的元素
0 -> 头部索引 -1 -> 尾部索引
lindex [key] [index] 按照下标索引index获取key中的元素(左边第一个元素下标为0)
llen [key] 获取List长度
linsert [key] after/before [value] [newvalue] 在value前/后插入newvalue
如果不成功,没有找到value,返回-1。成功返回List长度
lrem [key] [n] [value] 从key对应List开始,删除掉List中的n个value。
lset [key] [index] [value] 将key对应List下标为index的值替换成value
数据结构:
List的数据结构为快速列表QuickList
在列表元素较少的情况下,会使用一块连续的内存存储。这个结构式压缩列表ziplist,ziplist将所有元素在内存上连续的存储。
当数据量比较多时,才会改成quicklist。
普通的链表需要的附加指针空间太大,会造成空间资源的浪费。
Redis将链表和ziplist结合起来组成了quicklist。