Redis学习笔记3

87 阅读2分钟

数据结构之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

  1. "title" -- 字段

  2. "greeting" -- 字段的值

  3. "content"

  4. "hello world"

  5. "author"

  6. "peter"

  7. "created_at"

  8. "1442744762.631885"

哈希的用途之存储图数据

·如果程序需要为每个数据项单独设置过期时间,那么使用字符串键。

·如果程序需要对数据项执行诸如SETRANGE、GETRANGE或者APPEND等操作,那么优先考虑使用字符串键。当然,用户也可以选择把数据存储在散列中,然后将类似SETRANGE、GETRANGE这样的操作交给客户端执行。

·如果程序需要存储的数据项比较多,并且你希望尽可能地减少存储数据所需的内存,就应该优先考虑使用散列键。

·如果多个数据项在逻辑上属于同一组或者同一类,那么应该优先考虑使用散列键。