作者:毕涛涛,致力于Java学习的践行者。原创文章,转载请注明出处。
list(列表)
Redis的列表相当于Java语言里面的LinkedList,注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为O(n),这点让人非常意外。
当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。
Redis的列表结构常用来做异步队列使用。将需要延后处理的任务结构体序列化成字符串塞进Redis的列表,另外一个线程从这个列表中轮询数据进行处理。
链表的基本操作
- lpush 和 rpush 分别可以向list的左边(头部)和右边(尾部)添加一个新元素;
- lrange 命令可以从list中取出一定范围的元素;
- lindex 命令可以从list中取出指定下标的元素,相当于Java链表操作中的get(int index)操作;
先进先出:队列
队列是先进先出的数据结构,常用于消息排队和异步逻辑处理,它会确保元素的访问顺序。 队列.png先进后出:栈
栈是先进后出的数据结构,跟队列正好相反: 栈.pnglist列表的其他操作
- :从头部加入元素(栈) 先进后出。
- :从尾部加入元素(队列) 先进先出。
- :插入元素。形如:linsert list3 before [集合的元素] [插入的元素]
- :将指定下标的元素替换掉。
- :删除元素,返回删除的个数。
- :保留指定key的值范围内的数据。
- :从list的头部删除元素,并返回删除元素。
- :从list的尾部删除元素,并返回删除元素。
- :第一步从尾部删除元素,然后第二步并从头部加入元素。
- :返回名称为key的list中index位置的元素。
- :返回元素的个数。
网友评论