关于redis的操作代码我都放在我都git仓库了,大家可以下载本地学习观看:
git地址:Redis Repo
Redis client
Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。
Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接
Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例
主从
配置jedis: pom文件指定redis 客户端连接工具jedis, 配置连接池
spring:
application:
name: fairy-redis
redis:
password: redis
port: 6379
host: node01
database: 0
timeout: 100000
jedis:
pool:
max-active: 10 # 连接池最大连接数(使用负值表示没有限制)
max-idle: 6 # 连接池中的最大空闲连接
max-wait: 10000 # 连接池最大阻塞等待时间(使用负值表示没有限制))
min-idle: 3 # 连接池中的最小空闲连接
time-between-eviction-runs: 100000 #每ms运行一次空闲连接回收器(独立线程)
JedisConfig 连接池参数信息
@Component
@ConfigurationProperties(prefix = "spring.redis.jedis.pool")
public class JedisConfig {
private Integer maxActive;
private Integer maxIdle;
private Integer maxWait;
private Integer minIdle;
private Integer timeBetweenEvictionRuns;
public Integer getMaxActive() {
return maxActive;
}
public void setMaxActive(Integer maxActive) {
this.maxActive = maxActive;
}
public Integer getMaxIdle() {
return maxIdle;
}
public void setMaxIdle(Integer maxIdle) {
this.maxIdle = maxIdle;
}
public Integer getMaxWait() {
return maxWait;
}
public void setMaxWait(Integer maxWait) {
this.maxWait = maxWait;
}
public Integer getMinIdle() {
return minIdle;
}
public void setMinIdle(Integer minIdle) {
this.minIdle = minIdle;
}
public Integer getTimeBetweenEvictionRuns() {
return timeBetweenEvictionRuns;
}
public void setTimeBetweenEvictionRuns(Integer timeBetweenEvictionRuns) {
this.timeBetweenEvictionRuns &