Redis_列表_Hash 散列操作_2|学习笔记

简介: 快速学习 Redis_列表_Hash 散列操作_2

开发者学堂课程【Redis 数据库入门Redis_列表_Hash 散列操作_2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/15/detail/50


Redis_列表_Hash 散列操作_2


内容介绍:

一、命令

二、Hash 散列


一、命令

举例:

RPUSH listkey c abc c ab 123 ab bj ab redis list

LTRIM listkey 0 -1

LTRIM listkey 1 -1

LTRIM listkey 1 10000

将 RPUSH listkey c abc c ab 123 ab bj ab redis list 粘贴进去,这里面有十个元素,然后输入 LTRIM listkey 0 -1,LTRIM 是去掉 0前面,-1后面的元素,所以在输入LRANGE listkey 0 -1之后所有元素都在;如果是 LRANGE listkey 1 -1,因为0在1和-1之间,所以“c”就没有了

输入 LTRIM listkey 1 10000,因为里面只有9个元素,10000以外没有元素,对结果的影响很小。

image.png

⑵微博的评论最后500

LTRIM u1234:forumid:comments 0 499

如果我们按照0到499这样取值的话,可能会得到一个分页的数据。那么原来key本身改变了吗?

按照之前的数据看,我前面来做这个 LTRIM 操作,输入 LRANGE listkey 0 -1后,所有元素还在,所以 key 本身没有改变,LTRIM 改变 key 的值本身,所以我们可以根据 LTRIM 来做到类似于分页的效果。

1.在列表中某个存在的值(pivot)前或后插入元素

LINSERT key BEFOR/AFTER pivot value

Key 和 pivot 不存在,不进行任何操作

举例:

RPUSH lst Clojure C Lua

LINSERT lst AETER C Python

LINSERT lst BEFORE C Ruby

比如在 RPUSH lst Clojure C Lua 里面,创建一个新的 list,分别放入 Clojure 和Lua,RPUSH 是从左向右追加,所以“Lua”在最右边。

LINSERT lst AFTER C Python 是在“C”后面插入“Python”,LINSERT lst BEFORE C Ruby 是在“C”前面插入“Ruby”这个元素,就变成五个元素,

如下图

image.png

我们将这个例子操作一下,输入 RPUSH lst Clojure C Lua,相当于重新创建一个list,输入 LRANGE lst 0 -1,显示三个元素。

再输入 LINSERT lst AFERT C Python,最后输入 LINSERT lst BEFORE C Ruby

image.png

如果要插入的元素不在集合里面,那么就不进行操作。

我们输入 LINSERT lst BEFORE pivot Ruby,得到的是(integer)-1,表示没有插入进去,输入 LRANGE lst 0 -1,得到的还是五个元素

image.png

2.阻塞

⑴如果弹出的列表不存在或者为空,就会阻塞

⑵超时时间设置为0,就是永久阻塞,知道有数据可以弹出

⑶如果多个客户端阻塞在同一个列表上,使用 First In First Service 原则,先到先服务

⑷左右或者头尾阻塞弹出元素

BLPOP key [key…] timeout

BRPOP key [key…] timeout

⑸从一个列表尾部阻塞弹出元素压入另一个列表的头部

BRPOPLPUSH source destination timeout

如果 source 里面有元素,它会立刻弹出去并压到 destination 里面去;如果 source 里面没有元素,它会根据阻塞时间等待,有元素之后,压到另外一个destination 里面。

其实这个操作可以做很多事情,举个例子:假如你有个 list 列表,这个 list 列表是自己的微博,你的粉丝可以监控着阻塞你的微博列表,如果你有一条微博进来,就可以被他们拿走。

当然,这只是一种实验方式,也有不合理的地方,不太符合先到先服务的原则。


二、Hash散列

1.由 field 和关联的 value 组成的 map 键值对

2.Field 和 value 是字符串类型

3.一个 hash 中最多包含2^32-1键值对

image.png

相关文章
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
504 5
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
189 1
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
708 0
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
210 0
|
存储 NoSQL 算法
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
160 0
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
1794 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
1425 3
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
216 3
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
338 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。