Redis学习笔记:列表类型

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
611
文章
12
评论
2017年11月25日20:33:00 评论

一、概述

redis的列表类型可以存储一个有序的字符串列表,内部实现是一个双向链表,允许用户从两端插入元素。所以向两端插入数据的速度是极快的,而且获取数据时也是越接近两端速度越快,一个列表最多能容纳2^32 - 1个元素。

二、命令

2.1 在两端插入元素

  • LPUSH key value [value ...]:在列表的左端插入元素。
  • RPUSH key value [value ...]:在列表的右端插入元素。

返回值表示增加元素后的列表长度。

2.2 查询元素

  • LRANGE key start end:获取[start, end]区间的元素。

索引是从0开始,可用-1表示最后一个元素。

2.3 弹出元素

  • RPOP key:弹出并返回最右边的元素。
  • LPOP key:弹出并返回最左边的元素。

2.4 索引操作

  • LINDEX key offset:获取索引为offset的元素。
  • LSET key index value:设置索引为index的数据为value,索引从0开始。。
  • LINSERT key BEFORE|AFTER pivot value:在pivot前面或者后面插入值。

索引都是从0开始,LINDEX 命令中offset<0时从右边开始计算索引。

2.5 获取列表长度

  • LLEN key:获取列表的长度。

2.6 删除元素

  • LREM key count value:删除count个值为value的元素,返回成功删除的元素个数。当count<0时从右边开始删除,当count>0时从左边开始删,当count=0时删除所有的value 。

2.7 修剪元素

  •  LTRIM key start end:修剪列表元素,只保留[start, end]区间的元素。

2.8 转移元素到另一个列表

  • RPOPLPUSH src dest:从src中弹出最右边的元素并插入到dest的左边,整个过程是原子的。

2.9 阻塞式命令

  • BLPOP/BRPOP key [key ...] timeout:从列表key中弹出最左端或者最右端的元素,如果列表中 没有元素,将一直等待timeout时间直到列表中有元素,timeout=0表示不限制超时时间,返回列表名和弹出的元素。
  • BRPOPLPUSH src dest timeouit:从src中弹出元素并存到dest中,会阻塞timeout时间。

开启两个redis终端,第一个终端阻塞弹出:

第二个终端插入元素:

此时第一个终端将会返回数据:

再次输入命令brpop msgList 0,此时会立马弹出456,因为列表中存在456:

马谦马谦马谦
  • 本文由 发表于 2017年11月25日20:33:00
  • 转载请务必保留本文链接:https://www.dyxmq.cn/databases/redis/redis-list.html
redis源码分析:链表实现 Redis

redis源码分析:链表实现

一、链表定义 链表在redis中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。redis中链表在adlist.h和adlist.c中实现,只用了300+行代码...
redis中的发布和订阅 Redis

redis中的发布和订阅

一、发布和订阅 除了任务队列以外,redis还有一种基于“发布/订阅”模式的消息传递,使得客户端可以订阅某个频道,当频道有消息产生时,会把消息传递到所有的订阅者。和列表不一样的是,发布和订阅可以是一对...
Redis小案例(二):redis实现消息队列 Redis

Redis小案例(二):redis实现消息队列

一、任务队列概述 消息队列,顾名思义就是一个用来传递任务的队列。消息队列在开发中十分常见,经常用在页面后台处理需要很长时间的操作时,例如发送邮件、短信以及进行复杂数据运算操作等,这些操作通常会阻塞页面...
Redis小案例(一):实现网站访问频率限制 Redis

Redis小案例(一):实现网站访问频率限制

网站中经常需要用到网站限流,例如限制用户恶意爬虫获取网页信息以及在网站访问流量大时限制访问频率等等,这里使用redis做一个简单的网站登录限制案例。 一、使用EXPIRE进行访问频率限制 逻辑:用户登...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: