使用Redis
Spring Boot提供了spring-boot-starter-data-redis
这样一个Starter,通过加入这样一个依赖,会自动配置RedisConnectionFactory,默认是基于Lettuce的实现。然后会基于RedisConnectionFactory自动配置RedisTemplate和基于String操作的StringRedisTemplate。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
默认连接的Redis主机是localhost,端口号是6379。可以通过spring.redis.host
指定需要连接的主机,通过spring.redis.port
指定需要连接的主机端口号。比如下面指定了需要连接的Redis主机地址是192.168.0.104
,端口号是6378。
spring.redis.host=192.168.0.104
spring.redis.port=6378
接着就可以按照Spring Data Redis中使用RedisTemplate和StringRedisTemplate的用法进行Redis的基本操作了。下面的代码中通过StringRedisTemplate设置了key1为一个String类型的缓存,为其指定了值和缓存失效时间。key2为List类型的缓存,每次都从最左边存入一个值,一共存了10个,然后再从Redis中获取key2对应的值依次输出。
@Autowired
private StringRedisTemplate stringRedisTemplate;
public void basicOperation() {
BoundValueOperations<String, String> boundValueOps = this.stringRedisTemplate.boundValueOps("key1");
boundValueOps.set("test string value", 60, TimeUnit.MINUTES);
BoundListOperations<String, String> boundListOps = this.stringRedisTemplate.boundListOps("key2");
for (int i=0; i<10; i++) {
boundListOps.leftPush("V_" + (i*10 + i+1));
}
List<String> list = boundListOps.range(0, boundListOps.size());
list.forEach(System.out::println);
}
Redis中存放Key和Value也可以是Java对象,对象默认会被序列化后再写入到Redis,然后读取的时候会被反序列化。下面的代码就是往Redis中存入Java对象的示例,Key和Value都可以是对象。
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
public void operForUser() {
User user = new User();
user.setId(1L);
user.setUsername("zhangsan");
user.setName("张三");
ValueOperations<Object, Object> opsForValue = this.redisTemplate.opsForValue();
opsForValue.set(user, user);
Object object = opsForValue.get(user);
System.out.println(object);
System.out.println("================================================");
opsForValue.set("user::" + user.getId(), user);
object = opsForValue.get("user::" + user.getId());
System.out.println(object);
}
@Data
public static class User implements Serializable {
private static final long serialVersionUID = -1479529526911953462L;
private Long id;
private String username;
private String name;
}
Spring Boot自动配置Redis会将相关配置属性绑定到org.springframework.boot.autoconfigure.data.redis.RedisProperties
类,更多的配置信息可以参考该类的API文档或源代码,比如配置连接池信息,配置数据库索引等。
Reactive
如果需要基于Reactive编程,则可以添加spring-boot-starter-data-redis-reactive
依赖,这样org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration
自动配置类将会生效,它会为我们自动创建一个ReactiveRedisTemplate类型的bean。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
之后就可以通过ReactiveRedisTemplate基于Reactive进行编程了。下面是一个简单的示例。
@Autowired
private ReactiveRedisTemplate<Object, Object> reactiveRedisTemplate;
public void reactive() {
ReactiveValueOperations<Object, Object> opsForValue = this.reactiveRedisTemplate.opsForValue();
User user = new User();
user.setId(1L);
user.setUsername("zhangsan");
user.setName("张三");
String key = "user::" + user.getId();
Mono<Boolean> mono = opsForValue.set(key, user);
if (mono.block()) {
Mono<Object> mono2 = opsForValue.get(key);
mono2.blockOptional().ifPresent(System.out::println);
}
ReactiveListOperations<Object, Object> opsForList = this.reactiveRedisTemplate.opsForList();
String listKey = "list1";
opsForList.leftPushAll(listKey, "A", "B", "C", "D", "E").subscribe();
Flux<Object> flux = opsForList.range(listKey, 0, 10);
flux.subscribe(System.out::println);
}
(注:本文基于Spring Boot 2.0.3所写)
相关推荐
spring boot —— redis 缓存注解使用教程 示例项目地址: 依赖 在pom文件添加如下依赖 <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-redis 配置 在application.yml配置文件添加...
项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Spring boot Jpa,可快速高效对数据进行操作,消除了大量传统XML配置SQL的代码,分页...
springboot集成redis ————使用Spring Data Redis的方式,简单的使用opsForValue的方式来进行完整的增删改查功能,包括数据库,直接导入便可使用
Spring Boot Spring、Spring MVC、MyBatis Redis、Kafka、Elasticsearch Spring Security、Spring Actuator 开发环境 构建工具:Apache Maven 集成开发工具:IntelliJ IDEA 数据库:MySQL、Redis 应用服务器:Apache...
第10 章 Spring Boot 开发部署与测试 407 10.1 开发的热部署 407 10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 ...
基于springboot下对mysql,mongodb,redis支持ipv6的改造(csdn)————程序
第10 章 Spring Boot 开发部署与测试 407 10.1 开发的热部署 407 10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 ...
第10 章 Spring Boot 开发部署与测试 407 10.1 开发的热部署 407 10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 ...
例如想在spring中使用redis,只需要在项目中包含 spring-boot-starter-redis 依赖就可以使用了,所有的starters遵循一个相似的命名模式:spring-boot-starter-,在这里是一种特殊类型的应用程序。该命名结构可以帮你...
使用Spring Boot、Shiro、MyBatis、Redis、Bootstrap、Vue2.x等框架,包含:管理员列表、角色管理、菜单管理、定时任务、参数管理、代码生成器、日志管理、云存储、API模块(APP接口开发利器)、前后端分离等。
SpringBoot系列——防重放与操作幂等.doc
1.SpringSecurity使用token写入过期时间进行有效期管理(SpringSecurity结合Redis进行token有效期管理请移步我的另一个项目——小区智能管理系统) 2.可以通过角色权限或者指定人员授予菜单权限来实现动态菜单 3引用...
使用 Redis 实现点赞、关注功能,优化登录模块——存储登录凭证、缓存用户信息 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、...
多模块 Maven 项目的 Spring Boot 演示。 子项目包含以下模块(从依赖链的底部向上): 域(持久域对象——JPA 等) 服务(服务层) ... 在 spring-boot 中使用 cobertura 收集指标并发布到redis
同时利用页面缓存,url缓存,对象缓存,页面静态化,RocketMQ异步下单,Nginx+lua访问redis提前返回无用请求等一系列措施来提高项目的并发能力,使用ApacheBench(简称ab)对系统进行压测时,以5k的并发度共发出10w个请求,...
后端采用Spring Boot、Spring Security、Redis & Jwt。 权限认证使用Jwt,支持多终端认证系统。 支持加载动态权限菜单,多方式轻松权限控制。 高效率开发,使用代码生成器可以一键生成前后端代码。)
使用Spring Boot整合代替SSM整合 注解式开发,包括注解式项目配置以及mybatis中sql语句 项目文件结构: tlmall-springboot-ii +- images | +- img_1_in_markdown.png | +- ... | +- img_n_in_markdown.png +- other ...
11 20道顶尖的Spring Boot面试题!.pdf 12 20道面试官常问的JVM面试题!.pdf 13 22道面试常问的SpringMVC面试题!.pdf 14 24道经典的英语面试题!.pdf 15 24道消息队列RabbitMQ面试题!.pdf 16 27道顶尖的Java多线程...
Spring Boot面试题 Spring Cloud面试题 RabbitMQ面试题 Dubbo 面试题 MyBatis 面试题 ZooKeeper 面试题 数据结构面试题 算法面试题 Elasticsearch 面试题 Kafka 面试题 微服务 面试题 Linux面试题
11 20道顶尖的Spring Boot面试题!.pdf 12 20道面试官常问的JVM面试题!.pdf 13 22道面试常问的SpringMVC面试题!.pdf 14 24道经典的英语面试题!.pdf 15 24道消息队列RabbitMQ面试题!.pdf 16 27道顶尖的Java多线程...