NoSQL——复述,2.4——列表

  

<强> <强>

<强> 1,列表:<强>允许出现重复的元素,可列表以作为栈(先进后出)或者队列(先进先出)。

<强>头元素和尾元素:头元素指的是列表左端/前端第一个元素;尾元素指的是列表右端/后端第一个元素。

举个例子,列表列表包含三个元素:x, y, z,其中x是头元素,而z则是尾元素。

<强>空列表:指不包含任何元素的列表,复述,将不存在的关键也视为空列表。


,,,针对链表结构的价值,复述,在其官方文档中给出了一些实用技巧,如RPOPLPUSH命令、下面给出具体的解释。

,,,复述,链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。假设一个应用程序正在执行LPUSH操作向链表中添加新的元素,我们通常将这样的程序称之为“生产者(生产者)”,而另外一个应用程序正在执行RPOP操作从链表中取出元素,我们称这样的程序为“消费者(消费者)”。如果此时,消费者程序在取出消息元素后立刻崩溃,由于该消息已经被取出且没有被正常处理,那么我们就可以认为该消息已经丢失,由此可能会导致业务数据丢失,或业务状态的不一致等现象的发生,然而通过使用RPOPLPUSH命令,消费者程序在从主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除。同时我们还可以提供一个守护进程,当发现备份队列中的消息过期时,可以重新将其再放回到主消息队列中,以便其它的消费者程序继续处理。

但是数据多的时候,全部数据都要受到影响,对数据库的负载比较高,

必要情况还要需要对关键字段logintime设置索引,索引也比较耗费系统资源。


<强>

<强> 1,lpush <强>(左推)强方法:


lpush键值[…]价值

将一个或多个值值插入到列表键的表头。

如果有多个值值,那么各个值值按从左到右的顺序依次插入到表头:比如对一个空列表(mylist)执行lpush mylist a b c,则结果列表为c b,

等同于执行命令

lpush mylist

lpush mylist b lpush mylist c

如果关键不存在,一个空列表会被创建并执行lpush操作。

当关键存在但不是列表类型时,返回一个错误。

<强>

<>以前例如:   #,加入单个元素      redis> LPUSH  languages  python   (整数),1      #,加入重复元素      redis> LPUSH  languages  python   (整数),2      redis>, LRANGE  languages  0, 1, #,列表允许重复元素   1),“python”   2),“python”      #,加入多个元素      redis>, LPUSH  mylist  a  b  c   (整数),3      redis>, LRANGE  mylist  0, 1   1),“c”   2),“b”   3),“a”

<强> 2,lpushx <强>(左pushx) 强方法:

lpushx键值将值值插入到列表键的表头,当且仅当关键存在并且是一个列表。

和LPUSH命令相反,当关键不存在时,lpushx命令什么也不做。

<>以前例如:   #,情况1:对空列表执行LPUSHX      redis>, LLEN  greet ,,, #,问候是一个空列表   (整数),0      redis>, LPUSHX  greet “hello”,, #,尝试LPUSHX,失败,因为列表为空   (整数),0         #,情况2:对非空列表执行LPUSHX      redis>, LPUSH  greet “hello”,,, #,先用LPUSH创建一个有一个元素的列的表   (整数),1      redis>, LPUSHX  greet “早上good ”,,, #,这次LPUSHX执行成功   (整数),2      redis>, LRANGE  greet  0, 1   1),“早上good ”   2),“你好”

<强> 3,rpush <强>(对<强>,推动) 强方法:

<强>

rpush键值[…]价值

将一个或多个值值插入到列表键的表尾。

如果有多个值值,那么各个值值按从左到右的顺序依次插入到表尾:

比如对一个空列表(mylist)执行rpush mylist a b c,则结果列表为a b c

等同于执行命令

rpush mylist,

rpush mylist b

rpush mylist c。

如果关键不存在,一个空列表会被创建并执行rpush操作。

当关键存在但不是列表类型时,返回一个错误。

<强>

rpush

 #,添加单个元素
  
  redis> RPUSH  languages  c
  (整数),1
  
  #,添加重复元素
  
  redis> RPUSH  languages  c
  (整数),2
  
  redis>, LRANGE  languages  0, 1, #,列表允许重复元素
  1),“c”
  2),“c”
  
  #,添加多个元素
  
  redis>, RPUSH  mylist  a  b  c
  (整数),3
  
  redis>, LRANGE  mylist  0, 1
  1),“一个”
  2),“b”
  3),“c”

NoSQL——复述,2.4——列表