慕课网-一站式学习Redis从入门到高可用分布式实践-第2章-API的理解和使用-hash
hash
1.哈希键值结构


2.特点
1)Mapmap?
2)Small redis
3)field 不能相同,value可以相同
3.重要API
1)hget
获取hash key对应的field的value
hget key field
o(1)
2)hset
设置hash key对应的field的value
hset key field value
o(1)
3)hdel
删除hash key对应的field的value
hdel key field
o(1)
hset user:1:info age 23 hget user:1:info age hset user:1:info name ronaldo hgetall user:1:info hdel user:1:info age hgetall user:1:info
4)hexists
判断hash key是否有field
hexists key field
o(1)
5)hlen
获取hash key field的数量
hlen key
o(1)
hgetall user:1:info hexists user:1:info name hlen user:1:info
6)hmget
批量获取hash key的一批field对应的值
hmget key field1 field2 ... fieldN
o(n)
7)hmset
批量设置hash key的一批field value
hmset key field1 value1 field2 value2 ... fieldN valueN
o(n)
hmset user:2:info age 30 name kaka page 50 hlen user:2:info hmget user:2:info age name
实现如下功能
1.记录网站每个用户个人主页的访问量
hincrby user:1:info pageview count
2.缓存视频的基本信息(数据源在mysql中)伪代码
public VideoInfo get(long id) {
String redisKey = redisPrefix + id;
Map<String,String> hashMap = redis.hgetAll(redisKey);
VideoInfo videoInfo = transferMapToVideo(hasMap);
if (videoInfo == null) {
videoInfo = mysql.get(id);
if (videoInfo != null) {
redis.hmset(redisKey, transferVideoToMap(videoInfo));
}
}
return videoInfo;
}
8)hgetall
返回hash key对应所有的field和value
hgetall key
o(n)
9)hvals
返回hash key对应所有的value
hvals key
o(n)
10)hkeys
返回hash key对应所有的field
hkeys key
o(n)
hgetall user:2:info hvals user:2:info hkeys user:2:info
小心使用hgetall,小心使用牢记单线程
string 对比 hash

哈希 = small redis
如何更新用户属性?
方法一

方法二

方法三
hash 修改

hash添加

三种方案比较

查缺补漏
11)hsetnx
设置hash key对应的field的value(如field已经存在,则失败)
hsetnx key field value
o(1)
12)hincrby
hash key对应的field的value自增intCounter
hincrby key field intCounter
o(1)
13)hincrbyfloat
hincrby浮点版型
hincrbyfloat key field intCounter
o(1)
哈希总结

posted on 2019-11-14 15:21 herisson_pan 阅读(15) 评论(0) 收藏 举报
浙公网安备 33010602011771号