hincrby user:1:info pageview count
public videoInfo get(){
String redisKey = redisPrefix + id ;
Map<String,String> hashMap = redis.hgetAll(redisKey);
video videoInfo = transferMaptoVideo (hashMap);
if(videoInfo ==null){
videoInfo = mysql.get(id);
if(videoInfo!=null){
redis.hmset(redisKey,transferVideoToMap(videoInfo));
}
}
return videoInfo ;
}
hgetall key
#返回hash key对应所有的field和value
hvals key
#返回hash key对应的所有field 的value
hkeys key
返回hash key对应的所有的filed
hgetall user:2:info
"age"
"30"
"name"
"kaka"
"page"
"50"
hval user:2:info
"30
"kaka"
"50"
hkeys user:2:info
"age"
"name"
"page"
小心使用hgetall 尽量不要使用
api 使用
get
set setnx
incr incrby decr decrby
mset
mget
hget
hset hsetnx
hdel
hincrby
hmset
hmget
用户信息(String实现)
key user:1
value(serializable :json,xml,protobuf)
用户信息 (String 实现-v2)
set user:1:age 41
set user:1:link tv.sohu.com
用户信息 (Hash实现)
hset user:1:info age 41
三种方案 比较
命令 优点 缺点
string v1 编程简单 可能节约内存 1:序列化开销 2:设置属性要操作整个数据 。
string v2 直观 可以部分更新 1:内存占用比较大 2:key较为分散
hash 直观 节省空间 可以部分更新 1:编程稍微复杂 2:ttl不好控制