首先pom.xml:中引入redis相关的jar:

     <!--Spring整合redis包 --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>2.1.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.1</version></dependency>

新增spring-redis.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 加载配置文件 --><context:property-placeholder location="classpath:redis.properties" /><!-- redis数据源 --><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最大空闲数 --><property name="maxIdle" value="400" /><!-- 最大空连接数 --><property name="maxTotal" value="6000" /><!-- 最大等待时间 --><property name="maxWaitMillis" value="1000" /><!-- 连接超时时是否阻塞,false时报异常,ture阻塞直到超时, 默认true --><property name="blockWhenExhausted" value="true" /><!-- 返回连接时,检测连接是否成功 --><property name="testOnBorrow" value="true" /></bean><bean id="jedisConnectionFactory"class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:host-name="127.0.0.1" p:port="6379" p:pool-config-ref="poolConfig" /><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="jedisConnectionFactory" /></bean><!-- 自定义redis工具类,在需要缓存的地方注入此类 --><bean id="redisrCacheManager" class="com.wdg.redis.RedisUtil"><property name="redisTemplate" ref="redisTemplate" /></bean>
</beans>

在applicationContent.xml中导入spring-redis.xml文件:

 <import resource="classpath:spring-redis.xml" />

配置好了redis之后要做的事情是创建一个interface: IRedisUtil:

package com.wdg.redis;import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;public interface IRedisUtil {public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate);/*** 指定缓存失效时间* * @param key*            键* @param time*            时间(秒)* @return*/public boolean expire(String key, long time);/*** 根据key 获取过期时间* * @param key*            键 不能为null* @return 时间(秒) 返回0代表为永久有效*/public long getExpire(String key);/*** 判断key是否存在* * @param key*            键* @return true 存在 false不存在*/public boolean hasKey(String key);/*** 删除缓存* * @param key*            可以传一个值 或多个*/@SuppressWarnings("unchecked")public void del(String... key);// ============================String=============================/*** 普通缓存获取* * @param key*            键* @return 值*/public Object get(String key);/*** 普通缓存放入* * @param key*            键* @param value*            值* @return true成功 false失败*/public boolean set(String key, Object value);/*** 普通缓存放入并设置时间* * @param key*            键* @param value*            值* @param time*            时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return true成功 false 失败*/public boolean set(String key, Object value, long time);/*** 递增* * @param key*            键* @param by*            要增加几(大于0)* @return*/public long incr(String key, long delta);/*** 递减* * @param key*            键* @param by*            要减少几(小于0)* @return*/public long decr(String key, long delta);// ================================Map=================================/*** HashGet* * @param key*            键 不能为null* @param item*            项 不能为null* @return 值*/public Object hget(String key, String item);/*** 获取hashKey对应的所有键值* * @param key*            键* @return 对应的多个键值*/public Map<Object, Object> hmget(String key);/*** HashSet* * @param key*            键* @param map*            对应多个键值* @return true 成功 false 失败*/public boolean hmset(String key, Map<String, Object> map);/*** HashSet 并设置时间* * @param key*            键* @param map*            对应多个键值* @param time*            时间(秒)* @return true成功 false失败*/public boolean hmset(String key, Map<String, Object> map, long time);/*** 向一张hash表中放入数据,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @return true 成功 false失败*/public boolean hset(String key, String item, Object value);/*** 向一张hash表中放入数据,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @param time*            时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间* @return true 成功 false失败*/public boolean hset(String key, String item, Object value, long time);/*** 删除hash表中的值* * @param key*            键 不能为null* @param item*            项 可以使多个 不能为null*/public void hdel(String key, Object... item);/*** 判断hash表中是否有该项的值* * @param key*            键 不能为null* @param item*            项 不能为null* @return true 存在 false不存在*/public boolean hHasKey(String key, String item);/*** hash递增 如果不存在,就会创建一个 并把新增后的值返回* * @param key*            键* @param item*            项* @param by*            要增加几(大于0)* @return*/public double hincr(String key, String item, double by);/*** hash递减* * @param key*            键* @param item*            项* @param by*            要减少记(小于0)* @return*/public double hdecr(String key, String item, double by);// ============================set=============================/*** 根据key获取Set中的所有值* * @param key*            键* @return*/public Set<Object> sGet(String key);/*** 根据value从一个set中查询,是否存在* * @param key*            键* @param value*            值* @return true 存在 false不存在*/public boolean sHasKey(String key, Object value);/*** 将数据放入set缓存* * @param key*            键* @param values*            值 可以是多个* @return 成功个数*/public long sSet(String key, Object... values);/*** 将set数据放入缓存* * @param key*            键* @param time*            时间(秒)* @param values*            值 可以是多个* @return 成功个数*/public long sSetAndTime(String key, long time, Object... values);/*** 获取set缓存的长度* * @param key*            键* @return*/public long sGetSetSize(String key);/*** 移除值为value的* * @param key*            键* @param values*            值 可以是多个* @return 移除的个数*/public long setRemove(String key, Object... values);// ===============================list=================================/*** 获取list缓存的内容* * @param key*            键* @param start*            开始* @param end*            结束 0 到 -1代表所有值* @return*/public List<Object> lGet(String key, long start, long end);/*** 获取list缓存的长度* * @param key*            键* @return*/public long lGetListSize(String key);/*** 通过索引 获取list中的值* * @param key*            键* @param index*            索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推* @return*/public Object lGetIndex(String key, long index);/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, Object value);/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, Object value, long time);/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, List<Object> value);/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, List<Object> value, long time);/*** 根据索引修改list中的某条数据* * @param key*            键* @param index*            索引* @param value*            值* @return*/public boolean lUpdateIndex(String key, long index, Object value);/*** 移除N个值为value* * @param key*            键* @param count*            移除多少个* @param value*            值* @return 移除的个数*/public long lRemove(String key, long count, Object value);}

创建该接口的实现类:'

package com.wdg.redis;import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;public class RedisUtil implements IRedisUtil{private  RedisTemplate<String, Object> redisTemplate;public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {this.redisTemplate = redisTemplate;}/*** 指定缓存失效时间* * @param key*            键* @param time*            时间(秒)* @return*/public boolean expire(String key, long time) {try {if (time > 0) {redisTemplate.expire(key, time, TimeUnit.SECONDS);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 根据key 获取过期时间* * @param key*            键 不能为null* @return 时间(秒) 返回0代表为永久有效*/public long getExpire(String key) {return redisTemplate.getExpire(key, TimeUnit.SECONDS);}/*** 判断key是否存在* * @param key*            键* @return true 存在 false不存在*/public boolean hasKey(String key) {try {return redisTemplate.hasKey(key);} catch (Exception e) {e.printStackTrace();return false;}}/*** 删除缓存* * @param key*            可以传一个值 或多个*/@SuppressWarnings("unchecked")public void del(String... key) {if (key != null && key.length > 0) {if (key.length == 1) {redisTemplate.delete(key[0]);} else {redisTemplate.delete(CollectionUtils.arrayToList(key));}}}// ============================String=============================/*** 普通缓存获取* * @param key*            键* @return 值*/public Object get(String key) {return key == null ? null : redisTemplate.opsForValue().get(key);}/*** 普通缓存放入* * @param key*            键* @param value*            值* @return true成功 false失败*/public boolean set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 普通缓存放入并设置时间* * @param key*            键* @param value*            值* @param time*            时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return true成功 false 失败*/public boolean set(String key, Object value, long time) {try {if (time > 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {set(key, value);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 递增* * @param key*            键* @param by*            要增加几(大于0)* @return*/public long incr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递增因子必须大于0");}return redisTemplate.opsForValue().increment(key, delta);}/*** 递减* * @param key*            键* @param by*            要减少几(小于0)* @return*/public long decr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递减因子必须大于0");}return redisTemplate.opsForValue().increment(key, -delta);}// ================================Map=================================/*** HashGet* * @param key*            键 不能为null* @param item*            项 不能为null* @return 值*/public Object hget(String key, String item) {return redisTemplate.opsForHash().get(key, item);}/*** 获取hashKey对应的所有键值* * @param key*            键* @return 对应的多个键值*/public Map<Object, Object> hmget(String key) {return redisTemplate.opsForHash().entries(key);}/*** HashSet* * @param key*            键* @param map*            对应多个键值* @return true 成功 false 失败*/public boolean hmset(String key, Map<String, Object> map) {try {redisTemplate.opsForHash().putAll(key, map);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** HashSet 并设置时间* * @param key*            键* @param map*            对应多个键值* @param time*            时间(秒)* @return true成功 false失败*/public boolean hmset(String key, Map<String, Object> map, long time) {try {redisTemplate.opsForHash().putAll(key, map);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 向一张hash表中放入数据,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @return true 成功 false失败*/public boolean hset(String key, String item, Object value) {try {redisTemplate.opsForHash().put(key, item, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 向一张hash表中放入数据,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @param time*            时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间* @return true 成功 false失败*/public boolean hset(String key, String item, Object value, long time) {try {redisTemplate.opsForHash().put(key, item, value);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 删除hash表中的值* * @param key*            键 不能为null* @param item*            项 可以使多个 不能为null*/public void hdel(String key, Object... item) {redisTemplate.opsForHash().delete(key, item);}/*** 判断hash表中是否有该项的值* * @param key*            键 不能为null* @param item*            项 不能为null* @return true 存在 false不存在*/public boolean hHasKey(String key, String item) {return redisTemplate.opsForHash().hasKey(key, item);}/*** hash递增 如果不存在,就会创建一个 并把新增后的值返回* * @param key*            键* @param item*            项* @param by*            要增加几(大于0)* @return*/public double hincr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, by);}/*** hash递减* * @param key*            键* @param item*            项* @param by*            要减少记(小于0)* @return*/public double hdecr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, -by);}// ============================set=============================/*** 根据key获取Set中的所有值* * @param key*            键* @return*/public Set<Object> sGet(String key) {try {return redisTemplate.opsForSet().members(key);} catch (Exception e) {e.printStackTrace();return null;}}/*** 根据value从一个set中查询,是否存在* * @param key*            键* @param value*            值* @return true 存在 false不存在*/public boolean sHasKey(String key, Object value) {try {return redisTemplate.opsForSet().isMember(key, value);} catch (Exception e) {e.printStackTrace();return false;}}/*** 将数据放入set缓存* * @param key*            键* @param values*            值 可以是多个* @return 成功个数*/public long sSet(String key, Object... values) {try {return redisTemplate.opsForSet().add(key, values);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 将set数据放入缓存* * @param key*            键* @param time*            时间(秒)* @param values*            值 可以是多个* @return 成功个数*/public long sSetAndTime(String key, long time, Object... values) {try {Long count = redisTemplate.opsForSet().add(key, values);if (time > 0)expire(key, time);return count;} catch (Exception e) {e.printStackTrace();return 0;}}/*** 获取set缓存的长度* * @param key*            键* @return*/public long sGetSetSize(String key) {try {return redisTemplate.opsForSet().size(key);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 移除值为value的* * @param key*            键* @param values*            值 可以是多个* @return 移除的个数*/public long setRemove(String key, Object... values) {try {Long count = redisTemplate.opsForSet().remove(key, values);return count;} catch (Exception e) {e.printStackTrace();return 0;}}// ===============================list=================================/*** 获取list缓存的内容* * @param key*            键* @param start*            开始* @param end*            结束 0 到 -1代表所有值* @return*/public List<Object> lGet(String key, long start, long end) {try {return redisTemplate.opsForList().range(key, start, end);} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取list缓存的长度* * @param key*            键* @return*/public long lGetListSize(String key) {try {return redisTemplate.opsForList().size(key);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 通过索引 获取list中的值* * @param key*            键* @param index*            索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推* @return*/public Object lGetIndex(String key, long index) {try {return redisTemplate.opsForList().index(key, index);} catch (Exception e) {e.printStackTrace();return null;}}/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, Object value) {try {redisTemplate.opsForList().rightPush(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, Object value, long time) {try {redisTemplate.opsForList().rightPush(key, value);if (time > 0)expire(key, time);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, List<Object> value) {try {redisTemplate.opsForList().rightPushAll(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, List<Object> value, long time) {try {redisTemplate.opsForList().rightPushAll(key, value);if (time > 0)expire(key, time);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 根据索引修改list中的某条数据* * @param key*            键* @param index*            索引* @param value*            值* @return*/public boolean lUpdateIndex(String key, long index, Object value) {try {redisTemplate.opsForList().set(key, index, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 移除N个值为value* * @param key*            键* @param count*            移除多少个* @param value*            值* @return 移除的个数*/public long lRemove(String key, long count, Object value) {try {Long remove = redisTemplate.opsForList().remove(key, count, value);return remove;} catch (Exception e) {e.printStackTrace();return 0;}}}

我们就可以在Java代码里面通过注入的方式使用该文件:

package com.wdg.amqp;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.wdg.redis.RedisUtil;
import com.wdg.util.BaseController;@Controller
@RequestMapping("/amqpcontroller")
public class AmqpController extends BaseController{@Autowiredprivate RedisUtil redisService;@Override@RequestMapping(value="/pageload",produces="application/json;charset=utf-8")public @ResponseBody String pageload(@RequestBody Map<String, String> reqMap) {
/*      RabbitmqUtil.sendDataByTopicAndPattern("exchange_topic", "wdg.000", "nihao");RabbitmqUtil.sendDataByTopicAndPattern("exchange_topic", "email.111", "各种消息");RabbitmqUtil.sendDataByTopicAndPattern("exchange_topic", "news.111", "各种消息111");RabbitmqUtil.sendDataByTopicAndPattern("wdgexchange","wdg","这个是一个消息");RabbitmqUtil.sendDataByTopicAndPattern("fanoutexchange","","这个是二哥个消息");*/redisService.set("nihao","study");System.out.println(redisService.get("nihao"));return "nihao";}}

上面就可以使用redis了希望对你有所帮助:

Spring-redis基础配置相关推荐

  1. spring boot @value_spring+vue全栈开发实战-第二章Spring Boot 基础配置-笔记0302-2020

    Spring Boot 基础配置 1. Web 容器配置 2.Properties 配置 3.类型安全配置属性 1. Web 容器配置 a.常规配置 在 Spring Boot 项 目 中,可以内置 ...

  2. spring boot基础配置

    由于这张比较简单,我画了个思维导图,这样大家可以很明白我们这一张具体内容是做什么. 代码git地址:[https://github.com/FadeHub/spring-boot-learn](htt ...

  3. 深入理解Spring Redis的使用 (一)、Spring Redis基本使用

    关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么 ...

  4. Spring Web Flow —— 配置 - 001

    本文基于Spring Web Flow 2.4.5,其它版本配置方式可能略有不同,请参考相应版本的官方文档 Maven依赖 maven库查询推荐地址:http://mvnrepository.com/ ...

  5. redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作

    Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...

  6. 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo

    前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...

  7. spring 5企业级开发实战pdf_SpringBoot实战5-Spring基础-配置与注入

    接上篇<SpringBoot实战4-Spring基础-IoC容器>,通过对Spring容器的学习,并利用上文新建的项目学习Spring Bean的配置和注入的各种方式. 2 Spring ...

  8. Spring Boot——Redis安装配置与应用整合

    引言 Spring Boot默认以ConcurrentHashMap作为缓存容器,但默认的缓存容器在简单的场景使用还是可以的,而作为NoSQL的代表,Redis可以做内存数据库.消息中间件都是不错的, ...

  9. Redis基础-下载安装配置

    Nosql: NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充. 作用: 应对基于海量用户和海量数据前提下的数据处理问题. 特征: 可扩容,可伸缩 大数据量下 ...

  10. Redis基础-下载安装、配置、数据类型、指令、Jedis、持久化

    Redis基础 学习计划 1. Redis入门 (了解) (操作) 2. 数据类型 (重点) (操作) (理解) 3. 常用指令 (操作) 4. Jedis (重点) (操作) 5. 持久化 (重点) ...

最新文章

  1. uclinux内核线程的创建(转)
  2. ole2高级编程技术 pdf_别不信,21天就可以学会python,《21天学通Python》pdf免费领取...
  3. 数据结构与算法之-----链表(List)
  4. 详解MySQL双活同步复制四种解决方案
  5. WebService—规范介绍和几种实现WebService的框架介绍
  6. v-model和:model的区别
  7. Linux基础介绍【第五篇】
  8. (15) 常用管理类软件需求征集 -- 通用菜单模块管理
  9. 计算机不同领域划分依据,计算机文化基础真题(七)
  10. oracle 绑定变量语法,Delphi使用绑定变量法操作Oracle
  11. 【mediasoup 带宽估计】aimd算法2 : AimdRateControl
  12. python英文文本词性分析
  13. Illustrator CS6中文版从新手到高手pdf
  14. 10-24程序员们 节日快乐!
  15. Pyrene-PEG3400-NHS,琥珀酰亚胺酯(NHS)官能化的芘-PEG
  16. 怎么样禁止鼠标和键盘唤醒win7系统睡眠模式转载
  17. recycleview获取第一个和最后一个可见item的位置
  18. GPS导航(4):SIM908模块
  19. js经验分享 JavaScript反调试技巧
  20. 使用XXLjob中间件进行定时任务的管理

热门文章

  1. 将python3.1+pyqt4打包成exe
  2. [转载]数据库设计三大范式应用实例剖析
  3. win2008server设置问题
  4. 修改模拟器的IMEI号
  5. 定时器有几种实现方式?
  6. 某程序员吐槽:媳妇要给孩子报少儿编程班,将来继续做程序员!以后要看到穿着纸尿裤的P7!...
  7. 手把手教你重构乱糟糟的代码
  8. 某程序员面试支付宝P7,面试已通过,却因为背调没过!再进阿里失败!阿里背调,到底调啥?...
  9. 如何把百万级别的订单根据金额排序
  10. 【决战西二旗】|Redis面试热点之底层实现篇