本实例以Redis 4.0.1 为例,来演示使用Redis命令对散列(Hash)类型数据的操作。
HSET 存放hash数据
1. 语法格式
将字段中的哈希存储在键值上。 如果密钥不存在,则创建一个保存哈希值的新密钥。 如果字段已经存在于散列中,则会被覆盖。
2.返回值
1: 如果字段是散列中的新字段,并且值被设置。
0: 如果字段已经存在于散列中,并且值已更新。
3.示例
1 2 3 4 5 6
| 127.0.0.1:6379> hset redis hello world (integer) 1 127.0.0.1:6379> hset redis nihao shijie (integer) 1 127.0.0.1:6379> hset redis nihao java (integer) 0
|
HGET 获取hash数据
1. 语法格式
返回与key中存储的哈希字段相关联的值。
2.返回值
如果存在,则返回字段相关联的值
如果不存在,返回'nil'
3.示例
1 2 3 4 5 6
| 127.0.0.1:6379> hget redis hello "world" 127.0.0.1:6379> hget redis nihao "java" 127.0.0.1:6379> hget redis world (nil)
|
HSETNX 不覆盖存放hash数据
1. 语法格式
将存储在键中的哈希值中的字段设置为值,只有当字段不存在时。 如果密钥不存在,则创建一个保存哈希值的新密钥。 如果字段已经存在,则此操作无效。
2.返回值
1:如果字段是散列中的新字段,并且值被设置。
0:如果字段已经存在于散列中,并且没有执行任何操作
3.示例
1 2 3 4
| 127.0.0.1:6379> hsetnx redis hello shijie (integer) 0 127.0.0.1:6379> hsetnx redis say hi (integer) 1
|
HMSET 批量存放hash数据
1. 语法格式
将指定的字段设置为在密钥存储的哈希值中的各自的值。 此命令将覆盖哈希中已存在的任何指定的字段。 如果密钥不存在,则创建一个保存哈希值的新密钥。
1
| HMSET key field value [field value ...]
|
2.返回值
OK
3.示例
1 2
| 127.0.0.1:6379> hmset code-language java good php nice OK
|
HMGET 批量获取存放hash数据
1. 语法格式
将指定的字段设置为在密钥存储的哈希值中的各自的值。 此命令将覆盖哈希中已存在的任何指定的字段。 如果密钥不存在,则创建一个保存哈希值的新密钥。
1
| HMGET key field [field ...]
|
2.返回值
以列表的形式返回与key中存储的哈希中指定字段相关联的值。
3.示例
1 2 3 4 5 6
| 127.0.0.1:6379> hmget code-language java hello 1) "good" 2) (nil) 127.0.0.1:6379> hmget code-language java php 1) "good" 2) "nice"
|
HEXISTS 判断数据是否存在
1. 语法格式
如果字段是存储在键中的哈希值中的现有字段,则返回。
2.返回值
1:如果哈希包含字段。
0:如果哈希不包含字段,或者键不存在。
3.示例
1 2 3 4
| 127.0.0.1:6379> hexists code-language java (integer) 1 127.0.0.1:6379> hexists code-language hello (integer) 0
|
HLEN 获取hash的数量
1. 语法格式
返回在key中存储的哈希中包含的字段数。
2.返回值
如果key存在,返回哈希中的字段数
如果key不存在,返回0
3.示例
1 2 3 4
| 127.0.0.1:6379> hlen code-language (integer) 2 127.0.0.1:6379> hlen hello (integer) 0
|
HDEL 删除key的指定字段信息
1. 语法格式
从存储在密钥的哈希中删除指定的字段。 在此散列中不存在的指定字段将被忽略。 如果键不存在,则将其视为空哈希,此命令返回0。
1
| HDEL key field [field ...]
|
2.返回值
从哈希中删除的字段数,不包括指定的但不存在的字段。
3.示例
1 2
| 127.0.0.1:6379> hdel code-language java hello (integer) 1
|
HKEYS 根据key获取所有字段信息
1. 语法格式
返回在key中存储的哈希值中的所有字段名。
2.返回值
哈希中的字段列表,或当不存在键时为空列表。
3.示例
1 2 3 4
| 127.0.0.1:6379> hkeys code-language 1) "php" 127.0.0.1:6379> hkeys hello (empty list or set)
|
HVALS 根据key获取所有字段值信息
1. 语法格式
返回在key中存储的哈希值中的所有值。
2.返回值
哈希表中的值列表,或键不存在时的空列表。
3.示例
1 2 3 4
| 127.0.0.1:6379> hvals code-language 1) "nice" 127.0.0.1:6379> hvals hello (empty list or set)
|
HGETALL 根据key获取所有字段和字段值的信息
1. 语法格式
返回存储在键中的哈希值的所有字段和值。 在返回的值中,每个字段名称后跟其值,因此回复的长度是散列大小的两倍。
2.返回值
列表中的字段及其值存储在散列中,或空列表当键不存在时。
3.示例
1 2 3 4 5
| 127.0.0.1:6379> hgetall code-language 1) "php" 2) "nice" 127.0.0.1:6379> hgetall hello (empty list or set)
|
HINCRBY 字段的增长(整数类型)
1. 语法格式
通过增量增加存储在键中的哈希中的字段中存储的数字。 如果密钥不存在,则创建一个保存哈希值的新密钥。 如果字段不存在,则在执行操作之前将该值设置为0。
HINCRBY支持的值的范围限制为64位有符号整数。
1
| HINCRBY key field increment
|
2.返回值
增量操作后的字段值。
3.示例
1 2 3 4 5 6 7 8
| 127.0.0.1:6379> hincrby code-language php 10 (error) ERR hash value is not an integer 127.0.0.1:6379> hset code-language inc 1 (integer) 1 127.0.0.1:6379> hincrby code-language inc 10 (integer) 11 127.0.0.1:6379> hget code-language inc "11"
|
HINCRBYFLOAT 字段的增长(浮点数据)
1. 语法格式
以指定的增量增加存储在键处的哈希值的指定字段,并表示浮点数。 如果增量值为负,则结果是使哈希字段值递减而不是递增。 如果该字段不存在,则在执行操作之前将其设置为0。 如果出现以下情况之一,则返回错误:
该字段包含错误类型的值(而不是字符串)。
当前字段内容或指定的增量不能作为双精度浮点数解析。
1
| HINCRBYFLOAT key field increment
|
2.返回值
增量操作后的字段值。
3.示例
1 2 3 4 5 6
| 127.0.0.1:6379> hset red-float filed 1.2 (integer) 1 127.0.0.1:6379> hincrbyfloat red-float filed 3 "4.2" 127.0.0.1:6379> hincrbyfloat red-float filed 3.5 "7.7"
|
HSTRLEN 根据key或者字段值的长度
1. 语法格式
返回与key中存储的哈希字段相关联的值的字符串长度。 如果键或字段不存在,则返回0。
2.返回值
与字段相关联的值的字符串长度,或当字段不存在于散列或键中时为零,根本不存在。
3.示例
1 2 3 4 5 6 7 8 9 10
| 127.0.0.1:6379> hmset red-str f1 hello f2 2.5 f3 2 OK 127.0.0.1:6379> hstrlen red-str hello (integer) 0 127.0.0.1:6379> hstrlen red-str f1 (integer) 5 127.0.0.1:6379> hstrlen red-str f2 (integer) 3 127.0.0.1:6379> hstrlen red-str f3 (integer) 1
|
Author:
Darren Du
License:
Copyright (c) 2019 MIT LICENSE