数据结构之HASH
类似于表的一行数据,里面可以存放多个字段。官方称之为“Redis hashes are record types structured as collections of field-value pairs. You can use hashes to represent basic objects and to store groupings of counters, among other things.”
HSET:为字段设置值
HSET 设置散列上一个或多个字段的值。
> HSET user:123 username martina firstName Martina lastName Elisa country GB
(integer) 4
> HGET user:123 username
"martina"
> HGETALL user:123
1) "username"
2) "martina"
3) "firstName"
4) "Martina"
5) "lastName"
6) "Elisa"
7) "country"
8) "GB"
HSETNX:只在字段不存在的情况下为它设置值
HGET:获取字段的值
HSTRLEN:获取字段值的字节长度
redis> HSTRLEN article::10086 title
(integer) 8 -- title字段的值"greeting"长8个字节
HLEN:获取散列包含的字段数量
redis> HLEN article::10086
(integer) 4 -- 这个散列包含4个字段
注意:需区分以上两种LEN的区别。
HEXISTS:检查字段是否存在
redis> HEXISTS article::10086 author
(integer) 1 -- 包含该字段
HDEL:删除字段
HMGET:一次获取多个字段的值
HKEYS、HVALS、HGETALL:获取所有字段、所有值、所有字段和值
redis> HGETALL article::10086
-
"title" -- 字段
-
"greeting" -- 字段的值
-
"content"
-
"hello world"
-
"author"
-
"peter"
-
"created_at"
-
"1442744762.631885"
哈希的用途之存储图数据
·如果程序需要为每个数据项单独设置过期时间,那么使用字符串键。
·如果程序需要对数据项执行诸如SETRANGE、GETRANGE或者APPEND等操作,那么优先考虑使用字符串键。当然,用户也可以选择把数据存储在散列中,然后将类似SETRANGE、GETRANGE这样的操作交给客户端执行。
·如果程序需要存储的数据项比较多,并且你希望尽可能地减少存储数据所需的内存,就应该优先考虑使用散列键。
·如果多个数据项在逻辑上属于同一组或者同一类,那么应该优先考虑使用散列键。