SpringBoot|SpringBoot集成Redis
SpringBoot集成Redis
文章目录
-
- SpringBoot集成Redis
-
- 1、概述
- 2、测试Redis
- 3、自定义redisTemplate
1、概述
Redis是什么?【SpringBoot|SpringBoot集成Redis】Redis(Remote Dictionary Server ),即远程字典服务。
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis能该干什么?
- 内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)
- 高效率、用于高速缓冲
- 发布订阅系统
- 地图信息分析
- 计时器、计数器(eg:浏览量)
- … …
特性
- 多样的数据类型
- 持久化
- 集群
- 事务
…
SpringBoot操作数据,Spring-Data、 jbdc、redis… …
SpringData与SpringBoot齐名的项目!
说明:在SpringBoot2.x之后,原来使用的jedis被替换为lettuce
jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,需使用jedis pool连接池!像BIO模式
lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,更像NIO模式
文章图片
新建一个项目
文章图片
文章图片
注意:
文章图片
查看底层
文章图片
源码分析:
@Bean
@ConditionalOnMissingBean(//如果未注入组件条件,我们自己可以定义一个redisTemplate来替换这个默认的
name = {
"redisTemplate"}
)
public RedisTemplate
1、导入依赖
2、配置连接
# SpringBoot 所有的配置类 都有一个自动配置类RedisAutoConfiguration
# 自动配置类都会绑定一个 properties 配置文件RedisProperties#配置 redis
spring.redis.host=127.0.0.1
spring.redis.port=6379spring.redis
3、测试!
package com.kk;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisTemplate;
@SpringBootTest
class Redis01SpringbootApplicationTests {@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {/*
redisTemplate
opsForValue操作字符串的类似String
opsForList操作List类似List
opsForSet
opsForHash
opsForZSet
opsForGeo
opsForHyperLogLog除了基本的操作 ,我们常用的方法都可以直接通过redisTemplate 比如事务和基本的CRUD*///获取redis的连接对象
//RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
//connection.flushDb();
//connection.flushAll();
redisTemplate.opsForValue().set("kk1","kk2");
System.out.println(redisTemplate.opsForValue().get("kk1"));
}}
文章图片
3、自定义redisTemplate
首先先建一个实体类,测试
User类
package com.kk.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
//在企业中,我们所有的pojo都会序列化
public class User implements Serializable {private String name;
private int age;
}
测试:
@Test
public void test() throws JsonProcessingException {//真实的开发一般都使用json来传递对象
User user = new User("kk", 17);
String jsonUser = new ObjectMapper().writeValueAsString(user);
//这样就变成了一个json对象了
redisTemplate.opsForValue().set("user",jsonUser);
System.out.println(redisTemplate.opsForValue().get("user"));
}
r = new ObjectMapper().writeValueAsString(user); //这样就变成了一个json对象了
redisTemplate.opsForValue().set(“user”,jsonUser);
System.out.println(redisTemplate.opsForValue().get(“user”));
}
==注意:如果不在User类中实现序列化,它会报错==
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- (1)redis集群原理及搭建与使用(1)
- springboot整合数据库连接池-->druid
- SpringBoot中YAML语法及几个注意点说明
- springboot结合redis实现搜索栏热搜功能及文字过滤