×

redis 数据库编程

Redis Api的使用和理解之列表

feihu1996 feihu1996 发表于2020-05-17 17:38:02 浏览24 评论0

抢沙发发表评论

四、列表类型

1、列表键值结构

lpush my_list a
lpush my_list b

特点

1.1 有序

1.2 可以重复

1.3 支持左右两边弹入弹出

2、命令

2.1 rpush

rpush key value1 value2 value3 ... valueN

从列表右端插入值(1-N个)

时间复杂度为O(1-N)

2.2 lpush

lpush key value1 value2 ... valueN

从列表左端插入值(1-N个)

时间复杂度为O(1-N)

2.3 linsert

linsert key before|after value newValue

在list指定的值value前或后插入新的值newValue

时间复杂度为O(N)

2.4 lpop

lpop key

从列表左侧弹出一个item

时间复杂度为O(1)

2.5 blpop

blpop key timeout

lpop阻塞版本

timeout是阻塞超时时间

timeout为0表示永远不超时

时间复杂度为O(1)

2.6 rpop

rpop key

从列表右侧弹出一个item

时间复杂度为O(1)

2.7 brpop

brpop key timeout

rpop阻塞版本

timeout是阻塞超时时间

timeout为0表示永远不超时

时间复杂度为O(1)

2.8 lrem

lrem key count value

根据count值,从列表中删除所有value相等的项

count>0,从左到右,删除最多count个value相等的项

count<0,从右到左,删除最多Math.abs(count)个value相等的项

count=0,删除所有value相等的项

时间复杂度为O(N)

2.9 ltrim

ltrim key start end

包括end

按照索引范围修剪列表

时间复杂度为O(N)

2.10 lrange

lrange key start end

包括end

获取列表指定索引范围所有item

支持负数索引

时间复杂度为O(N)

2.11 lindex

lindex key index

获取列表指定索引的item

支持负数索引

时间复杂度为O(N)

2.12 llen

llen key

获取列表长度

时间复杂度为O(1)

内置计数器

2.13 lset

lset key index newValue

设置列表指定索引值为newValue

时间复杂度为O(N)

2.14 TIPS

LPUSH + LPOP = Stack

LPUSH + RPOP = Queue

LPUSH + LTRIM = Capped Collection

LPUSH + BRPOP = Message Queue

3、实战

微博时间线功能

3.1 用户的微博列表使用list类型的键值进行存储

用户id作为key

微博id作为列表的item

3.2 使用列表的增删改查接口可以实现用户微博的增删改查

3.3 使用lrange实现分页

每10页做一个分页

3.4 将用户的微博按照从新到旧的顺序展示

群贤毕至

访客