Redis中散列类型的常用命令小结

 更新时间:2016年09月27日 10:32:55   作者:Joans  
散列类型的键值其实也是一种字典解耦,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,所以说散列类型不能嵌套其他的数据类型。下面就来详细介绍下Redis中散列类型的常用命令,有需要的可以参考学习。

Redis散列类型

Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,也就是说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。

除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套。比如集合类型的每个元素只能是字符串,不能是一个集合或者散列表等。

散列类型适合存储对象:使用对象类别和ID构成建名,使用字段表示对象的属性,而字段值存储属性值。例如要存储ID为2的汽车对象,可以分别使用名为color、name和price的三个字段来存储该汽车的颜色、名称和价格。

1、基本命令

例如现在要存储ID为1的文章,分别有title、author、time、content

则键为post:1,字段分别为title、author、time、content,值分别为“the first post”、“me”、“2014-03-04”、“This is my first post.”,存储如下

redis 127.0.0.1:6379> hmset post:1 title "the first post" author "JoJo" time 2016/08/25 content "this is my first post"
OK

这里使用的是hmset命令,具体散列的基本赋值命令如下:

hset key field value   #例如hset post:2 title “second post”

hget key field             #例如hget post:2 title,获取id为2的post的title值

hmset key field value [field value ...]  #这个同上,批量存值

hmget key field [field ...]                      #批量取值,取得列表

例:

redis 127.0.0.1:6379> hmget post:1 time author
1) "2016/08/25"
2) "JoJo"

hgetall key                  #取得key所对应的所有键值列表,这里给出个例子

redis 127.0.0.1:6379> hgetall post:1
1) "title"
2) "the first post"
3) "author"
4) "JoJo"
5) "time"
6) "2016/08/25"
7) "content"
8) "this is my first post"

 2、判断是否存在

hexists key field

如果存在返回1,否则返回0(如果键不存在也返回0)。

3、当字段不存在时赋值

hsetnx key field value

这个和hset的区别就是如果字段存在,这个命令将不执行任何操作,但是这里有一个区别就是Redis提供的这些命令都是原子操作,不会产生数据不一致问题。

例:

redis 127.0.0.1:6379> hexists post:1 time
(integer) 1  //判断是存在time字段的
redis 127.0.0.1:6379> hsetnx post:1 time 2016/08/26
(integer) 0  //不存在的话,设置time,存在的话返回0,值不变,原始值
redis 127.0.0.1:6379> hget post:1 time
"2016/08/25"
redis 127.0.0.1:6379> hsetnx post:1 age 23
(integer) 1   //不存在age字段,返回1,并设置age字段
redis 127.0.0.1:6379> hget post:1 age
"23"

4、增加数字

hincrby key field number

这里就和incry命令类似了。

例:

redis 127.0.0.1:6379> hincrby post:1 age 2
(integer) 25

5、删除字段

hdel key field [field ...]

删除字段,一个或多个,返回值是被删除字段的个数。

6、其他命令

hkeys key    #获取字段名

hvals key    #获取字段名

示例如下:

redis 127.0.0.1:6379> hkeys post:1
1) "title"
2) "author"
3) "time"
4) "content"
5) "age"
redis 127.0.0.1:6379> hvals post:1
1) "the first post"
2) "JoJo"
3) "2016/08/25"
4) "this is my first post"
5) "25"

最后还有一个就是获取字段数量的命令:

hlen key

返回字段的数量

redis 127.0.0.1:6379> hlen post:1
(integer) 5

总结

以上就是Redis中散列类型常用命令的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • Redis数据结构类型示例解析

    Redis数据结构类型示例解析

    这篇文章主要为大家介绍了Redis数据结构类型示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Redis分布式锁方案设计之防止订单重复提交或支付

    Redis分布式锁方案设计之防止订单重复提交或支付

    这篇文章主要为大家介绍了Redis分布式锁之防止订单重复提交或支付方案设计示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 关于Redis你可能不了解的一些事

    关于Redis你可能不了解的一些事

    这篇文章主要给大家介绍了关于Redis你可能不了解的一些事,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 如何使用redis的setnx实现分布式锁

    如何使用redis的setnx实现分布式锁

    Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值,这篇文章主要介绍了使用redis的setnx实现分布式锁,需要的朋友可以参考下
    2024-06-06
  • Redis过期Key删除策略和内存淘汰策略的实现

    Redis过期Key删除策略和内存淘汰策略的实现

    当内存使用达到上限,就无法存储更多数据了,为了解决这个问题,Redis内部会有两套内存回收的策略,过期Key删除策略和内存淘汰策略,本文就来详细的介绍一下这两种方法,感兴趣的可以了解一下
    2024-02-02
  • redis批量删除key的步骤

    redis批量删除key的步骤

    本文分享最新版Redis批量删除key的方法,希望能帮到遇到同样问题的网友。
    2020-09-09
  • Redis设置密码保护的实例讲解

    Redis设置密码保护的实例讲解

    今天小编就为大家分享一篇Redis设置密码保护的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • RedisTemplate的使用与注意事项小结

    RedisTemplate的使用与注意事项小结

    本文详细介绍了RedisTemplate的用途和使用方法,RedisTemplate是Spring提供的一个工具类,用于操作Redis数据库,其API提供了丰富的方法来实现对Redis各种操作,本文就来详细的介绍一下,感兴趣的可以来了解一下
    2024-10-10
  • redis字符串类型_动力节点Java学院整理

    redis字符串类型_动力节点Java学院整理

    这篇文章主要为大家详细介绍了redis字符串类型的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • redis键值出现\xac\xed\x00\x05t\x00&的问题及解决

    redis键值出现\xac\xed\x00\x05t\x00&的问题及解决

    这篇文章主要介绍了redis键值出现\xac\xed\x00\x05t\x00&的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论