在SpringBoot中引入Redis
前言
之前我们只是在Spring中加入Redis用于session的存放,并没有对redis进行主动的存放,这次我们需要加入redis工具类来方便我们在实际使用过程中操作redis
已经加入我的github模版中:https://github.com/LinkinStars/springBootTemplate
gradle的redis依赖
//redis相关配置
compile group: 'org.springframework.session', name: 'spring-session-data-redis', version: '1.3.1.RELEASE'
spring相关配置
#redis相关配置
redis:
host: localhost
port: 6379
pool:
# 最大连接数(负值表示没有限制)
max-active: 8
# 最大阻塞等待时间(负值表示没有限制)
max-wait: 1
# 最大空闲链接
max-idle: 8
# 最小空闲链接
min-idle: 0
# 链接超时时间(毫秒)
timeout: 0
redis工具类
package com.linkinstars.springBootTemplate.util; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import java.util.concurrent.TimeUnit; /**
* Redis操作工具类
* @author LinkinStar
*/
public class RedisUtil { /**
* RedisTemplate 使用的是 JdkSerializationRedisSerializer
* StringRedisTemplate 使用的是 StringRedisSerializer
* 之后可以通过构建redisTemplate来替换序列化的方式
*/
// @Autowired
// private RedisTemplate<String, Object> redisTemplate; @Autowired
private StringRedisTemplate redisTemplate; /**
* 设置过期时间,单位秒
* @param key 键的名称
* @param timeout 过期时间
* @return 成功:true,失败:false
*/
public boolean setExpireTime(String key, long timeout) {
return redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
} /**
* 通过键删除一个值
* @param key 键的名称
*/
public void delete(String key) {
redisTemplate.delete(key);
} /**
* 判断key是否存在
* @param key 键的名称
* @return 存在:true,不存在:false
*/
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
} /**
* 字符串存储
* @param key 键
* @param value 值
*/
public void setString(String key, String value) {
redisTemplate.opsForValue().set(key, value);
} /**
* 字符串存储(同时设置超时时间)
* @param key 键
* @param value 值
* @param timeout 超时时间(以秒为单位)
*/
public void setStringAndExpireTime(String key, String value, long timeout) {
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
} /**
* 字符串取值
* @param key 键
* @return 查询成功:值,查询失败,null
*/
public String getString(String key) {
return (String) redisTemplate.opsForValue().get(key);
} /**
* 存储哈希表
* @param key 整个哈希表的键
* @param field 表中的键
* @param value 表中的值
*/
public void setHash(String key, String field, Object value) {
redisTemplate.opsForHash().put(key, field, value);
} /**
* 获取哈希表
* @param key 整个哈希表的键
* @param field 表中的键
* @return 查询成功:值,查询失败,null
*/
public Object getHash(String key, String field) {
return redisTemplate.opsForHash().get(key, field);
} /**
* 删除哈希表中的某个元素
* @param key 整个哈希表的键
* @param fields 表中的键
*/
public void deleteHash(String key, Object... fields) {
redisTemplate.opsForHash().delete(key, fields);
}
}
redis工具类初始化
/**
* session存放redis以及redis工具初始化
* @author LinkinStar
*/
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig { /**
* 封装RedisTemplate
*/
@Bean(name = "redisUtil")
public RedisUtil redisUtil() {
RedisUtil redisUtil = new RedisUtil();
return redisUtil;
}
}
redis测试使用
redisUtil.setString("xxx","xxx");
System.out.println("redis数据获取为: " + redisUtil.getString("xxx"));
redisUtil.delete("xxx");
System.out.println("redis数据获取为: " + redisUtil.getString("xxx")); redisUtil.setHash("xxxx", "a", "1");
redisUtil.setHash("xxxx", "b", "2");
redisUtil.setHash("xxxx", "c", "3"); System.out.println("redis中hash的数据为: " + redisUtil.getHash("xxxx","a"));
总结
针对于springboot来说,redis的使用与之前不同的地方是
1、不在需要手动去管理pool。
2、不再是按照原先字节数组作为键的方式去存放对象数据,而是采用key对应hashmap的方式存放数据。
3、封装工具类之后使用起来更加方便。
后期需要改进的地方
1、redis的配置需要根据项目实际情况进行修改。
2、redisTemplate序列化方式需要改变,当前的序列化方式为StringRedisSerializer,之后需要根据实际情况,可以是用别的序列化方式,需要从序列化、反序列化的速度以及序列化之后的大小来看。
3、当使用redis集群的时候,配置需要做相应的改动和处理。
在SpringBoot中引入Redis的更多相关文章
- SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...
- 由浅入深学习springboot中使用redis
很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下 这里假设已经成功创建了一个springboot项目. redis连接工厂类 ...
- (一)由浅入深学习springboot中使用redis
很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下 这里假设已经成功创建了一个springboot项目. redis连接工厂类 ...
- SpringBoot中使用Redis
在SpringBoot中使用Redis,思路如下: 查询时先查Redis缓存,如果缓存中存在信息,就直接从缓存中获取. 如果缓存中没有相关信息,就去数据库中查找,查完顺便将信息存放进缓存里,以便下一次 ...
- 在springboot中使用redis缓存,将缓存序列化为json格式的数据
背景 在springboot中使用redis缓存结合spring缓存注解,当缓存成功后使用gui界面查看redis中的数据 原因 springboot缓存默认的序列化是jdk提供的 Serializa ...
- 在SpringBoot中添加Redis
前言 在实际的开发中,会有这样的场景.有一个微服务需要提供一个查询的服务,但是需要查询的数据库表的数据量十分庞大,查询所需要的时间很长. 此时就可以考虑在项目中加入缓存. 引入依赖 在maven项目中 ...
- 你知道如何在springboot中使用redis吗
特别说明:本文针对的是新版 spring boot 2.1.3,其 spring data 依赖为 spring-boot-starter-data-redis,且其默认连接池为 lettuce ...
- SpringBoot学习笔记(10)-----SpringBoot中使用Redis/Mongodb和缓存Ehcache缓存和redis缓存
1. 使用Redis 在使用redis之前,首先要保证安装或有redis的服务器,接下就是引入redis依赖. pom.xml文件如下 <dependency> <groupId&g ...
- [SpringBoot]SpringBoot中使用redis事务
本文基于SpringBoot 2.X 事务在关系型数据库的开发中经常用到,其实非关系型数据库,比如redis也有对事务的支持,本文主要探讨在SpringBoot中如何使用redis事务. 事务的相关介 ...
随机推荐
- 【C语言编程练习】5.11 猴子吃桃子问题
1. 问题描述 有一只猴子,第一天摘下若干个桃子,当即吃掉了一半,又多吃了一个,第二天又将剩下的桃子吃掉了一半,又多吃了一个,按照这样的吃法,每天都吃前一天吃下的桃子的一半又一个.到第十天,就剩下了一 ...
- pyenv global 设置失败 pyenv local 设置就成功了 不知道啥原因
dev@PC-20190309QPVT:/mnt/c/data/htdocs/python/flaskr$ pyenv global 3.6.1dev@PC-20190309QPVT:/mnt/c/d ...
- MyBatis3系列__05查询补充&resultMap与resultType区别
1.查询补充 当你查询一条记录并且是简单查询时,情况相对简单,可以参考以下的例子: public Employee getEmpById(Integer id); 对应的xml文件中: <sel ...
- ESP32 Eclipse开发环境构建与问题总结
搞了一个多星期的eclipse环境构建,终于成功了,在此记录下期间遇到的问题. 以下为遇到的几点问题的解决方法: 1.使用的版本为V3.1版本,版本时间为2018年09月07日,可以直接在以下路径下载 ...
- 自定义类在PropertyGrid上的展示方法
自定义类在PropertyGrid上的展示方法 零.引言 PropertyGrid用来显示某一对象的属性,但是并不是所有的属性都能编辑,基本数据类型(int, double等)和.Net一些封装的类型 ...
- 实现webservice过滤器,请求日志和权限等
过滤webservice的请求日志,做权限验证功能等. 1. namespace WebApplication1 { public class SimpleWSInvokeMonitorExtensi ...
- iNode客户端“未收到服务器回应,即将强行下线,请检查终端能否正常访问网络或者与管理员联系”问题与解决方式
最后在华工校园网用户故障自助手册中找到答案,参考链接: https://max.book118.com/html/2015/0115/11423952.shtm https://wenku.baidu ...
- JavaScript / 本地存储
cookie 首先让我们先了解一下,什么是cookie,cookie是浏览器提供的一种机制,他将document.cookie的接口提供给JavaScript使其可以对cookie进行控制,但cook ...
- ueditorUE 去掉本地保存成功的提示框!
网上修改什么JS的太麻烦,这样比较暴力,仅供参考 这里直接修改的样式: ue.ready(function () { $(".edui-editor-mess ...
- 容器云技术选择之kubernetes和swarm对比
swarm和k8s本质都是容器编排服务.它们都能把底层的宿主机抽象化,然后将应用从以构建好的镜像开始,最终以docker的方式部署到宿主机上. 应该选择哪种方案作为我们的容器云服务呢? 我觉得k8 ...