java本地缓存和redis缓存

  本地缓存

本地缓存存储在内存当中,实现缓存如下

首先需要引入包

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.1</version>
</dependency>
缓存服务接口:
package com.mobcb.platform.service.common;

import net.sf.ehcache.Cache;

public interface EhcacheService {

    public void clearCache(String cacheName, String cacheKey);

    public void putCache(String cacheName, String cacheKey, Object value);

    public Object getCacheValue(String cacheName, String cacheKey);

    public Cache getCache(String cacheName);

    /**
     * 设置缓存
     *
     * @param cacheName         缓存名称
     * @param cacheKey          缓存key
     * @param value             值
     * @param timeToLiveSeconds 存在时间,单位秒
     */
    public void putCache(String cacheName, String cacheKey, Object value,
            int timeToLiveSeconds);

}
EhcacheService 接口实现:
package com.mobcb.platform.service.impl.common;

import com.mobcb.platform.service.common.EhcacheService;
import javax.annotation.Resource;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;

@Service("ehcacheService")
public class EhcacheServiceImpl implements EhcacheService {

    private static Log logger = LogFactory.getLog(EhcacheServiceImpl.class);

    @Resource(name = "ehCacheManager")
    private CacheManager cacheManger;

    private boolean createCacheIfNotFound = true;

    @Override
    public void clearCache(String cacheName, String cacheKey) {
        Cache cache = getCache(cacheName);
        if (cache == null) {
            return;
        }
        cache.remove(cacheKey);

    }

    @Override
    public void putCache(String cacheName, String cacheKey, Object value) {
        Cache cache = getCache(cacheName);
        if (cache == null) {
            return;
        }
        cache.put(new Element(cacheKey, value));

    }

    @Override
    public Object getCacheValue(String cacheName, String cacheKey) {
        Cache cache = getCache(cacheName);
        if (cache == null) {
            return null;
        }
        Element element = cache.get(cacheKey);
        if (element == null || element.isExpired()) {
            return null;
        }
        return element.getObjectValue();
    }

    @Override
    public Cache getCache(String cacheName) {
        Cache cache = cacheManger.getCache(cacheName);
        if (cache == null && createCacheIfNotFound) {
            cache = (Cache) cacheManger.addCacheIfAbsent(cacheName);
        }
        if (cache == null) {
            logger.error("EHCache: cache not config and not auto created, cacheName="
                    + cacheName);
        }
        return cache;
    }

    @Override
    public void putCache(String cacheName, String cacheKey, Object value, int timeToLiveSeconds) {
        Cache cache = getCache(cacheName);
        if (cache == null) {
            return;
        }
        cache.put(new Element(cacheKey, value, timeToLiveSeconds,
                timeToLiveSeconds));
    }
}
缓存使用示例:
引入缓存服务接口
/**
 * 缓存服务
 */
@Resource(name = "ehcacheService")
private EhcacheService ehcacheService;

调用:

Object requestSource = ehcacheService.getCacheValue(
        "SHCAuth", "SHCAuthKey");
logger.info("------------------------缓存获取认证码"+requestSource+"-----------------------");

第一个参数是缓存名,第二个是缓存名下的键值

Redis缓存

原文地址:https://www.cnblogs.com/tiancaizhu/p/8600414.html

时间: 2024-10-09 17:49:56

java本地缓存和redis缓存的相关文章

为什么要用缓存服务器以及在 Java 中实现一个 redis 缓存服务

缓存服务的意义 为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度.一个 web 应用的简单结构如下图. web 应用典型架构 在这个结构中,用户的请求通过用户层来到业务层,业务层在从数据层获取数据,返回给用户层.在用户量小,数据量不太大的情况下,这个系统运行得很顺畅.但是随着用户量越来越大,数据库中的数据越来越多,系统的用户响应速度就越来越慢.系统的瓶颈一般都在数据库访问上.这个时候可能会将上面的架构改成下面的来缓解数

springboot redis 缓存对象

只要加入spring-boot-starter-data-redis , springboot 会自动识别并使用redis作为缓存容器,使用方式如下 gradle加入依赖 compile("org.springframework.boot:spring-boot-starter-data-redis:${springBootVersion}") redis configuration 中启用缓存 @Configuration @EnableCaching public class Re

java 整合redis缓存 SSM 后台框架 rest接口 shiro druid

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连

Java 使用Redis缓存工具的图文详细方法

开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java开发环境配置 (2)安装了 redis 服务: 请参考:Windows环境下使用Redis缓存工具的图文详细方法 或是: 首先你需要下载驱动包,下载 jedis.jar,确保下载最新驱动包. 在你的classpath中包含该驱动包. 一.新建一个javaweb项目. 1. 新建一个Jedis的项目.

java 整合redis缓存 SSM 后台框架

A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 集成安全权限框架shiro ;  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠D

java 整合redis缓存 SSM 后台框架 rest接口 shiro

获取[下载地址]     [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.

java 整合redis缓存 SSM 后台框架 rest接口

获取[下载地址]   QQ: 313596790   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; QQ:313596790freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池dr

java 整合redis缓存 SSM 后台框架 rest接口 shiro druid maven b

A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势D 集成安全权限框架shiro  Shiro 是一个用 Java 语言实

Redis缓存应用之Java

想必Redis这个缓存已经无人不知了,在代理的配合下已经在分布式缓存中的得到了很好的肯定,现在我们一起通过一个Java的例子全面了解Redis缓存. 首先需要安装redis,下载地址: https://github.com/MSOpenTech/redis 安装完后,在自己的安装目录 下进入cmd输入 redis-server --maxmemroy 200m :之所以需要加这个指令"--maxmemroy 200m",因为不少人会出现莫名的内存问题,正常打开后的界面是: 下面需要下载