Redis 散列类型命令
散列类型
1. hash相关的配置
在redis.conf文件中,有关hash的配置如下
hash
-max-ziplist-entries 512
hash
-max-ziplist-value 64
2. hash的介绍
散列类型(hash)的键值是一种字典结构,redis也是采用字典结构已键值对的形式存储数据,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据结构,意思是说,散列类型不能嵌套其他数据结构。一个散列键值可以包含最多2^32 -1 个字段。
2. hash相关的命令
HSET
用于在存储的关键值的散列设置字段。如果键不存在,新的key由哈希创建。如果字段已经存在于哈希值那么将被覆盖。
HSET key field
value
127.0.0.1:
6379> HSET userInfo1 username
'name'
(
integer)
1
127.0.0.1:
6379> HSET userInfo1 password
'12346'
(
integer)
1
127.0.0.1:
6379> HSET userInfo1 email
'123456@qq.com'
(
integer)
1
HGET
用于获取与字段中存储的键哈希相关联的值。
HGET
key field
127
.0.0.1:6379>
HGET userInfo1 username
"
name"
127
.0.0.1:6379>
HGET userInfo1 password
"12346"
127
.0.0.1:6379>
HGET userInfo1 email
"123456
@qq.com"
HSETNX
用于在存储的关键值的散列设置字段,只有在字段不存在。如果键不存在,新的key会被哈希创建。如果字段已经存在,该操作没有任何影响。
HSETNX key field
value
127.0.0.1:
6379> HSETNX userInfo1 username hello
(
integer)
0
127.0.0.1:
6379> HSETNX userInfo2 username hello
(
integer)
1
127.0.0.1:
6379> HGET userInfo2 username
"hello"
HMSET
命令用于设置指定字段各自的值,在存储于键的散列。此命令将覆盖哈希任何现有字段。如果键不存在,新的key由哈希创建。
HMSET key field value [field value
...]
127
.0.0.1:6379>
HMSET userInfo2 password 987654
email 123456
@163.com
OK
HMGET
用于获取与存储在键散列指定的字段相关联的值。如果字段中哈希不存在,则nil值被返回。
HMGET key field [field
...]
127.0.0.1:
6379> HMGET userInfo2 uername password email
1) (
nil)
2)
"987654"
3)
"123456@163.com"
HGETALL
用于获取存储在键的散列的所有字段和值。在返回的值是每一个字段名后跟其值,所以回复的长度是散列值两倍的大小。
HGETALL
key
127.0.0.1:
6379> HGETALL userInfo2
1)
"username"
2)
"hello"
3)
"password"
4)
"987654"
5)
"email"
6)
"123456@163.com"
HKEYS
用来获取所有字段名保存在键的哈希值。
HKEYS
key
127.0.
0.1:
6379> HKEYS userInfo2
1)
"username"
2)
"password"
3)
"email"
HVALS
用于获取在存储于 key的散列的所有值。
HVALS
key
127.0.
0.
1:
6379> HVALS userInfo2
1)
"hello"
2)
"987654"
3)
"123456@163.com"
HEXISTS
来检查哈希字段是否存在。
HEXISTS
key field
127
.0.0.1:6379>
HEXISTS userInfo2 username
(
integer) 1
127
.0.0.1:6379>
HEXISTS userInfo2 user
(
integer) 0
HLEN
用于获取包含存储于键的散列的字段的数量。
HLEN
key
127
.0.0.1:6379>
HLEN userInfo2
(
integer) 3
HINCRBY
用于增加存储在字段中存储由增量键哈希的数量。如果键不存在,新的key被哈希创建。如果字段不存在,值被设置为0之前进行操作。
HINCRBY
key field increment
127.0.0.1:
6379> HSET userInfo3 age
18
(
integer)
1
127.0.0.1:
6379> HINCRBY userInfo3 age
2
(
integer)
20
127.0.0.1:
6379> HGET userInfo3 age
"20"
127.0.0.1:
6379> HINCRBY userInfo2 username
10
(error) ERR hash
value is
not an integer
HINCRBYFLOAT
用于增加存储在key的散列值的指定字段中,并且表示为浮点数,由指定的增量。它被设置为0在执行操作之前。如果该字段包含错误类型的值或指定的增量不是可解析为浮点数,那么出错。
HINCRBYFLOAT
key field increment
127.0.
0.1:
6379> HINCRBYFLOAT userInfo3 salary
100
"100"
127.0.
0.1:
6379> HINCRBYFLOAT userInfo3 salary
100.123
"200.123"
HDEL
用于从存储在键散列删除指定的字段。如果没有这个哈希中存在指定的字段将被忽略。如果键不存在,它将被视为一个空的哈希与此命令将返回0。
HDEL key field [field
...]
127
.0.0.1:6379>
HDEL userInfo3 reslut
(
integer) 1
127
.0.0.1:6379>
HGET userInfo3 reslut
(
nil)
转载请注明原文地址: https://ju.6miu.com/read-3377.html