redis - hash 实战

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不好控制

猜你喜欢

转载自blog.csdn.net/PYouLing123456789/article/details/83866735