一、API
命令 | 解释 |
---|---|
hget key field | 获取存储在哈希表中指定字段的值。 |
hgetall key | 获取在哈希表中指定 key 的所有字段和值 |
hset key field value | 将哈希表 key 中的字段 field 的值设为 value |
hsetnx key field value | 只有在字段 field 不存在时,设置哈希表字段的值 |
hmget key field1 field2... | 获取所有给定字段的值 |
hmset key field1 value1 field2 value2... | 同时将多个键值对设置到哈希表 key 中 |
hlen key | 获取hash表中字段的数量 |
hkeys key | 获取hash表中的key |
hval | 获取哈希表中所有值 |
hdel key key1 [key2] | 删除一个或多个哈希表字段 |
hexists key value | 查看哈希表 key 中,指定的字段是否存在。 |
hincrby key field int | 为哈希表 key 中的指定字段的整数值加上增量 increment 。 |
hincrbyfloat key field float | 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 |
二、实战实例
- 记录网站用户每个人主页访问量
hincrby user:1:info pageview count
2.缓存视频的基本信息(数据源在mysql中)伪代码
public VedioInfo get(long id) {
String redisKey = redisPrefix + id;
Map<String,String> hashMap = redis.hgetAll(redisKey);
VedioInfo info = transferMapToVedio(hashMap);
if(info == null) {
info = mysql.getById(id);
if(info != null)
redis.mset(redisKey,transferVedioToMap(info));
}
return vedioInfo;
}
三、特点
MapMap ? small Redis!
四、Hash VS String 3种存储方案比较
方案 | 优点 | 缺点 |
---|---|---|
map存成字符串 | 编程简单,可节约内存 | 1.序列化开销 2.设置属性要操作整个数据 |
map的每个属性 分别存成不同的key |
直观,可以部分更新 | 1.内存占用比较大 2.key较为分散 |
hash | 直观,节省空间,部分更新 | 1.编程稍微复杂 2.ttl不好控制 |
网友评论