Redis五大数据类型 list
1、概念
1、单键多值
2、Redis列表是简单的字符串列表,按照插入顺序排序,可以添加左边/右边
3、底层实际上是一个双向链表,对两端的操作性能好,但是通过索引下标的操作中间节点性能较差
4、 list不去重
2、常用命令
1、lpush/rpush < key> < value1> < value2> 从左边/右边插入一个或多个值
.
2、lpop/rpop < key> 从左边/右边吐出一个值;值在键在,值无键亡
.
3、rpoplpush < key1> < key2> 从< key1>列表右边吐出一个值,插到< key2>列表左边
.
4、lrange < key> < start> < stop> 按照索引下标获得元素(从左到右)
.
5、lindex < key> < index> 按照索引下标获得元素(从左到右)
.
6、llen < key> 获得列表长度
.
7、linsert < key> before < value> < newvalue> 在< value>的后面插入< newvalue> 插入值
.
9、lrem < key> < n> < value> 从左边删除n个value(从左到右)
127.0.0.1:6379> lpush test 0 1 2 3 4 5
6
127.0.0.1:6379> rpush test 6 7 8 9 10
11
127.0.0.1:6379> lrange test 0 -1
5
4
3
2
1
0
6
7
8
9
10
127.0.0.1:6379> rpoplpush test test2 //从test的后面取出一个值放入test2的前面
10
127.0.0.1:6379> lindex test 6
6
127.0.0.1:6379> linsert test2 AFTER d e //往 d 的后面插入 e
6
127.0.0.1:6379> lrem test 1 5 //从test里面从前往后删除一个5
1
127.0.0.1:6379> llen test
9
127.0.0.1:6379> lpop test //从左边(前面) 弹出一个值
4
127.0.0.1:6379> rpop test //从右边(后面) 弹出一个值
9
注意:
List集合的数据结构的是,“先进后出”(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。
如图:
压栈:就是存元素。即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置。
.
弹栈:就是取元素。即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置。
3、应用场景:
1、对数据大的集合数据删减 最新列表、列表显示、热点新闻、关注列表、留言评价…分页等 (列表都是具有顺序的,所以list的结构就注定了它十分的适合)
.
2、任务队列 list通常用来实现一个消息队列,因为是链表结构,可以确保先后顺序
.
3、补充: rpoplpush list1 list2 移除list1最后一个元素,并将该元素添加到list2并返回此元素
用此命令可以实现订单下单流程、用户系统登录注册短信等。
总结:
从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在较短时间内完成。
但是值得注意的事,如果元素插入或删除操作是作用于链表中间,那效率则会非常低(在数据量非常大的情况下)
一起努力学习吧!!!😁