hash

hash键值结构,其中field不能相同,value可以相同。


key                     field          value


user:1:info          name        sid


                           age           27


                           email        37024760@qq.com


跟HBase类似,只是没有列族的概念。可以把key看成一行的主键,field是一行中的列,value是单元格内的值。


所有hash命令都以h开头


hset key field value 给hash key指定的field设置值,该field不存在就添加

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash

hget key field 获取指定的hash key的field的值

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_02


hgetall key 获取指定hash key的所有的field的值  这个命令谨慎使用,量大时会堵塞

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_03


hkeys key 获取hash key的所有的field

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_04


hvals key 获取hash key的所有的value

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_05

hdel key field 删除指定的hash key的field

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_06


hexists key field 判断一个hash key的filed 是否存在,存在返回1,不存在返回0

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_07


hlen key 获取hash key field的个数

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_08


hmget key field1 field2 field3 批量获取指定hash key的field的值

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_09


hmset key field1 value1 field2 value2 field3 value3 批量设置指定hash key的field的值

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_10


时间复杂度

redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_11


将用户信息缓存到redis中选择用string还是hash的比较


string 1:把所有用户信息转成json格式存到value中。


如 key:user:1:info


value:{“id”:1,"name":"sid","age":27}


string 2: 每个属性一个key,如 


key:user:1:id


value:1


key:user:1:name


value:sid


key:user:1:age


value:27


redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比_redis数据结构之hash_12