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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习 Redis_列表_Hash 散列操作_3

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

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


Redis_列表_Hash 散列操作_3


内容介绍:

一、Hash 散列

二、命令

三、Hash 用途


一、Hash 散列

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

Field 和 value 是字符串类型

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

image.png

Hash 散列是我们工作中经常使用的一种结构,很多的业务设计就可以参考这个设计。


二、命令

1.设置单个字段

HSET key field value

HSETNX key field value

key 的 field 不存在的情况下执行,key 不存在直接创建

NX 代表的是 non-existent 不存在,key 的 field 不存在的情况下执行,key 不存在就直接创建。

比如说,输入 HSET chenbo qq 123,有 HSET 可能会有 HGET,HGET chenbo 不行,结果报错,再输入help hget,我们发现它需要 key 和 field。

我们可以通过输入hget chenbo qq获取“123

image.png

2.设置多个字段

HMSET key field value [field value…]

注意,这种操作具有原子性。

3.返回字段个数

HLEN key

4.判断字段是否存在

HEXISTS key field

Key 或者 field 不存在,返回0

5.返回字段值

HGET key field

6.返回多个字段值

HMGET key field [field…]

7.返回所有的键值对

HGETALL key

HGETALL 得出的结果不是同一级别的,第一个是 field,二是 value,第三和第一个一样,下一个是 value。

8.返回所有字段名

HKEYS key

9.返回所有值

HVALS key

10.在字段对应的值上进行整数的增量计算

HINCRBY key field increment

11.在字段对应的值上进行浮点数的增量计算

HINCRBYFLOAT key field increment

12.删除指定的字段

HDEL key field [field…]

可以同时删除多个,我们来试验一下,先输入 hset chendo lover xuruyun,再输入hdel chenbo lover,如下图:

image.png


二、Hash用途

1.节约内存空间

2.每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等)

3.所以数据库里面的键越多,redis 数据库服务器在储存附加管理信息方面耗费的内存就越多,花在管理数据库键上的 CPU 也会越多在字段对应的值上进行浮点数的增量计算

下面举了一个例子,我们用多个 key 是可行的,但是它不如后一种方法,

如图:

image.png

但第二种方法也有它的局限性,设置过期时间只能在 key 上设置。

4.不适合 hash 的情况

⑴使用二进制操作命令:因为 Redis 目前支持对字符串进行 SETBIT、GETBIT、BITOP 等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据

⑵使用过期键功能:Redis 的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能,那么你能把键值对储存在字符串里面

举例:

微博的好友关注

用户ID为key,field为好友ID,value 为关注时间

user:1000  user:606 20150808

user:1000代表的是 key,user:606是 field

用户维度统计

统计数包括:关注数、粉丝数、喜欢商品数、发帖数

用户为 key,不同维度为 field,value 为统计数

比如关注了5个人

HSET user:100000 follow 5

如果粉丝数又增加了一个,操作如下:

HINCRBY user:100000 follow 1

所有关于这个人的统计数用一个散列就可以完成。

相关文章
|
7天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
115 5
|
存储 NoSQL Java
Redis如何处理Hash冲突?
在 Redis 中,哈希表是一种常见的数据结构,通常用于存储对象的属性,对于哈希表,最常遇到的是哈希冲突,那么,当 Redis遇到Hash冲突会如何处理?这篇文章,我们将详细介绍Redis如何处理哈希冲突,并探讨其性能和实现细节。
289 1
|
11月前
|
存储 NoSQL 算法
Redis地理散列GeoHash
GeoHash作为一种高效的地理位置编码算法,在Redis中得到了很好的支持。通过使用Redis的GeoHash命令,可以方便地进行地理位置的存储、查询和计算。GeoHash在位置存储、附近位置搜索、距离计算和实时定位等场景中有着广泛的应用。掌握GeoHash及其在Redis中的使用方法,可以极大地提高地理位置相关应用的开发效率和性能。
189 5
|
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时可能遇到的问题和解决方案。
1493 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
12月前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
141 2
|
12月前
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
161 1
|
12月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
1330 3
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
158 3
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
106 3
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
271 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。