5.Redis常用命令:Hash

  我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

1、HSET key field value

将哈希表 key 中的字段 field 的值设为 value。如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

127.0.0.1:6379> hset website google "www.google.com"
(integer) 1
127.0.0.1:6379> hget website google
"www.google.com"
127.0.0.1:6379> hset website google www.google.com
(integer) 0
127.0.0.1:6379> hget website google
"www.google.com"

2、HGET key field 

获取存储在哈希表中指定字段的值 

127.0.0.1:6379> hset website google "www.google.com"
(integer) 1
127.0.0.1:6379> hget website google
"www.google.com"
127.0.0.1:6379> hset website google www.google.com
(integer) 0
127.0.0.1:6379> hget website google
"www.google.com"

3、HEXISTS key field 

查看哈希表 key 中,指定的字段是否存在。如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
3) "baidu"
4) "www.baidu.com"
5) "yahoo"
6) "www.yahoo.com"
127.0.0.1:6379> hexists website baidu
(integer) 1

4、HDEL key field1 [field2] 

删除一个或多个哈希表字段,不存在的字段将被忽略。返回值显示被成功删除字段的数量,不包括被忽略的字段。

127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
3) "baidu"
4) "www.baidu.com"
5) "yahoo"
6) "www.yahoo.com"
127.0.0.1:6379> hdel website baidu yahoo
(integer) 2
127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"

5、HMGET key field1 [field2]

获取所有给定字段的值

127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
3) "baidu"
4) "www.baidu.com"
5) "yahoo"
6) "www.yahoo.cn"
127.0.0.1:6379> hmget website baidu yahoo
1) "www.baidu.com"
2) "www.yahoo.cn"

6、HMSET key field1 value1 [field2 value2 ]

同时将多个 field-value (域-值)对设置到哈希表 key 中。

127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
3) "baidu"
4) "www.baidu.com"
5) "yahoo"
6) "www.yahoo.cn"
127.0.0.1:6379> hmset website sina www.sina.com netease 163.com
OK
127.0.0.1:6379> hgetall website
 1) "google"
 2) "www.google.com"
 3) "baidu"
 4) "www.baidu.com"
 5) "yahoo"
 6) "www.yahoo.cn"
 7) "sina"
 8) "www.sina.com"
 9) "netease"
10) "163.com"

7、HKEYS key

获取所有哈希表中的字段

127.0.0.1:6379> hgetall website
 1) "google"
 2) "www.google.com"
 3) "baidu"
 4) "www.baidu.com"
 5) "yahoo"
 6) "www.yahoo.cn"
 7) "sina"
 8) "www.sina.com"
 9) "netease"
10) "163.com"
127.0.0.1:6379> hkeys website
1) "google"
2) "baidu"
3) "yahoo"
4) "sina"
5) "netease"

8、HVALS key

获取哈希表中所有值

127.0.0.1:6379> hgetall website
 1) "google"
 2) "www.google.com"
 3) "baidu"
 4) "www.baidu.com"
 5) "yahoo"
 6) "www.yahoo.cn"
 7) "sina"
 8) "www.sina.com"
 9) "netease"
10) "163.com"
127.0.0.1:6379> hvals website
1) "www.google.com"
2) "www.baidu.com"
3) "www.yahoo.cn"
4) "www.sina.com"
5) "163.com"

9、HGETALL key

获取在哈希表中指定 key 的所有字段和值

127.0.0.1:6379> hgetall website
 1) "google"
 2) "www.google.com"
 3) "baidu"
 4) "www.baidu.com"
 5) "yahoo"
 6) "www.yahoo.cn"
 7) "sina"
 8) "www.sina.com"
 9) "netease"
10) "163.com"

10、HINCRBY key field increment

为哈希表 key 中的指定字段的整数值加上增量 increment 。返回增加之后的结果。

127.0.0.1:6379> hset configuration connections 10
(integer) 1
127.0.0.1:6379> hincrby configuration connections 5
(integer) 15
127.0.0.1:6379> hget configuration connections
"15"

11、HINCRBYFLOAT key field increment

为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

127.0.0.1:6379> hset configuration amount 10.33
(integer) 1
127.0.0.1:6379> hincrbyfloat configuration amount 4.67
"15"
127.0.0.1:6379> hget configuration amount 
"15"

12、HSETNX key field value

只有在字段 field 不存在时,设置哈希表字段的值。

127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
127.0.0.1:6379> hsetnx website google hellogoogle
(integer) 0
127.0.0.1:6379> hsetnx website xiaomi www.mi.com
(integer) 1
127.0.0.1:6379> hgetall website
1) "google"
2) "www.google.com"
3) "xiaomi"
4) "www.mi.com"

13、HSCAN key cursor [MATCH pattern] [COUNT count] 

迭代哈希表中的键值对。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

深入浅出java静态代理和动态代理

代理模式,是常用的设计模式。特征是,代理类与委托类有相同的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类。以及事后处理消息。

1151
来自专栏码农分享

SQL Server 多表数据增量获取和发布 4

最关键的在于获取捕获表信息(系统表中间_CT结尾的数据)。 根据网上资料查取,找到了获取当前捕获表时间区间范围内数据的方式。 见[SQL Server 多表...

1512
来自专栏钟绍威的专栏

递归思想解决输出目录下的全部文件

刚刚了解了下递归思想 递归就是在方法内调用本方法 下面说一个实际的应用 输出目录下的全部文件,当目录中还有目录时,则进入目录输出里面的文件 import j...

1947
来自专栏Android机器圈

Java-单例模式详解(图文并茂,简单易懂)

PS:首先我们要先知道什么是单例,为什么要用单例,用的好处是什么等问题来看。 1:java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两...

34911
来自专栏JMCui

Hybris IMPEX

1、Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系。 2、基本语法:mode...

3796
来自专栏chenssy

【死磕Sharding-jdbc】---group by结果合并(2)

在sharding-jdbc源码之group by结果合并(1)中主要分析了sharding-jdbc如何在GroupByStreamResultSetMerg...

1002
来自专栏鸿的学习笔记

Python写的Python解释器(二)

玩具解释器 首先从一个玩具解释器开始,这个微型解释器只能做加法,而且值包含了三个指令,这三个指令是:

932
来自专栏Danny的专栏

【MyBatis框架点滴】——MyBatis输出映射

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1462
来自专栏Hadoop数据仓库

HAWQ技术解析(十) —— 过程语言

        HAWQ支持用户自定义函数(user-defined functions,UDF),还支持给HAWQ内部的函数起别名。编写UDF的语言可以是SQ...

4655
来自专栏菩提树下的杨过

mybatis的物理分页:mybatis-paginator

文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并。很多高大上的分布式文件系统(比如:google的GFS、taoba...

2219

扫码关注云+社区

领取腾讯云代金券