Spring Boot怎样集成Redis

技术Spring Boot怎样集成Redis本篇文章给大家分享的是有关Spring Boot怎样集成Redis,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说春船范仲淹(音似"意"音似"意"音似"意似"音似"音似"音似"音似"音似"音似"音似"音似"音似"音似"音似"音似"音似"音似"瑞迪斯,是云娥,阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云,-你好-你好,你好吗,贺盛瑞?贺盛瑞。

Redis 简介

什么是 Redis

里亚尔吕宋吕宋吕宋吕宋吕宋吕宋吕宋吕宋吕宋吕宋,朱庇隆?朱庇隆键值(关键值)。

再说一遍云娥键值(关键值)云娥(你好Memcached)安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰:

1.再说一遍{ fnsimheibord 1 sh ad1 pos(200,288)}你看,是云娥、云娥、云娥,-你好-你好。2 .再说一遍你是说.键值(关键值)1863年,哎哎哎哎哎哎列表、集合、zset、hash云娥.3 .再说一遍唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,你好主从式朱庇特朱庇特朱庇特阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹(签名)。

再说一遍吴经玲吗:

1.页:1。再说一遍高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽高丽110000 -你好/s,菲兰达阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆阿吉乌姆81000 -你好/秒。2.页:1。再说一遍拜占庭拜占庭字串、清单、集合你好有序集幺六零幺。3 .页:1。再说一遍你是谁,朱庇特朱庇特朱庇特朱庇特朱庇特阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹阿齐兹。吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,吴经熊,阿力伯阿力伯阿力伯阿力伯阿力伯阿力伯阿力伯阿力伯,阿久多项你好EXEC(执行)阿祖伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇伊万诺维奇。4 .页:1。再说一遍{ fn华文楷体3ch 804000 }你在说什么发布/订阅,何如,关键点贺盛瑞阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉。

Spring Boot 集成 Redis

1.在项目中添加依赖

?XML版本=' 1.0 '编码=' utf-8 '?

项目xmlns=' http://maven。阿帕奇。org/POM/4。0 .0 '

xmlns 3330 xsi=' http://www。w3。org/2001/XML模式实例'

xsi 3330架构位置=' http://maven。阿帕奇。org/POM/4。0 .0https://maven。阿帕奇。org/xsd/maven-4。0 .0 .xsd '

模型版本4 . 0 . 0/模型版本(模型版本4 .0 .0/模型版本)

父项

groupid rg。springframework。boot/groupid

artifactidpringboot-starter-parent/artifactid

版本2.1.9 .版本/版本

相对性/!-查找存储库-

/家长-父项

groupIdcn.zwqh/groupId

artifactidpringr-boot-redis/artifactid

版本0 .0 .1-快照/版本

名称春天引导重定向器/name

描述弹簧靴-redis/描述

属性(属性)

java。版本1.8/java。版本

/properties

相依性

依赖关系

groupid rg。springframework。boot/groupid

artifactidpringboot-starter-web/artifactid

/依赖

依赖关系

groupid rg。springframework。boot/groupid

artifactidpringboot-starter测试/artifactId

范围范围

/依赖

!-再说一遍

-是吗

endency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

查看 jar 包时发现,Spring Data Redis 下 org.springframework.data.redis.connection 包路径下面默认有两个包 jedis 和 lettuce,这说明 Spring Boot 已经默认包装适配了这两个 Redis 客户端。

在 springboot 1.5.x版本的默认的Redis客户端是 Jedis实现的,springboot 2.x版本中默认客户端是用 lettuce实现的。

Lettuce 与 Jedis 比较

Lettuce 和 Jedis 的都是连接 Redis Server的客户端。

Jedis 在实现上是直连 redis server,多线程环境下非线程安全,除非使用连接池,为每个 redis实例增加物理连接。


Lettuce 是 一种可伸缩,线程安全,完全非阻塞的Redis客户端,多个线程可以共享一个RedisConnection,它利用Netty NIO 框架来高效地管理多个连接,从而提供了异步和同步数据访问方式,用于构建非阻塞的反应性应用程序。


下面我们分别使用 Lettuce 和 Jedis 来集成 Redis 服务

2. Lettuce 集成 Redis 服务

导入依赖

由于 Spring Boot 2.X 默认集成了 Lettuce ,所以无需导入。

application.properties配置文件
################ Redis 基础配置 ##############
# Redis数据库索引(默认为0)
spring.redis.database=0  
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379  
# Redis服务器连接密码(默认为空)
spring.redis.password=zwqh
# 链接超时时间 单位 ms(毫秒)
spring.redis.timeout=3000
################ Redis 线程池设置 ##############
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0
自定义 RedisTemplate

默认情况下的模板只能支持 RedisTemplate<String,String>,只能存入字符串,很多时候,我们需要自定义 RedisTemplate ,设置序列化器,这样我们可以很方便的操作实例对象。如下所示:

@Configuration
public class LettuceRedisConfig {
	@Bean
	public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {
		RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
		redisTemplate.setConnectionFactory(connectionFactory);
		return redisTemplate;
	}
}
序列化实体类
public class UserEntity implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5237730257103305078L;
	
	private Long id;
	private String userName;
	private String userSex;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserSex() {
		return userSex;
	}
	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}
	
}
单元测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootRedisApplicationTests {
	@Autowired
	private RedisTemplate<String, String> strRedisTemplate;
	@Autowired
	private RedisTemplate<String, Serializable> serializableRedisTemplate;
	
	@Test
	public void testString() {
		strRedisTemplate.opsForValue().set("strKey", "zwqh");
		System.out.println(strRedisTemplate.opsForValue().get("strKey"));
	}
	
	@Test
	public void testSerializable() {
		UserEntity user=new UserEntity();
		user.setId(1L);
		user.setUserName("朝雾轻寒");
		user.setUserSex("男");		
		serializableRedisTemplate.opsForValue().set("user", user);		
		UserEntity user2 = (UserEntity) serializableRedisTemplate.opsForValue().get("user");
		System.out.println("user:"+user2.getId()+","+user2.getUserName()+","+user2.getUserSex());
	}
}

执行结果如下: Spring Boot怎样集成Redis 得到我们预期的结果。

3.Jedis 集成 Redis 服务

pom 文件
<?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.9.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>cn.zwqh</groupId>
	<artifactId>spring-boot-redis</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-redis</name>
	<description>spring-boot-redis</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Redis -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
			<exclusions>
				<!-- 排除lettuce包 -->
				<exclusion>
					<groupId>io.lettuce</groupId>
					<artifactId>lettuce-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- 添加jedis客户端 -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
	
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>
application.properties配置文件
################ Redis 基础配置 ##############
# Redis数据库索引(默认为0)
spring.redis.database=0  
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379  
# Redis服务器连接密码(默认为空)
spring.redis.password=zwqh
# 链接超时时间 单位 ms(毫秒)
spring.redis.timeout=3000
################ Redis 线程池设置 ##############
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接 默认 8
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.jedis.pool.min-idle=0
JedisRedisConfig
@Configuration
public class JedisRedisConfig {
	@Value("${spring.redis.database}")
	private int database;
	@Value("${spring.redis.host}")
	private String host;
	@Value("${spring.redis.port}")
	private int port;
	@Value("${spring.redis.password}")
	private String password;
	@Value("${spring.redis.timeout}")
	private int timeout;
	@Value("${spring.redis.jedis.pool.max-active}")
	private int maxActive;
	@Value("${spring.redis.jedis.pool.max-wait}")
	private long maxWaitMillis;
	@Value("${spring.redis.jedis.pool.max-idle}")
	private int maxIdle;
	@Value("${spring.redis.jedis.pool.min-idle}")
	private int minIdle;
	/**
	 * 连接池配置信息
	 */
	@Bean
	public JedisPoolConfig jedisPoolConfig() {
		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		// 最大连接数
		jedisPoolConfig.setMaxTotal(maxActive);
		// 当池内没有可用连接时,最大等待时间
		jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
		// 最大空闲连接数
		jedisPoolConfig.setMinIdle(maxIdle);
		// 最小空闲连接数
		jedisPoolConfig.setMinIdle(minIdle);
		// 其他属性可以自行添加
		return jedisPoolConfig;
	}
	/**
	 * Jedis 连接
	 * 
	 * @param jedisPoolConfig
	 * @return
	 */
	@Bean
	public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
		JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().usePooling()
				.poolConfig(jedisPoolConfig).and().readTimeout(Duration.ofMillis(timeout)).build();
		RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
		redisStandaloneConfiguration.setHostName(host);
		redisStandaloneConfiguration.setPort(port);
		redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
		return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
	}
	/**
	 * 缓存管理器
	 * 
	 * @param connectionFactory
	 * @return
	 */
	@Bean
	public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
		return RedisCacheManager.create(connectionFactory);
	}
	@Bean
	public RedisTemplate<String, Serializable> redisTemplate(JedisConnectionFactory connectionFactory) {
		RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
		redisTemplate.setConnectionFactory(jedisConnectionFactory(jedisPoolConfig()));
		return redisTemplate;
	}
}
单元测试同上

出现预期结果。

上面介绍了 Spring Boot 2.X 如何通过 Lettuce 和 Jedis 来集成 Redis 服务,按项目需求,我们也可以自定义操作类来实现数据操作。

以上就是Spring Boot怎样集成Redis,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/51144.html

(0)

相关推荐

  • HTML文档类型DTD与浏览器怪异模式的示例分析

    技术HTML文档类型DTD与浏览器怪异模式的示例分析这篇文章主要为大家展示了“HTML文档类型DTD与浏览器怪异模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H

    攻略 2021年11月24日
  • css3变形效果好吗(css3中2d变形类型有哪些)

    技术CSS3变形技术有哪些本篇内容介绍了“CSS3变形技术有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    攻略 2021年12月15日
  • 怎么理解Mysql GITD复制中断处理

    技术怎么理解Mysql GITD复制中断处理怎么理解Mysql GITD复制中断处理,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从库发现复制错误: "ro

    攻略 2021年11月16日
  • 如何打麻将,打麻将怎么才能提高胜算

    技术如何打麻将,打麻将怎么才能提高胜算麻将这种棋牌游戏简单易学,四个人你来我往互不相让,争得不亦乐乎。殊不知正是是因为“简单易学”这四个字让很多人陷入了“易学难精”的尴尬境地,至于提高胜算更是可望而不可及。那么,真正能提

    生活 2021年10月23日
  • 衣服起球怎么快速去除,洗衣服时沾上许多毛毛怎么处理

    技术衣服起球怎么快速去除,洗衣服时沾上许多毛毛怎么处理洗衣服时沾上许多毛毛怎么处理?这个问题分两个方面来回答。第一衣服起球怎么快速去除,洗衣服时沾上许多毛毛怎么处理,最简单实用的,就是用透明胶带,把毛毛粘掉。还可以等衣服

    生活 2021年10月22日
  • linux中如何使用strace追踪mysql执行语句

    技术linux中如何使用strace追踪mysql执行语句这篇文章将为大家详细讲解有关linux中如何使用strace追踪mysql执行语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获

    攻略 2021年10月30日