Redis之HASH
Posted 林深时见鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis之HASH相关的知识,希望对你有一定的参考价值。
HASH 哈希
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
示例
HSET key field value
-- 设置 key 指定的哈希集中指定字段的值
> hset myhash field1 Hello
hget
-- 获取指定的hash field。
> hget myhash field1
"Hello"
> hget myhash field3
(nil)
由于数据库没有field3,所以取到的是一个空值nil.
HSETNX key field value
-- 只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。
> hsetnx myhash field "Hello"
(integer) 1
> hsetnx myhash field "Hello"
(integer) 0
第一次执行是成功的,但第二次执行相同的命令失败,原因是field已经存在了。
hmset
-- 同时设置hash的多个field。
> hmset myhash field1 Hello field2 World
> OK
hmget
-- 获取全部指定的hash filed。
> hmget myhash field1 field2 field3
1) "Hello"
2) "World"
3) (nil)
hincrby
-- 指定的hash filed 加上给定值。
> hset myhash field3 20
(integer) 1
> hget myhash field3
"20"
> hincrby myhash field3 -8
(integer) 12
> hget myhash field3
"12
hexists
-- 测试指定field是否存在。
> hexists myhash field1
(integer) 1
> hexists myhash field9
(integer) 0
通过上例可以说明field1存在,但field9是不存在的。
hdel
从 key 指定的哈希集中移除指定的域
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field"
3) "field2"
4) "field3"
127.0.0.1:6379> hdel myhash field
(integer) 1
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field2"
3) "field3"
127.0.0.1:6379>
hlen
-- 返回指定hash的field数量。
> hlen myhash
(integer) 4
hkeys
-- 返回hash的所有field。
> hkeys myhash
> 1) "field2"
> 2) "field"
> 3) "field3"
说明这个hash中有3个field。
hvals
-- 返回hash的所有value。
> hvals myhash
1) "World"
2)"Hello"
3)"12"
说明这个hash中有3个field。
hgetall
-- 获取某个hash中全部的filed及value。
> hgetall myhash
1) "field2"
2) "World"
3) "field"
4) "Hello"
5) "field3"
6) "12"
hvals
-- 返回 hash 的所有 value。
127.0.0.1:6379> hvals myhash
1) "hello"
2) "hello"
3) "hello2"
4) "12"