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

缓存  也就是数据交互的缓冲区  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;
}

思路连在一块也就是

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

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

redis缓存的应用详解的更多相关文章

  1. redis缓存数据库的详解

    1,什么是redis? Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以 ...

  2. NoSQL之Redis高级实用命令详解--安全和主从复制

    Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...

  3. redis.conf 具体配置详解

    redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...

  4. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  5. redis.windows.conf配置详解

    redis.windows.conf配置详解 转自:https://www.cnblogs.com/kreo/p/4423362.html # redis 配置文件示例 # 当你需要为某个配置项指定内 ...

  6. redis.conf配置信息详解

    redis.conf配置信息详解 配置文件 # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =& ...

  7. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  8. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  9. [置顶] MVC输出缓存(OutputCache参数详解)

    1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...

随机推荐

  1. B站标题/子标题/url爬取示例(requests+re)

    #coding:utf-8 __author__ = "zhoumi" 3 import requests import re import urllib ''' 本文档目的在于获 ...

  2. 高并发WEB网站优化方案

    一.什么是高并发在互联网时代,所讲的并发.高并发,通常是指并发访问,也就是在某个时间点,有多少个访问同时到来.比如,百度首页同时有1000个人访问,那么也就是并发为1000.通常一个系统的日PV在千万 ...

  3. 关于FFMPeg-PHP你必须要知道的

    #PHP FFmpeg [![Build Status](https://secure.travis-ci.org/PHP-FFMpeg/PHP-FFMpeg.png?branch=master)]( ...

  4. jdk 1.8 开发环境配置

    计算机->右键->属性->高级系统设置->环境变量->系统变量 新建系统变量:JAVA_HOME,变量值为:C:\Program Files (x86)\Java\jdk ...

  5. DLL文件修复

    当你在Windows计算机中安装非操作系统的软件时,往往会覆盖或改写系统共享文件, 如动态链接库(.dll文件)和可执行文件(.exe文件). * 对于Windows系统来说,当用户操作不当(如非正常 ...

  6. 避免Toast重复弹出

    Toast.matkText才会创建一个新的实例 private Toast toast = null; private void checkToastResult() { if (toast != ...

  7. hihoCoder Demo Day dp

    题意:有一个机器人被困在一个的迷宫中,机器人的初始位置是,目的地是,并且它的移动方式很奇怪:只能一直向右,直到不能再向右才能把方向变成向下:只能一直向下,直到不能再向下才能把方向变成向右.迷宫中的每个 ...

  8. swift 学习之自动引用计数

    swift 学习之自动引用计数 学习和研究的主要是"实例对象和实例对象直接的相会强引用所产生的内从泄漏"和"使用闭包产生的强引用造成的内存泄漏" 注意:只有以引 ...

  9. js中的Object.defineProperty()和defineProperties()详解

    ECMAS-262第5版在定义只有内部采用的特性时,提供了描述了属性特征的几种属性.ECMAScript对象中目前存在的属性描述符主要有两种,数据描述符(数据属性)和存取描述符(访问器属性),数据描述 ...

  10. CPLD/FPGA厂商概述 .

    随着可编程逻辑器件应用的日益广泛,许多IC制造厂家涉足PLD/FPGA领域.目前世界上有十几家生产CPLD/FPGA的公司,最大的三家是:ALTERA,XILINX,Lattice,其中ALTERA和 ...