一:Redis 列表(List) -- LinkedList

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边);一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

JavaList:数组(ArrayList)链表(LinkedList)

1:ArrayList使用数组方式存储数据,所以根据索引查询数据速度快,而新增或者删除元素时需要设计到位移操作,所以比较慢。

2:LinkedList使用双向链接方式存储数据,每个元素都记录前后元素的指针,所以插入、删除数据时只是更改前后元素的指针指向即可,速度快,若通过下标查询元素时需要从头开始索引,所以比较慢。

注意:为什么Redis选取了链表?Redis操作中,最多的操作是进行元素的增删;

二:Redis 命令

  2.1:列表赋值:Lpush key value1 [value2]:将一个或多个值插入到列表头部;在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空

链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数(列表的长度);

  2.2:Rpush key value1 [value2]:在列表的尾部添加一个或多个值

  2.3:lrange key start end:返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素,1 表示列表第二个元素,以此类推。也可使用负数下标,以-1表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推;

  

  2.4:列表删除(弹出):

     lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素。

     rpop key:从尾部弹出元素。

  

  2.5:llen key:返回指定的key关联的链表中的元素的数量(长度)

  

  2.6:rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部。[循环操作]

  两队排列:

  

  

  循环队列:

  

  

  rpoplpush的使用场景:Redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。假设一个应用程序正在执行LPUSH操作向链表中添加新的元素,我们通常将这样的程序称之为"生

产者(producer)",而另外一个应用程序正在执行RPOP操作从链表中取出元素,我们称这样的程序为"消费者(Consume矿如果此时,消费者程序在取出消息元素后立刻崩溃,由于该消息己经被取出且没

有被正常处,那么我们就可以认为该消息己经丢失,由此可能会导致业务数据丢失,或业务状态的不一致等现象的发生。然而通过吏用RPOPLPUSH命令,消费者程序在从主消息队列中取出消息之后再将其

插入到各份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除。同时我们还可以提供一个守护进程,当发现各份队列中的消息过期时,可以重新将其冉放回到主消息队列中,以便

其它的消费者程序继续处理。

  

最新文章

  1. es6 新特性2
  2. jQuery选择器笔记
  3. UIkit框架之uiUIapplication
  4. 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法
  5. 转载Repository 和Unit of work的使用说明
  6. Javascript闭包与作用域
  7. CentOS下重新安装yum
  8. 在地图中使用Java
  9. openstack私有云布署实践【9.2 Glance镜像管理(办公网环境)】
  10. Ant学习总结3(很多的属性,用的时候方便查找)
  11. 修改Cosbench源码 支持s3的 http range request 测试场景
  12. PHP中利用DOM和simplxml读取xml文档
  13. 远程代码仓库URL地址变更后本地仓库的配置方法
  14. go语言nsq源码解读九 tcp和http中channel、topic的增删
  15. WebGL教程
  16. RDD中的cache() persist() checkpoint()
  17. mybatis批量更新update-设置多个字段值 报错 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
  18. 一些新东西学习 - Texture3D,Texture2DArray
  19. MVC视图布局页常用代码
  20. 动态网站技术CGI

热门文章

  1. word内存不足 解决办法
  2. java 注解@interface
  3. Thingsboard源码编译,小白新坑随笔
  4. Vue触发隐藏input file的方法
  5. 洛谷 题解 P2802 【回家】
  6. python xlrd模块
  7. poj1410(判断线段和矩形是否相交)
  8. 17.tmux相关
  9. Mysql数据库的优化(本文摘自于网络,文章末端有原文链接)
  10. Python Socket套接字编程