springboot之Redis
1.springboot之Redis配置
在学习springboot配置Redis之前先了解Redis。
1.了解Redis
Redis简介:
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)以及hash(适合存储java对象)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
2.springboot中整合Redis
由于redis没有表结构,因此要想将java对象在redis数据库中进行存储,那么必须将java对象转换成json格式之后再进行存储。
了解整合redis相关的类:RedisTemplate、ValueOperations。
RedisTemplate:作用是在给定对象和redis存储中的基础二进制数据之间执行自动序列化/反序列化。默认情况下,它使用对象的Java序列化(JdkSerialIsAsDeSerialStase)。对于字符串密集型操作,请考虑专用的{StringRedisTemplate}。
ValueOperations:springboot是通过ValueOperations类的实例对redis数据库进行添加与查询数据的,该类依赖于spring-boot-starter-data-redis。
1.配置依赖
添加Redis依赖以及gson数据格式转换依赖以及其他常用依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mymaven</groupId>
<artifactId>springboot-redis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-redis</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties> <dependencies>
<!-- springboot实现访问redis数据库 -->
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 转换json数据格式工具 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.创建pojo类并事项序列化接口
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex + "]";
}
}
3.创建访问redis数据库的类StudentRedis
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Repository;
import com.mymaven.ssmDemo.pojo.Student;
/*该类可以访问Redis*/
@Repository
public class StudentRedis {
/*
springboot已为我们配置了StringRedisTemplate以及RedisTemplate,在此处可以直接注入。
*/
@Autowired
private StringRedisTemplate stringRedisTemplate;
/*将stringRedisTemplate注入到ValueOperations中*/
@Resource(name="stringRedisTemplate")
private ValueOperations<String,String> valOpsStr; //对Redis数据库进行操作,泛型为键值对的类型 @Autowired
private RedisTemplate redisTemplate;
/*将stringRedisTemplate注入到ValueOperations中*/
@Resource(name="redisTemplate")
private ValueOperations<Object,Object> valOps; //对Redis数据库进行操作,泛型为键值对的类型
//向Redis数据库添加字符串
public void stringRedisTemplateDemo(){
valOpsStr.set("myStringKey", "myStringValue");
}
//向Redis数据库添加对象Student
public void saveStudent(Student s){
valOps.set(s.getId(),s);
}
//从Redis数据库获取对象Student
public Student getStudent(Integer id){
Student s=(Student)valOps.get(id);
return s;
}
//从Redis数据库获取字符串
public String getString(){
String s=valOpsStr.get("myStringKey");
return s;
}
}
4.配置application.properties文件
在配置文件中配置redis的常用属性。
#setting redis database name,it is type of int,default name is '0'
spring.redis.database=0
#setting redis server address,default address is 'localhost'
spring.redis.host=localhost
spring.redis.password=
spring.redis.port=6379
spring.redis.pool.min-idle=2
spring.redis.pool.max-idle=10
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
至此创建访问redis数据库的主要步骤已经完成了,接下来要做的就是创建调用StudentRedis类的测试代码测试是否能够访问。
5.测试访问redis
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.mymaven.ssmDemo.SsmDemoApplication;
import com.mymaven.ssmDemo.pojo.Student;
import com.mymaven.ssmDemo.repository.StudentRedis;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=SsmDemoApplication.class)
public class StudentServiceTest {
@Autowired
private StudentRedis studentRedis;
//@Test
public void setString(){
studentRedis.stringRedisTemplateDemo(); //该方法保存一个键值对
}
//@Test
public void getString(){
String s=studentRedis.getString(); //该方法保存一个键值对
System.out.println(s);
}
//@Test
public void setStudent(){
Student s=new Student();
s.setId(1);
s.setName("zhangsan");
s.setSex("male");
//向redis数据库中添加对象
studentRedis.saveStudent(s);
}
@Test
public void getStudent(){
//从redis数据库中获取对象
Student s=studentRedis.getStudent(1);
System.out.println(s);
}
}
这里实现了两种数据类型(String、Student类)进行存储与获取
在这个测试方法中先运行setString方法,在通过getString方法从redis数据库查询。
至此访问redis数据库的基本功能就实现了。
这里只是添加并访问了redis中value的类型为String和Student类的数据,value还可以是set,Zset,list等类型,由于时间有限,在此就不多介绍(闲的时后详细介绍以下)。
关于redis对复合类型对象(对象中包含其他对象)的案例已经实现,源码在已上传至GitHub。
https://github.com/zhouxiaopengzhang/springboot
springboot之Redis的更多相关文章
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot整合Redis、ApachSolr和SpringSession
SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- Windows环境下springboot集成redis的安装与使用
一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...
- SpringBoot系列——Redis
前言 Redis是一个缓存.消息代理和功能丰富的键值存储.StringBoot提供了基本的自动配置.本文记录一下springboot与redis的简单整合实例 官方文档:https://docs.sp ...
- SpringBoot整合Redis及Redis工具类撰写
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...
- SpringBoot 整合 Redis缓存
在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Spr ...
- 带着新人学springboot的应用04(springboot+mybatis+redis 完)
对于缓存也说了比较多了,大家对下图这一堆配置类现在应该有些很粗略的认识了(因为我也就很粗略的认识了一下,哈哈!),咳,那么我们怎么切换这个缓存呢?(就是不用springboot提供的默认的Simple ...
- SpringBoot系列十:SpringBoot整合Redis
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Redis 2.背景 Redis 的数据库的整合在 java 里面提供的官方工具包:jed ...
随机推荐
- CPU突然飙升到300%,Dubbo活动线程数直接飙到1000
转:https://mp.weixin.qq.com/s/-lSiVDfqYrKk_w-xitYBhA 背景:新功能开发测试完成后,准备发布上线,当发布完第三台机器时,监控显示其中一台机器CPU突然飙 ...
- iOS开发之如何在用户删除应用后保持一些数据
在开发过程中我们有时候在用户删除时候保存一些信息在用户下次安装应用时候使用,这个时候我们可以使用剪切版UIPasteboard的FindUIPasteboard和钥匙串keychain的使用 剪切版剪 ...
- 康哲20191114-1 每周例行报告kz404
此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10004 本周PSP 本周进度条 本周折线图 饼状图
- 小福bbs-冲刺日志(第七天)
[小福bbs-冲刺日志(第七天)] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 目前完成静态 作业的正文 小福bbs-冲刺日志(第七天) ...
- Java垃圾回收(java GC)
一.GC的阶段 对每个对象而言,垃圾回收分为两个阶段:finalization和reclamation. finalization: 指运行这个对象的finalize的方法. reclamation: ...
- JVM 类加载器深入解析以及重要特性剖析
1.类加载流程图 从磁盘加载到销毁的完整过程. 2.类加载流程图2 1.加载: 就是把二进制形式的java类型读入java虚拟机中 2.连接: 验证.准备.解析. 连接就是将已经读入到内存的类的二进制 ...
- Eclipse 的快捷键以及文档注释、多行注释的快捷键 一、多行注释快捷键
一.多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上快捷 ...
- Apache log4j 1.2 - Short introduction to log4j
Apache log4j 1.2 - Short introduction to log4jhttps://logging.apache.org/log4j/1.2/manual.html log4j ...
- Kali Linux软件更新日报20190622
Kali Linux软件更新日报20190622 (1)laudanum更新到1.0+r36-0kali3,此次更新移除了添加到webshells的链接. (2)mimikatz更新到2.2.0- ...
- Springboot项目mysql日期存储不匹配问题和在idea本地可以运行起来,但打包jar后运行报找不到mysql驱动的解决方案
修改pop.xml中scope的值,如果是具体版本号,修改为如下即可解决 <dependency> <groupId>mysql</groupId> <art ...