标签:因此 ima nbsp bsp 顺序 style 一个 redis order
Redis的列表相当于java中的LinkedList,它是一个链表,也就是说list的插入和删除操作非常快,但是索引定位会比较慢。
当列表中最后一个元素被弹出后,该数据结构会被自动删除,内存被回收。
list内部是一个双向链表,每个元素都使用双向指针顺序,串起来可以同时支持前向,后向遍历。
结构示意图:
命令 | 描述 |
BLPOP key timeout | 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
BRPOP key timeout | 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
LINDEX key index | 通过索引获取列表中的元素 |
LLEN | 获取列表长度 |
LPOP key | 移出并获取列表的第一个元素 |
LPUSH key value1 [value2 ...] | 将一个或者多个值插入到列表的头部 |
LPUSHX key value | 将一个值插入到已存在的列表头部,如果列表不存在,则返回0 |
LRANGE key start end | 获取列表指定范围内的元素 |
LSET key index value | 通过索引设置列表元素的值 |
LTRIM key start end | 对一个列表进行删减,只保留指定范围内的元素,不在范围内的元素将被删除 |
RPOP key | 移出列表中的最后一个元素 |
RPUSH key value1 [value2 ...] | 将一个或多个元素插入到列表的尾部 |
RPUSHX key value | 将一个值插入到已存在的列表尾部,如果列表不存在,则返回0 |
LREM key count value | 根据count值,移出列表中与参数value相等的元素。count > 0: 从表头开始向表尾搜索,移出与value相等的值,数量为count; count < 0:从表尾开始向表头搜索,移出与value相等的值吗,数量为count的绝对值;count = 0:移出表中所有与value相等的值 |
队列是先进先出的数据结构,可用于消息排队和异步处理的操作,它会确保元素的访问顺序。
操作:RPUSH将元素插入到列表中的最后一个元素,然后LPOP获取列表的第一个元素
栈是先进后出的数据结构,和队列正好相反,它会确保最后一个存储的会第一个出现。
操作:RPUSH将元素插入到列表中的最后一个元素,然后RPOP获取列表的最后一个元素
由于Redis的列表相当于Java的linkedlist,因此它的一些方法需要对链表进行遍历,因此在使用的时候需要特别进行注意。
lindex相当于Java链表的get(index)方法,它需要对链表进行遍历,性能随着参数index的增大而变差,因此在使用的时候要慎用,时间复杂度为o(n)。
获取0到-1范围内的元素,即获取所有的元素,因此需要慎用,时间复杂度为o(n)。
保留从1到-1区间内的元素,区间之外的统统砍掉。但-1表示倒数第一个,该操作即保留所有的元素,因此需要慎用,时间复杂度为o(n)
标签:因此 ima nbsp bsp 顺序 style 一个 redis order
原文地址:https://www.cnblogs.com/springhub/p/13172669.html