600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > redis的hash数据类型相关命令介绍及使用

redis的hash数据类型相关命令介绍及使用

时间:2024-03-19 14:48:37

相关推荐

redis的hash数据类型相关命令介绍及使用

文章目录

hash类型简介添加命令查询命令删除命令 应用场景

hash类型简介

redis中的哈希(hash或者散列表),内部存储很多键值对以key - [Field-Value]的形式存储,也是一种数组+链表的二维结构(本身又是一个 键值对结构)。正是因为这样,通常我们可以使用哈希存储一个对象信息。redis中每个 hash 可以存储 232 - 1 键值对(40多亿)

添加命令

hset key field value

将哈希表key中的字段的值设为value,不存在则创建设置,否则将覆盖旧值;如果哈希表中字段已经存在且旧值已被新值覆盖,返回0而不是1。

127.0.0.1:6379> hset student name zhangsan(integer) 1127.0.0.1:6379> hgetall student1) "name"2) "zhangsan"

hmset key field value [field value ...]

一次将多个field-value数据设置进哈希表中,表中已存在的字段会直接覆盖。若哈希表已存在字段值,重复设置将会返回OK,而不是0。

127.0.0.1:6379> hmset student age 18 hobby playgameOK127.0.0.1:6379> hgetall student1) "name"2) "zhangsan"3) "age"4) "18"5) "hobby"6) "playgame"

hsetnx key field value

仅当哈希表中字段不存在时可设置,否则无效。若设置的字段已存在值,那么当前操作将返回结果集为0而不是OK

//字段name已经存在,所以返回0127.0.0.1:6379> hsetnx student name lisi(integer) 0127.0.0.1:6379> hsetnx student sex man(integer) 1127.0.0.1:6379> hgetall student1) "name"2) "zhangsan"3) "age"4) "18"5) "hobby"6) "playgame"7) "sex"8) "man"

hincrby key field increment

给哈希表中指定字段增加数值,执行hincrby命令后返回的是字段的最新值,而不是ok或者1。

//年龄+1127.0.0.1:6379> hincrby student age 1(integer) 19127.0.0.1:6379> hgetall student1) "name"2) "zhangsan"3) "age"4) "19"5) "hobby"6) "playgame"7) "sex"8) "man"

查询命令

hget key field

获取哈希表key中给定字段的值,不存在返回nil

127.0.0.1:6379> hget student name"zhangsan"

hgetall key

获取哈希表key中的所有字段和值,不存在返回空列表

127.0.0.1:6379> hgetall student1) "name"2) "zhangsan"3) "age"4) "19"5) "hobby"6) "playgame"7) "sex"8) "man"

hlen key

获取哈希表key中field的数量,不存在返回0

127.0.0.1:6379> hlen student(integer) 4

hmget key field [field ...]

获取哈希表key中一个或多个给定字段的值,不存在返回nil

127.0.0.1:6379> hmget student name age1) "zhangsan"2) "19"

hkeys key

获取哈希表key中所有字段的键,不存在返回空表

127.0.0.1:6379> hkeys student1) "name"2) "age"3) "hobby"4) "sex"

hscan key cursor [MATCH pattern] [COUNT count]

迭代哈希表中的键值对。

cursor:游标,HSCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 HSCAN 命令的游标参数, 以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束

MATCH pattern:匹配的模式,和 KEYS 命令一样, 增量式迭代命令也可以通过提供一个 glob 风格的模式参数, 让命令只返回和给定模式相匹配的元素, 这一点可以通过在执行增量式迭代命令时, 通过给定 MATCH 参数来实现

count:指定从数据集里返回多少元素,默认值为 10 。虽然增量式迭代命令不保证每次迭代所返回的元素数量, 但我们可以使用 COUNT 选项, 对命令的行为进行一定程度上的调整。 基本上, COUNT 选项的作用就是让用户告知迭代命令, 在每次迭代中应该从数据集里返回多少元素

127.0.0.1:6379> hscan student 0 match *a* count 21) "0"2) 1) "name"2) "zhangsan"3) "age"4) "19"

hvals key

获取哈希表key中所有字段的值,不存在返回空表

127.0.0.1:6379> hvals student1) "zhangsan"2) "19"3) "playgame"4) "man"

hexists key field

获取哈希表key中field是否存在,存在返回1不存在返回0

127.0.0.1:6379> hexists student name(integer) 1127.0.0.1:6379> hexists student class(integer) 0

hstrlen key field

获取哈希表key中字段长度,不存在返回0,否则返回长度整数

127.0.0.1:6379> hstrlen student name(integer) 8

删除命令

hdel key field [field ...]

删除哈希表中一个或多个字段,不存在则忽略,删除操作返回值是删除成功的数量,不存在的字段将被忽略

//class键不存在,所以返回2127.0.0.1:6379> hdel student hobby sex class(integer) 2127.0.0.1:6379> hkeys student1) "name"2) "age"

应用场景

购物车:hset key field value命令, 可以实现以用户Id,商品Id为field,商品数量为value,恰好构成了购物车的3个要素存储对象:hash类型的(key, field, value)的结构与对象的(对象id, 属性, 值)的结构相似,也可以用来存储对象。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。