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 ...
随机推荐
- Java 使用Jedis和RedisTemplate操作Redis缓存(SpringBoot)
package com.example.redis.controller; import com.example.redis.entity.User; import com.example.redis ...
- 深入浅出MYSQL数据库—思维导图[附下载链接]
源文件下载地址:https://github.com/JluTiger/schoolRecruit2020
- Redis哨兵日志说明
一.说明
- Shell编程—企业生产案例
Linux系统Shell编程—企业生产案例(一) 企业数据库可以说是重点保护对象啊,没有之一,数据在当今企业里就是生命线,因此今天就来说一说,如何通过shell脚本来检查或监控MYSQL数据库服务是否 ...
- Nginx 负载均衡演示之 upstream 参数 & location 参数
upstream 参数nginx关于upstream参数官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html upstrea ...
- spring boot 之登录拦截
登录拦截,请求的session里面有username者判断为登录状态 @Configuration public class WebSecurityConfig extends WebMvcConfi ...
- 第06组 Alpha冲刺(2/6)
队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 主要完成了上传照片模块的信息采集 具体完成了采集用户上传的照片信息.分析图像数据.比对数 ...
- oralce 超过1亿条数据的数据库表清理实践
2018-08-18 16:58 无腿鸟 阅读(331) 评论(0) 编辑 收藏 问题:当一个表的数据量超过一亿条,要删除其中的5000w条,如何处理. 如果直接使用delete语句,会涉及到到大量的 ...
- P1310 表达式的值
P1310 表达式的值 题解 1.假设有两个布尔变量 x , y x0表示使得x=0的方案数 x1表示使得x=1的方案数 y0表示使得y=0的方案数 y1表示使得y=1的方案数 | 按位或 & ...
- js 跳转到 百度指定地址定位点
js 跳转到 百度指定地址定位点 http://api.map.baidu.com/geocoder?address=北京市海淀区上地信息路9号奎科科技大厦&output=html&s ...