美文网首页Redis
Redis第5️⃣课 Hash

Redis第5️⃣课 Hash

作者: 小超_8b2f | 来源:发表于2019-04-27 11:33 被阅读1次

    一、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 。
    二、实战实例
    1. 记录网站用户每个人主页访问量
    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不好控制

    相关文章

      网友评论

        本文标题:Redis第5️⃣课 Hash

        本文链接:https://www.haomeiwen.com/subject/acwhnqtx.html