SpringBoot+Redis整合
SpringBoot+Redis整合
1.在pom.xml添加Redis依赖
<!--整合Redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--整合Redis-->
2.在application.yml配置Redis
#引入Redis 安装在Linux
jedis :
pool :
host : 192.168.13.128
port : 6379
password: 123456
timeout: 10000
config :
maxTotal: 100
maxIdle: 10
maxWaitMillis : 100000
3.在Resources添加redis.properties
#redis配置开始
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=192.168.13.128
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123456
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=1024
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=10000
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=200
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=10000
#redis配置结束
spring.redis.block-when-exhausted=true
4.配置RedisConfiguration.java类,自动注入
@Configuration
@PropertySource("classpath:redis.properties")
public class RedisConfiguration { @Value("${spring.redis.host}")
private String host; @Value("${spring.redis.port}")
private int port; @Value("${spring.redis.timeout}")
private int timeout; @Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle; @Value("${spring.redis.jedis.pool.max-wait}")
private long maxWaitMillis; @Value("${spring.redis.password}")
private String password; @Value("${spring.redis.block-when-exhausted}")
private boolean blockWhenExhausted; @Bean
public JedisPool redisPoolFactory() throws Exception{
System.out.println("JedisPool注入成功!!");
System.out.println("redis地址:" + host + ":" + port);
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
// 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
// 是否启用pool的jmx管理功能, 默认true
jedisPoolConfig.setJmxEnabled(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password);
return jedisPool;
} }
5.配置Util类:序列化类SerializeUtil,参数静态类RedisConstants,Redis基础操作类RedisUtil
public class SerializeUtil {
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
//序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
}
return null;
}
public static Object unserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
//反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
}
return null;
}
/**
* 序列化 list 集合
*
* @param list
* @return
*/
public static byte[] serializeList(List<?> list) throws Exception {
if (list == null || list.size() == 0) {
return null;
}
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
byte[] bytes = null;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
for (Object obj : list) {
oos.writeObject(obj);
}
bytes = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
} finally {
close(oos);
close(baos);
}
return bytes;
}
/**
* 反序列化 list 集合
*
* @param
* @return
*/
public static List<?> unserializeList(byte[] bytes) throws Exception {
if (bytes == null) {
return null;
}
List<Object> list = new ArrayList<Object>();
ByteArrayInputStream bais = null;
ObjectInputStream ois = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
while (bais.available() > 0) {
Object obj = (Object) ois.readObject();
if (obj == null) {
break;
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(bais);
close(ois);
}
return list;
}
}
public class RedisConstants {
public static final String spilt=":";
/**
* redis库0 保存档案树
*/
public static final Integer datebase0=0;
/**
* redis库1 保存档案树
*/
public static final Integer datebase1=1;
/**
* 1.redis库2 保存档案表格
* 2.保存分页码
*/
public static final Integer datebase2=2;
/**
* redis库3 保存档案image url
*/
public static final Integer datebase3=3;
/**
* 1.redis库4 保存手机验证码
*
*/
public static final Integer datebase4=4;
/**
* redis库5 保存身份认证信息
*/
public static final Integer datebase5=5;
/**
* redis库6 记录身份认证次数
*/
public static final Integer datebase6=6;
/**
* redis库7 记录重发次数
*/
public static final Integer datebase7=7;
/**
* redis库8 记录任务参数
*/
public static final Integer datebase8=8;
public RedisConstants() {
}
}
@Component
//@Slf4j
public class RedisUtil { private static final Log log= LogFactory.getLog(RedisUtil.class); @Autowired
private JedisPool jedisPool; public RedisUtil() {
} /**
* <p>
* 通过key获取储存在redis中的value
* </p>
* <p>
* 并释放连接
* </p>
*
* @param key
* @param indexdb 选择redis库 0-15
* @return 成功返回value 失败返回null
*/
public String get(String key,int indexdb) {
Jedis jedis = null;
String value = null;
try {
jedis = jedisPool.getResource();
jedis.select(indexdb);
value = jedis.get(key);
System.out.println(value);
// log.info(value);
} catch (Exception e) { log.error(e.getMessage());
} finally {
returnResource(jedisPool, jedis);
}
return value;
} /**
* <p>
* 通过key获取储存在redis中的value
* </p>
* <p>
* 并释放连接
* </p>
*
* @param key
* @param indexdb 选择redis库 0-15
* @return 成功返回value 失败返回null
*/
public byte[] get(byte[] key,int indexdb) {
Jedis jedis = null;
byte[] value = null;
try {
jedis = jedisPool.getResource();
jedis.select(indexdb);
value = jedis.get(key);
} catch (Exception e) { log.error(e.getMessage());
} finally {
returnResource(jedisPool, jedis);
}
return value;
}
}
6.在Controller添加操作类RedisController
@Controller
@RequestMapping(value="/redis")
public class RedisController{ @Autowired
RedisUtil redisUtil; @Autowired
AccountService accountService; @RequestMapping(value = "getRedis",method = RequestMethod.POST)
@ResponseBody
public ModelMap getRedis() throws Exception { //存储String
// redisUtil.set("20182019","这是一条测试数据1", RedisConstants.datebase1);
// Long resExpire = redisUtil.expire("20182018", 60, RedisConstants.datebase1);//设置key过期时间
// String res = redisUtil.get("20182019", RedisConstants.datebase1);
// String name = redisUtil.get("name", RedisConstants.datebase0); // //存储hash-map
// Map<String, String> map=new HashMap<String,String>();
// map.put("a","a1");
// map.put("b","a2");
// map.put("c","a2");
// redisUtil.hmset("dd",map,RedisConstants.datebase1); // List<String> list111 = (List<String>) redisUtil.getList("testlist");
// System.out.println(list111); //存储list serialize
// List<UserVO> userList=accountService.selsetUserList();
// System.out.println(userList);
// for(UserVO user:userList){
// redisUtil.lpush(RedisConstants.datebase1,"userList",user.getUserid()+"");
// redisUtil.hset("user:"+user.getUserid(),"userId",user.getUserid()+"");
// redisUtil.hset("user:"+user.getUsername(),"userName",user.getUsername()+"");
// redisUtil.hset("user:"+user.getEmail(),"usereEail",user.getEmail()+"");
//
// } //获取List数据
String userId= redisUtil.hget("userList:"+1,"userId");
String userName= redisUtil.hget("userList:"+1,"userName");
String userEmail= redisUtil.hget("userList:"+1,"userEmail");
System.out.println(userId);
System.out.println(userName);
System.out.println(userEmail); return null; } }
SpringBoot+Redis整合的更多相关文章
- 补习系列(14)-springboot redis 整合-数据读写
目录 一.简介 二.SpringBoot Redis 读写 A. 引入 spring-data-redis B. 序列化 C. 读写样例 三.方法级缓存 四.连接池 小结 一.简介 在 补习系列(A3 ...
- Springboot+redis 整合
运行环境: JDK1.7. SpringBoot1.4.7 redis3.0.4 1.生成Springboot项目,分别添加web,redis依赖,具体的maven依赖如下 <dependenc ...
- SpringBoot日记——Redis整合
上一篇文章,简单记录了一下缓存的使用方法,这篇文章将把我们熟悉的redis整合进来. 那么如何去整合呢?首先需要下载和安装,为了使用方便,也可以做环境变量的配置. 下载和安装的方法,之前有介绍,在do ...
- springBoot 官方整合的redis 使用教程:(StringRedisTemplate 方式存储 Object类型value)
前言:最近新项目准备用 redis 简单的缓存 一些查询信息,以便第二次查询效率高一点. 项目框架:springBoot.java.maven 说明:edis存储的数据类型,key一般都是Strin ...
- springboot和Redis整合
springboot简化了许多的配置,大大提高了使用效率.下面介绍一下和Redis整合的一些注意事项. 首先介绍单机版的redis整合. 1.第一步当然是导入依赖 <dependency> ...
- redis(七)---- SpringBoot和redis整合
SpringBoot和Redis整合非常简单 添加pom依赖 <dependency> <groupId>org.springframework.boot</groupI ...
- SpringBoot简单整合redis
Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...
- Redis的安装、基本使用以及与SpringBoot的整合
1.概述 Redis 是现在很流行的一个 NoSql 数据库,每秒读取可以达到10万次,能够将数据持久化,支持多种数据结构,容灾性强,易扩展,常用于项目的缓存中间件. 今天我们就来聊聊关于Redis的 ...
- Redis哨兵机制的实现及与SpringBoot的整合
1. 概述 前面我们聊过Redis的读写分离机制,这个机制有个致命的弱点,就是主节点(Master)是个单点,如果主节点宕掉,整个Redis的写操作就无法进行服务了. 为了解决这个问题,就需要依靠&q ...
随机推荐
- 带你找到五一最省的旅游路线【dijkstra算法代码实现】
算法推导过程参见[dijkstra算法推导详解] 此文为[dijkstra算法代码实现] https://www.cnblogs.com/Halburt/p/10767389.html package ...
- [开发技巧]·HTML检测输入已完成自动填写下一个内容
[开发技巧]·HTML检测输入已完成自动填写下一个内容 个人网站 --> http://www.yansongsong.cn 在上一个博客中简易实现检测输入已完成,我们实现了检测输入已完成,现在 ...
- revit融合
解决了嵌入部分也会布置砖胎膜或土方问题 1.需根据板往相应方向拉伸,创建拉伸体(非实例) 2.根据轮廓创建融合体 3.将两个物体融合 //创建平面 //创建草图平面,文档必须是族文档 Plane pl ...
- python3 Flask -day2
flask 实战第二天,url传参 当我们访问网站/的时候,会执行hell_world函数,并把这个函数的返回值返回给浏览器,这样浏览器就显示hello world了 @app.route('/') ...
- vue-render函数和插槽
Vue render函数,官方文档定义绝大部分时候我们使用template 来创建html 模板,但是纯html 和css都基本上都不具有编程能力,而当我们想使用 javascript的编程能力时,我 ...
- OPP的三大特征之封装总结
'''封装: 1.什么是封装? 封装是把什么东西装到容器中,再封闭起来 与隐藏有相似之处,但不是单纯的隐藏 官方解释:封装是指对外部隐藏实现细节,并提供简单的使用接口 封装的好处: 1.提高安全性 2 ...
- qsv文件转码mp4格式过程记录
之前帮一个朋友剪辑配音视频,源文件在爱奇艺里,特有的qsv格式让我白忙活一下午. 晚上趁着有空,在网上查找资料,翻阅了很多文件,都让我无从下手. 基本都是一个套路,转成fiv格式,再转mp4格式,但是 ...
- 前端入门24-响应式布局(BootStrap)
声明 本篇内容摘抄自以下两个来源: BootStrap中文网 感谢大佬们的分享. 正文-响应式布局(BootStrap) 这次想来讲讲一个前端开发框架:BootStrap BootStrap 目前已经 ...
- APP 技术支持
APP使用过程中,有任何问题,可以在此博客下方留言. 或者,发送邮件到邮箱:nbglsoft@163.com 反馈的任何问题,我们将在2个工作日内进行响应. 感谢大家的支持!
- Android为TV端助力:UDP协议(接收组播和单播)
private static String MulticastHost="224.9.9.98";private static int POST=19999;private sta ...