zoukankan      html  css  js  c++  java
  • 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;
    }

    思路连在一块也就是   

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

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

  • 相关阅读:
    Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020
    浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛
    Educational Codeforces Round 97 (Rated for Div. 2)
    2018icpc南京区域赛的补题
    天梯赛的一些题目
    djangorestful framework (三)学习
    rest-framework之版本控制
    rest-framework之响应器(渲染器)
    rest-framework之分页器
    rest-framework之频率控制
  • 原文地址:https://www.cnblogs.com/blogsofmy/p/8029701.html
Copyright © 2011-2022 走看看