Hash键值结构

value 其实就是一个 map 结构
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| 127.0.0.1:6379> hset user1 name cwj (integer) 1 127.0.0.1:6379> hset user1 age 18 (integer) 1 127.0.0.1:6379> hget user1 name "cwj" 127.0.0.1:6379> hset user1 name qwer (integer) 0 127.0.0.1:6379> hdel user1 name (integer) 1 127.0.0.1:6379> hset user1 name cwj (integer) 1 127.0.0.1:6379> hgetall user1 1) "age" 2) "18" 3) "name" 4) "cwj" 127.0.0.1:6379> hexists user1 name (integer) 1 127.0.0.1:6379> hlen user1 (integer) 2 127.0.0.1:6379> hmget user1 name age 1) "cwj" 2) "18" 127.0.0.1:6379> hmset user1 height 50 sex female OK 127.0.0.1:6379> hgetall user1 1) "name" 2) "cwj" 3) "age" 4) "18" 5) "height" 6) "50" 7) "sex" 8) "female" 127.0.0.1:6379> hkeys user1 1) "name" 2) "age" 3) "height" 4) "sex" 127.0.0.1:6379> hvals user1 1) "cwj" 2) "18" 3) "50" 4) "female"
|
实战
记录每个用户首页的访问量
1 2
| 127.0.0.1:6379> hincrby user1 pageview 2 (integer) 2
|
缓存
1 2 3 4 5 6 7 8 9 10 11
| public VideoInfo get(long id) { String redisKey = redisPrefix + id; Map<String, String> hashMap = redis.hgetAll(redisKey); VideoInfo videoInfo = transferMapToVideo(hashMap); if(videoInfo == null) { videoInfo = mysql.get(id); if(videoInfo != null) { redis.hmset(redisKey, transferVideoToMap(videoInfo)); } } }
|
优缺点

其余命令
1 2 3 4 5 6
| 127.0.0.1:6379> hsetnx user1 name aaa (integer) 0 127.0.0.1:6379> hincrby user1 age 2 (integer) 20 127.0.0.1:6379> hincrbyfloat user1 age 1.3 "21.3"
|
复杂度
