【Redis学习笔记】第二章【2.3】Redis数据类型–list

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【Redis学习笔记】第二章【2.3】Redis数据类型–list,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文


在这里插入图片描述



1、引入

关于线性表、顺序表、链表、双向链表这几种数据结构的温习:
在这里插入图片描述

关于双向链表,即每个人记住自己前后的两个人是谁,来个示意图:
在这里插入图片描述

2、list类型

存储多个数据,并对数据进入存储空间的顺序进行区分,底层使用了双向链表进行存储。(value是一个list)

在这里插入图片描述

经典特点:

  • 有顺序
  • 存储多个数据

3、list类型数据的基本操作

  • 添加/修改数据
    lpush key value1 value2 …
    rpush key value1 value2 …
  • 获取数据
    lrange key start stop –获取指定范围
    lindex key index –获取指定索引
    llen key –获取key对应的value链表的长度
  • 获取并移除一个数据
    lpop key
    rpop key

举例:

***注意左push和有push的效果

127.0.0.1:6379> lpush list01 1 2 3
(integer) 3
127.0.0.1:6379> lrange list01 0 2
1) "3"
2) "2"
3) "1"

右进左出
127.0.0.1:6379> rpush list02 1 2 3
(integer) 3
127.0.0.1:6379> lrange list02 0 -1  //-1即最后一个value
1) "1"
2) "2"
3) "3"

127.0.0.1:6379> rpop list02
"3"
127.0.0.1:6379> lrange list02 0 -1
1) "1"
2) "2"

4、list 类型数据扩展操作

  • 规定时间内获取并移除数据。b即block阻塞

    blpop key1 [key2] timeout
    brpop key1 [key2] timeout

  • 移除指定数据
    lrem key count value –移除哪个value,移除几个

举例:

127.0.0.1:6379> lpush mq a b 
(integer) 2

127.0.0.1:6379> blpop mq 5
1) "mq"
2) "b"
127.0.0.1:6379> blpop mq 5
1) "mq"
2) "a"

127.0.0.1:6379> blpop mq 5
(nil)
(5.06s)
//此时若在等待1s的时候,在另一个窗口插入了一个value,则任务终止,并返回

在这里插入图片描述

127.0.0.1:6379> rpush mq a b c d q w e a s a d a
(integer) 12

//移除a,移除3个
127.0.0.1:6379> lrem mq 3 a 
(integer) 3
127.0.0.1:6379> lrange mq 0 -1
1) "b"
2) "c"
3) "d"
4) "q"
5) "w"
6) "e"
7) "s"
8) "d"
9) "a"
//移除的是前三个a,右进左出!

注***

  • list中保存的数据都是string类型的,数据总容量是有限的,最多 2^32- 1 个元素
  • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作(lpush、rpush)
  • 获取全部数据操作结束索引用-1
  • 分页操作时,通常第一页的信息来自于list,以加快页面呈现速度,第2页及更多的信息通过数据库的形式加载

5、list类型的应用场景

场景一:朋友圈点赞与取消点赞

微信朋友圈点赞,要求按照点赞顺序显示点赞好友信息, 如果取消点赞,移除对应好友信息
在这里插入图片描述

lrem指令去实现这个效果,redis可应用于具有操作先后顺序的数据控制。

场景二:用于最新消息的展示

使用list类型使得数据具有顺序的特征,从而解决多路信息合并汇总后仍有顺序的问题:

实际场景:

企业运营过程中,系统将产生出大量的运营数据,比如运维日志,其存于多台服务器,而最终又想按照顺序汇总查看,则可利用redis的list类型

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146173.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!