【五】redis数据结构之hash,命令及其时间复杂度,与string在存储结构化信息时的优缺点对比
hash
hash键值结构,其中field不能相同,value可以相同。
key field value
user:1:info name sid
age 27
email [email protected]
跟HBase类似,只是没有列族的概念。可以把key看成一行的主键,field是一行中的列,value是单元格内的值。
所有hash命令都以h开头
hset key field value 给hash key指定的field设置值,该field不存在就添加
hget key field 获取指定的hash key的field的值
hgetall key 获取指定hash key的所有的field的值 这个命令谨慎使用,量大时会堵塞
hkeys key 获取hash key的所有的field
hvals key 获取hash key的所有的value
hdel key field 删除指定的hash key的field
hexists key field 判断一个hash key的filed 是否存在,存在返回1,不存在返回0
hlen key 获取hash key field的个数
hmget key field1 field2 field3 批量获取指定hash key的field的值
hmset key field1 value1 field2 value2 field3 value3 批量设置指定hash key的field的值
时间复杂度
将用户信息缓存到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