最近项目中使用redis越来越多,总结一下:
1. redis 所需依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<!--spring-boot-starter-data-redis 会依赖Lettuce 的
redis客户端驱动,而在一版的项目中我们会使用Jedis,
所以代码中使用了exclusion 将其依赖排除-->
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
<version>1.5.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
spring 是通过 spring-data-redis 项目对redis开发进行支持的,
spring 提供RedisConnectionFactory 接口,通过它可生成RedisConnection接口对象
而RedisConneciton 接口对象是对Redis底层接口的封装。例如:我们使用Jedis驱动,
那么spring会提供RedisConnection接口实现类JedisConnection 去封装原有的Jedis对象。
示例:创建 RedisConnectionFactory 对象
package com.chenyun.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
public class RedisConnectionFactorys {
private RedisConnectionFactory connectionFactory = null;
@Bean(name="RedisConnectionFactory")
public RedisConnectionFactory initRedisConnectionFactory(){
if(this.connectionFactory != null) {
return this.connectionFactory;
}
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大空闲数
poolConfig.setMaxIdle(30);
// 最大连接数
poolConfig.setMaxTotal(50);
//最大等待毫秒数
poolConfig.setMaxWaitMillis(2000);
// 创建Jedis链接工厂
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig);
// 获取单机Redis配置
RedisStandaloneConfiguration rsCfg = connectionFactory.getStandaloneConfiguration();
connectionFactory.setHostName("localhost");
connectionFactory.setPort(6379);
connectionFactory.setPassword("123456");
this.connectionFactory = connectionFactory;
return connectionFactory;
}
}
这里 我们通过一个连接池配置创建了 RedisConnectionFactory,通过它就能创建RedisConnection
接口对象。但在使用一条链接时先要从RedisConnectionFactory工厂获取,然后在使用完成后
还要自己关闭它。spring为了简化开发,提供了RedisTemplate。
RedisTemplate 会自动从 RedisConnectionFactory工厂中获取链接,然后执行Redis相应的命令,
最后还会关闭redis的链接。
(启动redis 服务端参考:https://www.runoob.com/redis/redis-install.html)
1.2 spring 提供 RedisCallback, SessionCallback 解决 执行多条redis命令,创建多个链接,而导致
的资源浪费问题。
SessionCallback 接口比较友好,用的比较多