redis_04_hashset

1. redis hashset数据类型简介

  • hash类型可以看做String key ,String value的map容器。非常适合存储值对象的信息。
  • 每一个hash可以存储4294967295个键值对

2. 设置hashsethset key field value

  • hset key field value O(0)
  • 设置key的属性为field,值为value的键值对,如果可以不存在,则命令就会创建新的key以参数中的1filed/value对;如果参数中的field在key中已经存在,则新的value会覆盖原来的value
  • 返回值为1表示原来的key中没有field,设置了新值;
  • 返回值为0表示原来的key中存在field,用新的value会覆盖原来的value
    在这里插入图片描述
  • hsetnx key field value:如果该key中不存在,会回去设置,并返回1;如果存在,就不会覆盖,不会去设置 返回值为0;与hset key filed value
    -在这里插入图片描述
  • hsget key field:可以根据field来获取相应的value的值
  • hincrby key field num:让可以的field的vale的值增加num

3. 查看根据field当前的可以是否存在fieldhexists key field

  • 返回1存在,返回0不存在
    在这里插入图片描述

4. 根据field来删除某些字段hdel key field

在这里插入图片描述

5. 获取所有的key,valuehkeys key hvals key

  • 获取所有的key是指key/value键值对;也就是之前插入的field
  • hset key field value是的key是值hash的一个标识
  • hgetall key:获取所有的key,value
    在这里插入图片描述
    在这里插入图片描述

6. 多键值一次性设置hmset key field value [field value]

命令原型	时间复杂度	命令描述	返回值
HSET key field value	O(1)	为指定的Key设定Field/Value对,如果Key不存在,该命令将创建新Key以参数中的Field/Value对,如果参数中的Field在该Key中已经存在,则用新值覆盖其原有值。 	1表示新的Field被设置了新值,0表示Field已经存在,用新值覆盖原有值。 
HGET key field 	O(1) 	返回指定Key中指定Field的关联值。	返回参数中Field的关联值,如果参数中的Key或Field不存,返回nil。
HEXISTS key field 	O(1) 	判断指定Key中的指定Field是否存在。	1表示存在,0表示参数中的Field或Key不存在。
HLEN key 	O(1)	获取该Key所包含的Field的数量。	返回Key包含的Field数量,如果Key不存在,返回0。
HDEL key field [field ...] 	O(N)	时间复杂度中的N表示参数中待删除的字段数量。从指定Key的Hashes Value中删除参数中指定的多个字段,如果不存在的字段将被忽略。如果Key不存在,则将其视为空Hashes,并返回0.	实际删除的Field数量。
HSETNX key field value	O(1)	只有当参数中的Key或Field不存在的情况下,为指定的Key设定Field/Value对,否则该命令不会进行任何操作。 	1表示新的Field被设置了新值,0表示Key或Field已经存在,该命令没有进行任何操作。
HINCRBY key field increment 	O(1)	增加指定Key中指定Field关联的Value的值。如果Key或Field不存在,该命令将会创建一个新Key或新Field,并将其关联的Value初始化为0,之后再指定数字增加的操作。该命令支持的数字是64位有符号整型,即increment可以负数。 	返回运算后的值。
HGETALL key	O(N) 	时间复杂度中的N表示Key包含的Field数量。获取该键包含的所有Field/Value。其返回格式为一个Field、一个Value,并以此类推。	Field/Value的列表。
HKEYS key 	O(N)	时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Fields名。	Field的列表。
HVALS key 	O(N)	时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Values名。 	Value的列表。 
HMGET key field [field ...] 	O(N) 	时间复杂度中的N表示请求的Field数量。获取和参数中指定Fields关联的一组Values。如果请求的Field不存在,其值返回nil。如果Key不存在,该命令将其视为空Hash,因此返回一组nil。	返回和请求Fields关联的一组Values,其返回顺序等同于Fields的请求顺序。
HMSET key field value [field value ...]	O(N)	时间复杂度中的N表示被设置的Field数量。逐对依次设置参数中给出的Field/Value对。如果其中某个Field已经存在,则用新值覆盖原有值。如果Key不存在,则创建新Key,同时设定参数中的Field/Value。  	 
### Redis Hash 数据类型的 Set 操作 在 Redis 中,`Hash` 是一种键值对集合的数据结构,其中每个键又可以关联多个字段和对应的值。对于 `Hash` 类型执行设置操作主要依赖于几个核心命令。 #### 使用 HSET 添加或更新字段 当需要向指定的哈希表中添加新的字段及其对应值时,可使用 `HSET` 命令。如果该字段已经存在,则会覆盖原有值并返回0;如果是新创建则返回1[^1]。 ```bash HSET key field value ``` 例如: ```bash HSET user:1001 name "Alice" (integer) 1 ``` 这表示成功新增了一个名为 `name` 的字段到 `user:1001` 这个哈希表里,并赋予其 `"Alice"` 的字符串作为值。 #### 批量设置 HMSET 或者更推荐的方式是使用 HMSETNX 为了提高效率,在一次请求内完成多个字段的同时赋值可以选择 `HMSET` (注意:自4.0版本起官方建议采用 `HSET` 来代替它)。而 `HMSETNX` 则是在所有给定字段都不存在的情况下才进行批量插入,否则不作任何修改。 ```bash HMSET key field1 value1 [field2 value2 ...] ``` 例子如下所示: ```bash HMSET user:1001 age 30 city "Beijing" OK ``` 此命令将一次性为 `user:1001` 设置了两个额外属性——年龄(`age`)以及城市(`city`)。 #### 更新现有字段 HINCRBY 和 HINCRBYFLOAT 除了直接设定具体数值外,还可以通过增量方式调整整数或浮点数类型的字段内容。针对整形有 `HINCRBY` ,而对于实数则应该选用 `HINCRBYFLOAT` 。这两个指令允许原子化地增加/减少某个特定项上的计数器而不必先读取再写回整个记录。 ```bash HINCRBY key field increment HINCRBYFLOAT key field increment ``` 实例展示: ```bash HINCRBY user:1001 score 5 (integer) 5 ``` 上述语句使得 `score` 字段增加了5分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值