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

简介: 快速学习 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

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

相关文章
|
存储 NoSQL Java
Redis如何处理Hash冲突?
在 Redis 中,哈希表是一种常见的数据结构,通常用于存储对象的属性,对于哈希表,最常遇到的是哈希冲突,那么,当 Redis遇到Hash冲突会如何处理?这篇文章,我们将详细介绍Redis如何处理哈希冲突,并探讨其性能和实现细节。
348 1
|
存储 NoSQL 算法
Redis地理散列GeoHash
GeoHash作为一种高效的地理位置编码算法,在Redis中得到了很好的支持。通过使用Redis的GeoHash命令,可以方便地进行地理位置的存储、查询和计算。GeoHash在位置存储、附近位置搜索、距离计算和实时定位等场景中有着广泛的应用。掌握GeoHash及其在Redis中的使用方法,可以极大地提高地理位置相关应用的开发效率和性能。
236 5
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
181 2
|
存储 NoSQL Redis
Redis 哈希(Hash)
10月更文挑战第16天
201 1
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
156 3
|
缓存 NoSQL Redis
Redis命令:列表模糊删除详解
Redis命令:列表模糊删除详解
453 3
|
存储 NoSQL 算法
5)深度解密 Redis 的哈希(Hash)
5)深度解密 Redis 的哈希(Hash)
246 1
|
消息中间件 存储 NoSQL
4)深度解密 Redis 的列表(List)
4)深度解密 Redis 的列表(List)
205 1
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
433 0