1.项目pom.xml中添加Jedis依赖

 <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>

2.项目application.properties中添加Redis配置信息

 # Redis 相关配置
redis.host=127.0.0.1
redis.port=6379
redis.password=112233
redis.timeout=300
redis.poolMaxTotal=10
redis.poolMaxIdle=10
redis.poolMaxWait=3

3.com.xxx.redis包:

  ①RedisConfig类:读取配置文件中的Redis配置信息

 @Component
@ConfigurationProperties(prefix="redis")
public class RedisConfig { private String host;
private int port;
//秒
private int timeout;
private String password;
private int poolMaxTotal;
private int poolMaxIdle;
//秒
private int poolMaxWait; public String getHost() {
return host;
} public void setHost(String host) {
this.host = host;
} public int getPort() {
return port;
} public void setPort(int port) {
this.port = port;
} public int getTimeout() {
return timeout;
} public void setTimeout(int timeout) {
this.timeout = timeout;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public int getPoolMaxTotal() {
return poolMaxTotal;
} public void setPoolMaxTotal(int poolMaxTotal) {
this.poolMaxTotal = poolMaxTotal;
} public int getPoolMaxIdle() {
return poolMaxIdle;
} public void setPoolMaxIdle(int poolMaxIdle) {
this.poolMaxIdle = poolMaxIdle;
} public int getPoolMaxWait() {
return poolMaxWait;
} public void setPoolMaxWait(int poolMaxWait) {
this.poolMaxWait = poolMaxWait;
}
}

  ②RedisPoolFactory类:通过JedisPool的构造方法及配置参数,获取JedisPool

  

 @Service
public class RedisPoolFactory { @Autowired
private RedisConfig redisConfig; /**
* 获得的JedisPool注入Spring的容器中
* @return
*/
@Bean
public JedisPool jedisPoolFactory() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
jedisPoolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
jedisPoolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); JedisPool jedisPool = new JedisPool(jedisPoolConfig, redisConfig.getHost(),
redisConfig.getPort(), redisConfig.getTimeout(), redisConfig.getPassword(), 0); return jedisPool;
}

  ③KeyPrefix类:定义各个对象存储在Redis中的key的前缀

  

 public interface KeyPrefix {

     public int expireSeconds();

     public String getPrefix();

 }
 public abstract class BasePrefix implements KeyPrefix{

     private int expireSeconds;

     private String prefix;

     //0代表永不过期
public BasePrefix(String prefix) {
this(0,prefix);
} public BasePrefix(int expireSeconds, String prefix) {
this.expireSeconds = expireSeconds;
this.prefix = prefix;
} @Override
public int expireSeconds(){
return expireSeconds;
} @Override
public String getPrefix(){
String className = getClass().getSimpleName();
return className+":" + prefix;
} }
 public class UserKey extends BasePrefix{

     /**
* 父类构造方法
* @param prefix
*/
private UserKey(String prefix) {
super(prefix);
} private UserKey(int expireSeconds, String prefix) {
super(expireSeconds, prefix);
} public static UserKey getById = new UserKey(30, "id");
public static UserKey getByName = new UserKey(30, "name");
}

  ④RedisService类:通过JedisPool获取Jedis;通过Jedis客户端处理缓存数据

 @Service
public class RedisService { @Autowired
private RedisPoolFactory redisPoolFactory; /**
* 获取对象
* @param key
* @param clazz
* @param <T>
* @return
*/
public <T> T getRedis(KeyPrefix prefix,String key, Class<T> clazz) { JedisPool jedisPool = redisPoolFactory.jedisPoolFactory();
Jedis jedis = null;
try{
jedis = jedisPool.getResource(); String realKey = prefix.getPrefix() + key;
String value = jedis.get(realKey);
T realValue = stringToBean(value,clazz);
return realValue;
}finally{
returnToPool(jedis);
} } public <T> boolean setRedis(KeyPrefix prefix,String key, T value) { JedisPool jedisPool = redisPoolFactory.jedisPoolFactory();
Jedis jedis = null;
try{
jedis = jedisPool.getResource(); String valueStr = beanToString(value); String realKey = prefix.getPrefix() + key; if(valueStr == null || valueStr.length() <= 0) {
return false;
}
jedis.set(realKey, valueStr); return true;
}finally{
returnToPool(jedis);
} } /**
* 删除
* */
public boolean delete(KeyPrefix prefix, String key) {
JedisPool jedisPool = redisPoolFactory.jedisPoolFactory();
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
long ret = jedis.del(realKey);
return ret > 0;
}finally {
returnToPool(jedis);
}
} /**
* 增加值
* */
public <T> Long incr(KeyPrefix prefix, String key) {
JedisPool jedisPool = redisPoolFactory.jedisPoolFactory();
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
return jedis.incr(realKey);
}finally {
returnToPool(jedis);
}
} private void returnToPool(Jedis jedis){
if(null != jedis){
jedis.close();
}
} public static <T> String beanToString(T value) {
if(value == null) {
return null;
}
Class<?> clazz = value.getClass();
if(clazz == int.class || clazz == Integer.class) {
return ""+value;
}else if(clazz == String.class) {
return (String)value;
}else if(clazz == long.class || clazz == Long.class) {
return ""+value;
}else {
return JSON.toJSONString(value);
}
} @SuppressWarnings("unchecked")
public static <T> T stringToBean(String str, Class<T> clazz) {
if(str == null || str.length() <= 0 || clazz == null) {
return null;
}
if(clazz == int.class || clazz == Integer.class) {
return (T)Integer.valueOf(str);
}else if(clazz == String.class) {
return (T)str;
}else if(clazz == long.class || clazz == Long.class) {
return (T)Long.valueOf(str);
}else {
return JSON.toJavaObject(JSON.parseObject(str), clazz);
}
}
}

4. 控制层:连接Redis服务器,测试

 1      /**

        * 获取用户
      * 测试Redis服务
* @return
*/
@RequestMapping("/testRedisGet")
@ResponseBody
public Result<User> testRedis(@RequestParam("id") int id){ User user = redisService.getRedis(UserKey.getById,id + "", User.class); return Result.success(user);
} //写入Redis
@RequestMapping("/testRedisSet")
@ResponseBody
public Result<User> testRedisSet(@RequestParam("id") int id,
@RequestParam("name") String name){ User user = new User();
user.setId(id);
user.setName(name);
redisService.setRedis(UserKey.getById,id + "", user); return Result.success(user);
}

  

Java项目集成Redis的更多相关文章

  1. Spring Boot 项目集成Redis

    目录 集成方式 使用Jedis 使用spring-data-redis Redis的安装 绑定配置 获取Redis客户端 Redis工具的编写 使用 集成方式 使用Jedis Jedis是Redis官 ...

  2. Java项目配置redis

    成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...

  3. SpringBoot项目集成Redis

    一.在pom文件中添加依赖 <!-- 集成redis --> <dependency> <groupId>org.springframework.boot</ ...

  4. 谷粒 | 项目集成redis

    添加依赖 由于redis缓存是公共应用,所以我们把依赖与配置添加到了common模块下面,在common模块pom.xml下添加以下依赖 <!-- redis --> <depend ...

  5. Java项目集成SAP BO

    SAP BO报表查看需要登录SAP BO系统,为了方便公司希望将BO报表集成到OA系统中,所以参考网上资料加上与SAP BO的顾问咨询整理出一套通过Java来集成SAP BO的功能. SAPBO中的报 ...

  6. Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:Java集成应用中心。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  7. Spring Boot集成Redis集群(Cluster模式)

    目录 集成jedis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 集成spring-data-redis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 异常处理 同样的, ...

  8. Spring Boot 项目实战(四)集成 Redis

    一.前言 上篇介绍了接口文档工具 Swagger 及项目监控工具 JavaMelody 的集成过程,使项目更加健壮.在 JAVA Web 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...

  9. redis在java项目中的使用

    在上一篇文章中已经讲了redis的spring配置,这篇将会描述redis在java项目中的使用. redis存储形式都是key-value(键值对),按照存储的内容分为两种,一种是存简单数据,即数字 ...

随机推荐

  1. SSM动态切换数据源

    有需求就要想办法解决,最近参与的项目其涉及的三个数据表分别在三台不同的服务器上,这就有点突兀了,第一次遇到这种情况,可这难不倒笔者,资料一查,代码一打,回头看看源码,万事大吉 1. 预备知识 这里默认 ...

  2. Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...

  3. django验证码框架captcha

    1.安装 2.在settings.py 安装app中添加 3.添加url 4.运行makemigrations和migrate 5.运用 在form表单中定义 view中返回form表单 在前端htm ...

  4. linux 读取 USB HID鼠标坐标和点击 在 LCD上显示

    首先要,编译内核时启用了 USB HID 设备.启用了 鼠标 . 在开发板上插入usb 时会有如下提示. 可以看到,多了一个 mouse0 和 eventX 打出来的是我的 联想鼠标. 1, 在 终端 ...

  5. Jenkins构建项目帮助文档

    Jenkins构建项目帮助文档 主要步骤 一.配置jdk 1.1.   下载jdk,安装到自己电脑磁盘的Java目录下(比如:D:\Java\jdk). 1.2.   Jdk环境变量的配置: 1. 鼠 ...

  6. 【06】openlayers 切片图层

    创建地图: //OSM图层 let source = new ol.source.OSM() //切片图层tilelayer let layers = new ol.layer.Tile({ sour ...

  7. MATLAB中的Regex

    regexprep——用于对字符串进行查找并替换. regexp Definition: 用于对字符串进行查找,大小写敏感. startIndex = regexp(str,expression) 返 ...

  8. TCP IP Socket In C, 2e-chapter 1 Introduction

    本章是基础概念,建议补计算机网络基础,这里不全. 目录 1 网络,数据包,协议 2 关于地址(address) 2.1 IP地址格式 2.2 IPv4和IPv6共存 2.3 端口号 2.4 特殊地址 ...

  9. iOS开发技术 - 二维码扫描、生成

    QRecLevel:QR_ECLEVEL_H // 二维码容错率,最高为30%(即QR_ECLEVEL_H),即LOGO有大                                       ...

  10. ML-Agents(三)3DBall例子

    ML-Agents(三)3DBall例子 前一周忙着公司的考试,都没有怎么学新的,今天补上~ 之后的记录,我准备先只研究官方的示例,主要是把研究过程中的疑惑和想法记下来.首先我先补充一下如何利用GPU ...