这里使用的是 Spring-4.3 , redis-2.8 的版本
 
1、添加maven依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
2、编写自己的redisAPI

package com.del.tools;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool; /**
* 用于缓存的数据访问对象
* @author Domi
*/
public class RedisAPI { //引入jedis连接池对象
public JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
} /**
* 缓存的设置
*/
public boolean set(String key,String value){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set(key,value);
return true;
} catch (Exception e) {
// TODO: handle exceptionr
e.printStackTrace();
}finally{
returnResource(jedisPool, jedis);
}
return false;
} /**
* 判断缓存中是否存在某个key值
*/
public boolean exist(String key){
Jedis jedis =null;
try {
jedis = jedisPool.getResource();
return jedis.exists(key);
} catch (Exception e) {
// TODO: handle exception
}finally{
returnResource(jedisPool, jedis);
System.out.println("关闭成功===》");
}
return false;
} /**
* 获得缓存中的key
*/
public String get(String key){
String value = null;
Jedis jedis =null;
try {
jedis = jedisPool.getResource();
value = jedis.get(key);
} catch (Exception e) {
// TODO: handle exception
}finally{
returnResource(jedisPool, jedis);
}
return value;
} /**
* 返还jedisPool
*/
public static void returnResource(JedisPool jedisPool,Jedis jedis){
if (jedis!=null) {
jedisPool.returnResource(jedis);
}
}
}
 
3、用spring管理redis的bean组件

<!-- jedis连接池配置-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="1000"/> <!-- 控制一个pool可分配多少个jedis实例 -->
<property name="maxIdle" value="200" /> <!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 -->
<property name="maxWaitMillis" value="2000" /> <!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException -->
<property name="testOnBorrow" value="true" /> <!-- 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的 -->
</bean> <!-- 连接jedis服务器 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
<constructor-arg ref="jedisPoolConfig"/>
<constructor-arg value="127.0.0.1"/>
<constructor-arg value="6379"/>
</bean> <!-- 配置redisAPI -->
<bean id="redisAPI" class="com.del.tools.RedisAPI">
<property name="jedisPool" ref="jedisPool"/>
</bean>
 
4、在业务中使用redisAPI
/*
* 根据userID查询购物车列表
* 使用redis缓存
*/
@RequestMapping(value="/list")
public ModelAndView doBuyCarList(HttpSession session){ ModelAndView madnv = new ModelAndView();
User user = (User)session.getAttribute("hasLogin");
if(user!=null){ //先判斷redis裡面有沒有值
List<BuyCar> buycarlist1 = null;
buycarlist1 = buyCarService.findBuyCarList(user.getUserid());
String buycarlist = JSON.toJSONString(buycarlist1,true);
redisAPI.set("carlist"+user.getUserid(), buycarlist);
madnv.addObject("buycarlist", buycarlist1);
System.out.println("buycarlist====="+buycarlist1);
System.out.println("FROM DB==>"); }else{
String buycarlist = redisAPI.get("carlist"+user.getUserid());
if (buycarlist!=null && !"".equals(buycarlist)) {
buycarlist1 =JSON.parseArray(buycarlist, BuyCar.class);
madnv.addObject("buycarlist", buycarlist1);
System.out.println("buycarlist====="+buycarlist);
System.out.println("FROM REDIS==>");
}else{
System.out.println("error==>");
}
}
}
madnv.setViewName("buycar/shopping.jsp");
return madnv;
}

redis—Spring中redis缓存的简单使用的更多相关文章

  1. 分布式数据存储 之 Redis(二) —— spring中的缓存抽象

    分布式数据存储 之 Redis(二) -- spring中的缓存抽象 一.spring boot 中的 StringRedisTemplate 1.StringRedisTemplate Demo 第 ...

  2. java项目中ehcache缓存最简单用法

      java项目中ehcache缓存最简单用法: 1.下载ehcache-core-2.4.3.jar复制到项目的lib目录下 2.新建ehcache.xml文件,放置在项目src目录下的resour ...

  3. 浅析redis缓存 在spring中的配置 及其简单的使用

    一:如果你需要在你的本地项目中配置redis.那么你首先得需要在你的本地安装redis 参考链接[http://www.runoob.com/redis/redis-install.html] 下载r ...

  4. spring中使用缓存

    一.启用对缓存的支持 Spring 对缓存的支持最简单的方式就是在方法上添加@Cacheable和@CacheEvict注解, 再添加注解之前,必须先启用spring对注解驱动的支持,基于java的配 ...

  5. spring中配置缓存—ehcache

    常用的缓存工具有ehcache.memcache和redis,这里介绍spring中ehcache的配置. 1.在pom添加依赖: <!-- ehcache 相关依赖 --> <de ...

  6. Spring中ClassPathXmlApplicationContext类的简单使用

    转自:http://www.cnblogs.com/shyy/archive/2011/09/29/2453057.html 一.简单的用ApplicationContext做测试的话,获得Sprin ...

  7. spring中的缓存--Caching

    1.spring从3.1开始支持缓存功能.spring 自带的缓存机制它只在方法上起作用,对于你使用其他持久化层的框架来讲,是没有影响的,相对来讲这种缓存方式还是不错的选择. 2.提供缓存的接口:or ...

  8. 转:spring中InitailizingBean接口的简单理解

    转自:https://www.cnblogs.com/wxgblogs/p/6849782.html spring中InitializingBean接口使用理解   InitializingBean接 ...

  9. spring中redistemplate不能用通配符keys查出相应Key的问题

    有个业务中需要删除某个前缀的所有Redis缓存,于是用RedisTemplate的keys方法先查出所有合适的key,再遍历删除.但是在keys(patten+"*")时每次取出的 ...

随机推荐

  1. POJ 1947 Rebuilding Road(树形DP)

    Description The cows have reconstructed Farmer John's farm, with its N barns (1 <= N <= 150, n ...

  2. Ext3.4--TreeGridDemo

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CategoryProper ...

  3. NUC970烧录文件系统

    燒錄U-Boot依照下列步驟將編譯完成的U-Boot燒錄至NAND Flash/SPI Flash/eMMC 中.U-Boot的編譯方法請參考4.3章節.3.11.1 燒錄所需檔案4. u-boot. ...

  4. c#图片生成png格式和原图不同

    下面这种,会生成和原图类似的图片,png格式的图片该是空的地方仍旧是空的

  5. poj_3321 线段树/树状数组

    题目大意 一个果树(每个节点的分叉数目不固定)上有N个分叉点(包括最末的叶节点),则有N-1条边,将分叉点进行从1到N编号,每个分叉点上均可以结水果.开始的时候,每个分叉点都有一个水果,之后进行一系列 ...

  6. java高级---->Thread之FutureTask的使用

    FutureTask类是Future 的一个实现,并实现了Runnable,所以可通过Excutor(线程池) 来执行,也可传递给Thread对象执行.今天我们通过实例来学习一下FutureTask的 ...

  7. intellij IDEA 报 非法字符 \65279 原因及解决方法

    用eclipse创建的项目导入到 intellij IDEA 之后 编译时包 非法字符 '\65279' 该问题产生的原因是 IDEA对以UTF8编码的文件保存时自动加上了BOM(UTF-8文件签名) ...

  8. angular -- post请求该如何使用?

    angularjs 的post 请求该如何调用? 简单示例: // post 携带参数访问 $http({ method:'post', url:postUrl, data:{name:"a ...

  9. 手机联系人信息获取(contacts) ---- HTML5+

    模块:contacts Contacts模块管理系统通讯录,用于可对系统通讯录进行增.删.改.查等操作.通过plus.contacts获取系统通讯录管理对象. 对象:联系人对象(属性:电话,地址等)针 ...

  10. pycharm 和 Anaconda 下的 opencv 安装

    学习真的切忌三天打鱼两天晒网!! 一开始python下的opencv已经都弄好了,中间电脑坏了一次,好久没有接触这个,就全部都忘完了.深感惋惜. 今天又从新安装了一下opencv.在anaconda下 ...