• redis缓存的应用详解


    在现在的很多项目,基本上都需要引入缓存机制,那么缓存到底是什么呢?

    缓存  也就是数据交互的缓冲区  Cache 

    在java-web项目中实现缓存,也就是需要首先把数据库需要用到的数据备份一份作为副本,当我们以同样的url请求的时候,这时候就不需要再次调用查询数据库的操作,只需要把提前预存的副本拿出来即可。

    这样的好处也就不言而喻,不仅可以加快执行命令的速度,而且需要用到的流量更少

    下面我们通过添加一个大广告的程序来引入和解析缓存

    1 首先在查询大广告的时候

    try {
    //尝试从Redis中取出数据
    String hgetresult = jedisDao.hget(INDEX_CONTENT_REDIS_KEY, contentCategoryId+"");
    //判断字符串是否为空
    if (!StringUtils.isBlank(hgetresult)) {
    List<TbContent> jsonToList = (List<TbContent>)JsonUtils.jsonToList(hgetresult,TbContent.class);
    System.out.println("从缓存中取出首页信息");
    return jsonToList;
    }
    } catch (Exception e) {
    // TODO: handle exception
    }

    INDEX_CONTENT_REDIS_KEY就是保存在redis中的key,

    hget为获取指定id的缓存数据的方法

    //将数据库中查询到的内容存在Redis缓存中
    //转字符串
    String json = JsonUtils.objectToJson(list);
    try {
    jedisDao.hset(INDEX_CONTENT_REDIS_KEY, contentCategoryId+"", json);
    System.out.println("存入缓存");
    } catch (Exception e) {
    // TODO: handle exception
    }
    return list;

    2  在我们真正插入新广告的时候需要清空旧缓存,这时候代码如下

    HttpClientUtil.doGet(REST_BASE_URL+REST_INDEX_CONTENT_URL+"/"+content.getCategoryId());

    这句代码的主要含义是请求到hdel函数内,清空指定id 的缓存

    @Override
    public long hdel(String hkey, String key) {
    Jedis jedis = jedisPool.getResource();
    // TODO Auto-generated method stub
    Long hdel = jedis.hdel(hkey, key);

    jedis.close();
    return hdel;
    }

    思路连在一块也就是   

    当我们新添加一个数据的时候,这时候旧的缓存已经过时了,直接清空需要更新的缓存,添加完成回到查询界面,根据缓存是否为空来判断是否需要更新缓存,如果为空,则更新最新缓存

    这样像广告这种消耗大量流量并且需要重复请求的,只需要请求本地缓存就可以了。

  • 相关阅读:
    设计模式学习--面向对象的5条设计原则之单一职责原则--SRP
    设计模式学习--面向对象的5条设计原则(转)
    oracle 存储过程创建报错 Procedure created with compilation errors
    查看临时表空间占用最多的用户与SQL
    查看表空间文件以及利用率、修改、删除表空间文件大小
    aliyun阿里云alibabaMaven仓库地址——加速你的maven构建
    快速配置java环境变量
    oracle 月份中日的值必须介于 1 和当月最后一日之间
    Oracle 修改dmp的表空间
    oracle 空表导出dmp会报错
  • 原文地址:https://www.cnblogs.com/blogsofmy/p/8029701.html
Copyright © 2020-2023  润新知