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 ...
随机推荐
- [Shell]Docker remote api未授权访问漏洞(Port=2375)
0x01 简介 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. Docke ...
- Spring|@Autowired与new的区别
前两天写代码的时候遇到一个问题,通过new出来的对象,自动注入的属性总是报空指针的错误.到网上查了资料,才发现问题所在,同时也加深了自己对于容器IOC的理解.现在把这个问题记录一下,仅供大家参考. [ ...
- Ubuntu+QEMU+Xv6环境搭建
操作系统:Ubuntu 16.04 32位 虚拟机:VMware 模拟器:QEMU 之前有一台centos 64位虚拟机,使用源码安装配置环境,出了一些列问题,最终环境都已经配好了,也能够在qemu上 ...
- ubuntu之路——day10.7 提高模型的表现
总结一下就是在提升偏差的方面(即贝叶斯最优误差和训练误差的差距) 1.尝试更大更深的网络 2.加入优化算法比如前面提过的momentum.RMSprop.Adam等 3.使用别的神经网络架构比如RNN ...
- 第06组 团队Git现场编程实战
一.组员职责分工 队员姓名 主要分工 朱庆章 测评福州最受欢迎的商圈(参考人气) 陈梦雪 测评福州最受欢迎的商圈(参考人气) 关文涛 分别测评福州人均消费50以下,50-100.100-200.200 ...
- im6q中的: pad csi
pad 管脚 pad control: 管脚控制 csi:CMOS serial interface, 即和CMOS摄像头的通信接口. imx 芯片的非常好的在线资料: https://www.dig ...
- 深度学习面试题05:激活函数sigmod、tanh、ReLU、LeakyRelu、Relu6
目录 为什么要用激活函数 sigmod tanh ReLU LeakyReLU ReLU6 参考资料 为什么要用激活函数 在神经网络中,如果不对上一层结点的输出做非线性转换的话,再深的网络也是线性模型 ...
- PostgreSQL查看版本信息
1.查看客户端版本 psql --version 2.查看服务器端版本 2.1 查看详细信息 select version(); 2.2 查看版本信息 show server_version; 2.2 ...
- 正则表达式检测IP地址与端口号是否合法
正则表达式检测IP地址与端口号是否合法,代码如下: 正则表达式检测IP地址 public static bool CheckAddress(string s) { bool isLegal = fal ...
- Mysql| 组合where子句过滤数据(AND,OR,IN,NOT)
ysql 允许使用多个where子句,组合where子句允许使用两种方式使用:AND 和OR子句的方式使用.数据库中的操作符号:AND , OR , IN , NOT. AND:SELECT * FR ...