前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis入门知识第6篇-list数据类型与基本操作

redis入门知识第6篇-list数据类型与基本操作

作者头像
极客开发者
发布2022-01-18 14:36:03
2420
发布2022-01-18 14:36:03
举报
文章被收录于专栏:极客开发者

list 类型以及基本操作

1. 概述

假设我们有这样的需求:我们存储多个数据,并对数据进入存储空间的顺序进行区分。前面介绍的数据类型已经不满足我们现有的需求,于是引入一个新的数据类型 -- list ,list 也可以叫列表, 能保存多个数据,底层使用双向链表存储结构实现(链表属于《数据结构》的归属课程,我们在这里不再赘述)。

本文是该系列文章的第六篇,你可以通过下列链接阅读往期的篇章:

01-redis入门知识第1篇-redis简介

02-redis入门知识第2篇-redis的安装与测试

03-redis入门知识第3篇-redis的基本操作与数据类型

04-redis入门知识第4篇-redis中的string数据类型与基本的数据存取操作

05-redis入门知识第5篇-hash数据类型与基本操作

2. list 类型数据基本操作

  • 添加/修改数据

命令格式

代码语言:javascript
复制
# 从左边放数据
lpush key value1 [value2] ...
# 从右边放数据
rpush key value1 [value2] ...

命令格式

往右边 添加 a b c 三个数据到 list 键中

代码语言:javascript
复制
RPUSH list a b c
  • 查询数据

命令格式

代码语言:javascript
复制
# 根据索引范围查询数据
lrange key start stop
# 根据索引查询数据
lindex key index
# 查看list的长度
llen key

示例

查询第一个元素:list 的索引从 0 开始到 1 的元素

代码语言:javascript
复制
LRANGE list 0 1

查询所有元素:list 的索引从 0 开始到 倒数第 1 的元素

代码语言:javascript
复制
LRANGE list 0 -1
  • 获取并移除数据

命令格式

代码语言:javascript
复制
# 从左边出数据
lpop key
# 从右边出数据
rpop key

3. list 类型数据扩展操作

  • 规定时间内获取并移除数据

命令格式

代码语言:javascript
复制
# 阻塞式从list左边取数据
blpop key1 [key2] ... timeout
# 阻塞式从list右边取数据
brpop key1 [key2] ... timeout

示例

从 key1 列表中,或 key2 列表中,或 key3 列表中,阻塞式 取出列表数据,阻塞等待时间是 200 秒。

下面这条指令的功能是:从三个列表中任意取一个数据数据,从key1 开始取,如果 key1 没有数据则从 key2 取, key2 没有则从 key3 取。如果都没有 redis 会等待 200 秒,如果在 200 秒内没有取到,将会 返回 nil

代码语言:javascript
复制
BRPOP key1 key2 key2 200
  • 移除指定数据

应用案例:微信朋友圈点赞,要求按照点赞顺序显示点赞好友信息。如果取消点赞,移除对应的好友信息。这就就用到我们将说的,移除指定数据。

指令格式

代码语言:javascript
复制
# 移除指定个数的数据
lrem key count value

示例

代码语言:javascript
复制
# 添加9个数据到001列表中
RPUSH 001 a b c d e d e f g
# 移除1个”d“
LREM 001 1 d
# 移除2个”e“
LREM 001 2 e

最后通过LRANGE 001 0 -1命令查询结果如下:

代码语言:javascript
复制
1) "a"
2) "b"
3) "c"
4) "d"
5) "f"
6) "g"

总结:我们可以使用 list 的特性,可以将 redis 应用于操作具有先后顺序的数据控制

4. redis数据注意事项

  • list 中保存的数据都是 string 类型,数据总量是有限的,最多 2 的 32 次方减 1 个元素(4294967295)
  • list 具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或者栈的形式进行入栈出栈操作
  • 获取全部数据操作结束索引设置为-1
  • list 可以对数据进行分页操作,通常第一页的信息来自 list,第 2 页及更多的信息通过数据库的形式加载
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客开发者up 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • list 类型以及基本操作
    • 1. 概述
      • 2. list 类型数据基本操作
        • 3. list 类型数据扩展操作
          • 4. redis数据注意事项
          相关产品与服务
          云数据库 Redis®
          腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档