springBoot 官方整合的redis 使用教程:(StringRedisTemplate 方式存储 Object类型value)
前言:最近新项目准备用 redis 简单的缓存 一些查询信息,以便第二次查询效率高一点。
项目框架:springBoot、java、maven
说明:edis存储的数据类型,key一般都是String,但是value可能不一样,一般有两种,String和 Object;
如果k-v都是String类型,我们可以直接用 StringRedisTemplate,这个是官方建议的,也是最方便的,直接导入即用,无需多余配置!
如果k-v是Object类型,则需要自定义 RedisTemplate。
但是本文 是采用 StringRedisTemplate 处理存储 Object类型。
1、前期准备
首先保证安装好redis(自己的 阿里云之类的服务器),并开启远程访问权限(最好配置密码)。
打开 maven 的 pom.xml 添加以下内容:
1、pom.xml 中添加 springBoot 官方整合的redis 依赖。
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.4.RELEASE</version>
</dependency> <!-- fastjson ,这个自行添加,处理json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
2、在springBoot的配置文件 application.yml 中添加 redis 信息
application.yml 中配置
spring:
#redis
redis:
database: 7 // 使用redis的db7库
host: 192.xxx.x.xxx // redis 服务器地址
port: 6379
password:
3、创建一个 StringRedisTemplate 方式实现的 redisUtil 类:
import com.alibaba.fastjson.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit; /**
* @author 路飞
* @date 2018-9-8
* @description redis工具类
*/
@Component
public class RedisUtil { private final static Logger logger = LogManager.getLogger(RedisUtil.class); @Resource
private StringRedisTemplate stringRedisTemplate; /**
* @Author 路飞
* @date 2018-09-08
* @param key redis的key
* @param value object类型的value
* @description 存储object类型数据
*/
public boolean set(String key, Object value) {
boolean result = false;
try {
// 使用 JSONObject.toJSONString() 处理要存储的数据
stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value));
result = true;
} catch (Exception e) {
logger.error("写入reids缓存失败! 错误信息为:", e);
}
return result;
} /**
* @Author 路飞
* @date 2018-09-08
* @param key redis的key
* @param value object类型的value
* @param expire 存活时间(key有效时间)
* @description 存储object类型数据
*/
public boolean set(final String key, Object value, int expire) {
boolean result = false;
try {
// 使用 JSONObject.toJSONString() 处理要存储的数据
stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value), expire, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
logger.error("写入reids缓存失败(存活时间)! 错误信息为:" + e.getMessage());
}
return result;
} /**
* @Author 路飞
* @date 2018-09-08
* @param key redis的key
* @description 根据key获取数据
*/
public Object get(final String key) {
Object result = null;
try {
String valueStr = stringRedisTemplate.opsForValue().get(key);
if (!valueStr.isEmpty()) {
result = JSONObject.parseObject(valueStr, Object.class);
}
} catch (Exception e) {
logger.error("根据key获取数据失败!错误信息为: " + e.getMessage());
}
return result;
} /**
* @Author 路飞
* @date 2018-09-08
* @param key redis的key
* @description 判断key 是否存在
*/
public boolean exists(final String key) {
boolean result = false;
try {
result = stringRedisTemplate.hasKey(key);
} catch (Exception e) {
logger.error("判断redis中是否有对应key失败!错误信息为:" + e.getMessage());
}
return result;
} }
4 、用法举例:
在某个serviceImpl中 测试:
// 注入 RedisUtil 工具类
@Resource
private RedisUtil redisUtil; @Override
public void test() {
List<实体类> list = 获取数据;
Map<String, Object> map = new HashMap<>();
map.put("哈哈哈", "我是海贼王");
map.put("dataList", list); Boolean setResult = redisUtil.set("测试key", map, 300); // 保存key,并设置有效时间300秒 if(redisUtil.exists("测试key")) { // 判断key是否参在 Object getValue = redisUtil.get("测试key"); // 根据key 获取Object类型数据
System.out.println(getValue);
} }
5、使用 RedisDesktopManager 客户端工具自行查看 自己保存的数据。
springBoot 官方整合的redis 使用教程:(StringRedisTemplate 方式存储 Object类型value)的更多相关文章
- springBoot(8)---整合redis
Springboot整合redis 步骤讲解 1.第一步jar导入: <dependency> <groupId>org.springframework.boot</gr ...
- 【SpringBoot】整合Redis实战
========================9.SpringBoot2.x整合Redis实战 ================================ 1.分布式缓存Redis介绍 简介: ...
- Shiro整合springboot,freemaker,redis(含权限系统完整源码)
区块链技术联盟 2018-02-08 17:06:40 目录 一.导语 二.shiro功能介绍 三.shiro详解 四.shiro实战案例分享 五.系统配置 六.其他 一.导语 今天推荐给大家一个非常 ...
- SpringBoot简单整合redis
Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...
- springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑)
springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑) 写在前面: 富文本编辑器,Multi-function Text Editor, 简称 MTE, 是一 ...
- SpringBoot之整合Redis
一.SpringBoot整合单机版Redis 1.在pom.xml文件中加入redis的依赖 <dependency> <groupId>org.springframework ...
- springboot整合mybatis,redis,代码(二)
一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包 ...
- springboot整合apache ftpserver详细教程(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/12192425.html,否则将追究法律责任!!! 一.Apache ftpserver相关 ...
- SpringBoot开发二十-Redis入门以及Spring整合Redis
安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...
随机推荐
- [国家集训队2012]middle(陈立杰)
我是萌萌的传送门 我是另一个萌萌的传送门 脑残错误毁一下午…… 其实题解早就烂大街了,然而很久之前我只知道是二分答案+主席树却想不出来这俩玩意儿怎么一块儿用的……今天又翻了几篇题解才恍然大悟,是把权值 ...
- Activiti学习之HelloWorld程序
流程图 部署流程定义 /** * 部署流程定义 */ @Test public void deploymentProcessDefinition() { ProcessEngine processEn ...
- Javascript之DOM的三大节点及部分用法
DOM有三种节点:元素节点.属性节点.文本节点. 一.用nodeType可以检测节点的类型 节点类型 nodeType属性值 元素节点 1 属性节点 2 文本节点 3 这样方便在js中对各个节点进行操 ...
- *p++、*++p、(*p)++区别
关于数组指针的谜题 假设 p 是指向数组 arr 中第 n 个元素的指针,那么 *p++.*++p.(*p)++ 分别是什么意思呢? *p++ 等价于 *(p++),表示先取得第 n 个元素的值,再将 ...
- winform 写入和读取TXT文件
C# winform写入和读取TXT文件 string str; str=this.textBox1.Text; StreamWriter sw = new StreamWriter(Applicat ...
- SQL Server ->> 利用CONVERT/STR/FORMAT函数把浮点型数据格式化/转换成字符串
在SQL Server下想把数字(包括浮点型和整型)转换成字符串,保留数据原本的样子或者根据需要转换成另外指定的格式可能就不仅仅是一条CAST(XXXX AS NVARCHAR)这么简单的事情了. 无 ...
- 网络协议HTTP TCP/UDP 浏览器缓存 Restful(十)
一 TCP网络协议 1 建立TCP连接:三次握手原则 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分.客户端把这段连接的序号设定为随机数 A. 服务器端应当为一个合法的SY ...
- Linux的man手册共有以下几个章节
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 1.Standard commands (标准命令) 2. ...
- Hive入门操作
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能.本文描述了HIve的一些基本操作,如有错误之处还请指出. 常用语法 #显示相关信息 sh ...
- calcurse 日程管理软件
包括有命令行与界面操作两部分: 命令行操作: 1.显示所有的 appointment and events root@zsf:/etc# calcurse -a09/15/13: - 21:35 -& ...