Spring对Redis的支持是通过Spring Data Redis实现的,JedisConnectionFactory为我们提供了Redis的一种Java客户端Jedis。本文主要为大家介绍使用工厂类获取Jedis的两种方式,以及使用过程中存在的问题,希望能为大家提供一些思路。
工具/材料
IntelliJ IDEA
01
首先我们需要编辑Spring的配置文件application.properties,添加Redis的相关配置,这些配置在代码中需要注入,用来生成JedisConnectionFactory的Bean。
接下来我们写一个配置类,该配置类上需要添加@Configuration注解,我们在这个类中通过@Value注解注入application.properties配置文件中的部分需要的属性,其中{}用于接收属性值,在属性名冒号后面的值是默认值,若读取不到该属性则使用默认值。我们在该类中创建JedisConnectionFactory的Bean,在这个Bean中设置读取到的属性值。
接下来我们创建一个RedisServer的类,主要用于获取Redis以及实现部分Redis操作的方法。在该类中我们可以使用@Autowired注解注入JedisConnectionFactory的Bean。下图中获取Redis客户端Jedis的方法是我们推荐的方法,使用该方法我们既获取到了Jedis实例又使用的连接池,将Jedis实例交由连接池管理,不用太担心并发操作导致的Redis不可用的情况。最后再附上Jedis操作存储和获取数据的方法。
另外,我们还有再介绍一种并不推荐的写法,如下图所示。这种方法每次都创建一个新的Redis连接并且没有关闭连接,在大量并发操作时会带来性能上的开销,由于对连接数没有限制,可能会耗尽Redis的连接,导致Redis连接报错。
配置完成后我们来测试一下Jedis是否能正常使用,创建一个RedisController类,在该类中注入JedisServer,使用JedisServer提供的存储和读取方法,然后启动服务。
服务启动后我们在postman中进行测试,首先调用setRedis请求将数据存入Redis中,然后再调用getRedis请求获取数据,如下图所示。
JedisConnectionFactory在Spring Data Redis 2.0后就不再推荐上述这种配置方式了,当我们的spring-boot-starter-parent版本设置为2.x时,我们可以看到代码中的设置已经被废弃了。
Spring Data Redis 2.0推荐使用Standalone、Sentinel、RedisCluster这三种模式的环境配置类,以便于更加灵活的适配更多的业务场景,我们一般自己测试Redis通常使用的都是单机版的,那么以单机版为例,JedisConnectionFactory的配置应写为如下的方式。
特别提示
本文只是介绍了一种Redis客户端的使用方式,还是推荐大家使用spring-boot集成Redis做开发,因为spring-boot开箱即用的特性可以大大减少开发工作量。