专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Redis之list

List类型的操作(链表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 – 1 个元素 (4294967295, 每个列表超过40亿个元素)。

1.1把值插入到链表头部

语法:lpush key value

1.2 把值插入到链表尾部

rpush key value

注意 :可以一次性插入多个元素如下:

lpush key value1 value2 value3 ....

1.3返回并删除链表的头部元素

lpop key

1.4返回并删除链表尾部元素

rpop key

1.5 返回链表中[start,stop]中的元素

规律:左数从0开始,右数从-1开始

lrange key start stop

如返回所有的链表元素用法如下:

lrange key 0 -1

1.6 从链表中删除 value值

lrem key count value

注意:删除count的绝对值个value后结束。

count>0 从表头中删除。

count<0 从表尾中删除。

如下用法:

lpush demo a b c d a d e a #创建一个链表

lrem demo 1 a # 在链表demo中从头部开始删除一个a值。最后变为 bcadea

lrem demo -2 a # 在链表demo中从尾部开始删除二个a值。最后变为 bcde

1.7统计链表中的元素个数

llen key

如下:

lpush demo a b c d # 创建一个demo链表

llen demo # 查询该链表中的元素的个数。

1.8 返回链表上index索引上的值

lindex key index

规律:index>=0,从头部开始。

index<=-1,从尾部开始。

1.9-linsert key after|before search value

作用:在key链表中寻找search,并在search值之前|之后,插入value。

注意:

一旦找到一个search后,命令就结束了,因此不会插入多个value。

before用法

lpush num 1 3 6 7 //创建一个num链表

linsert num before 3 2 // 在该链表的3前插入2

lrange num 0 -1 //查询该链表的元素

after用法

lpush num 1 3 6 7 //创建一个num链表

linsert num after 3 4 // 在该链表的3后插入4

lrange num 0 -1 //查询该链表的元素

2.0- rpoplpush source dest

作用:把source链表的尾部拿出,放在dest链表的头部。并返回该值。

lpush demo a b c d

rpoplpush demo demo1 //把链表demo的尾部d拿出来放在链表demo1的头部中

这种做法有什么用呢?

试想一下,未交费的用户我们把它存在demo中,交了费了就放在demo1中。

场景

task + bak双链表完成完全队列

业务逻辑

  • rpoplpush task bak
  • 接收返回值,并做业务处理。
  • 如果成功,rpop bak清除业务,如不成功,下次从bak表时取任务。

2.1-brpop,blpop key timeout

作用:等待弹出key的尾部元素。

timeout为等待超时时间,如果timeout为0则一直等待。

场景:长轮询ajax在线聊天时,能够用到。

文章永久链接:https://tech.souyunku.com/46914

未经允许不得转载:搜云库技术团队 » Redis之list

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们