Redis 数据库支持多种数据类型,主要有:StringListSetSorted SetHash 等,每种数据类型都有其各自的特点。

一、hash 类型

hash 类型的数据类似于 HashTable,添加、删除和修改操作的时间复杂度都是 O(1),hash 类型适合存储对象。在 redis 内部,为了节省内存,使用 zipmap 的方式来存储 hash 结构, zipmap 并不是真正意义上的的 HashTable,添加、删除和修改的时间复杂度为 O(n),但是可以节省不少的内存开销,如果数据结构中的 filed 或者 value 超出了一定的限制,redis 会自动将 zipmap 转换成 HashTable 来存储。

二、hash 类型支持的命令行命令

hset key field value:设置 key 对应的 HashTable 中域 field 对应的值为 value;

hget key field:返回 key 对应的 HashTable 中域 field 对应的值;

hmget key field1...fieldN:返回 key 对应的 HashTable 中 field1 至 fieldN 依次对应的值;

hmset key field1 value1...fieldN valueN:依次将 key 对应的中 HashTable 中 field1 至 fieldN 对应的值设定为 value1 至 valueN;

hincrby key field integer:将 key 对应的 HashTable 中域 field 对应的值增加 integer;

hexists key field:查看 key 对应的 HashTable 中是否存在 field 域;

hdel key field:删除 key 对应的 HashTable 中的 field 域;

hlen key:返回 key 对应的 HashTable 中全部域数量;

hkeys key:返回 key 对应的 HashTable 中的全部域的名称;

hvals key:返回 key 对应的 HashTable 中的全部域的值;

hgetall key:返回 key 对应的 HashTable 中的全部域和值的关联序列;