springboot项目
依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
配置类:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* @author wmx
* @date 2022/2/10 9:44
* @version: V1.0
* <p>
* <p>
* ( Jedis线程池配置类)
*/
@Configuration
public class JedisPoolConfiguration {
@Value("${spring.redis.host:192.168.0.218}")
private String host;
@Value("${spring.redis.port:6379}")
private Integer port;
@Value("${spring.redis.password:123456}")
private String password;
@Value("${spring.redis.database:0}")
private Integer database;
@Value("${spring.redis.maxIdle:100}")
private int maxIdle;
@Value("${spring.redis.maxTotal:100}")
private int maxTotal;
@Bean
public JedisPool redisPoolFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, 2000, password);
return jedisPool;
}
}
使用方式:
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
// 获取vpn数据
List<Commbo> businessTypeList = redisDao.findBusinessType();
jedis.del("business_type");
String keyName = "business_type";
for (int i = 0; i < businessTypeList.size(); i++) {
Commbo commbo = businessTypeList.get(i);
jedis.zadd(keyName, i + 1, JSON.toJSONString(commbo));
logger.info("添加vpn缓存:" + keyName);
}
} catch (Exception e) {
logger.info("redis--Vpn缓存出错!");
} finally {
jedis.close();
}
return "redis VPN数据 更新成功!";
普通spring项目
jar包
commons-pool2的jar包:https://mvnrepository.com/artifact/org.apache.commons/commons-pool2/2.11.1
jedis的jar包:https://mvnrepository.com/artifact/redis.clients/jedis/2.9.0
工具类:
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* @author wmx
* @date 2021/12/17 14:42
* @version: V1.0
* <p>
* <p>
* (需求文档版本--- )
*/
public class JedisInstance {
private static JedisPool pool = null;
/**
*
* 方法描述 构建redis连接池
*
* @return
*/
static {
if(pool == null) {
JedisPoolConfig config = new JedisPoolConfig();
//控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
config.setMaxTotal(50);
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(5);
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;单位毫秒
//小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(1000*100);
//在borrow(引入)一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
//return 一个jedis实例给pool时,是否检查连接可用性(ping())
config.setTestOnReturn(true);
//connectionTimeout 连接超时(默认2000ms)
//soTimeout 响应超时(默认2000ms)
pool = new JedisPool(config, "192.168.0.218", 6379, 2000, "123456");
}
}
/**
*
* 方法描述 获取Jedis实例
*
* @return
*/
public static Jedis getInstance() {
return pool.getResource();
}
/**
*
* 方法描述 释放jedis连接资源
*
* @param jedis
*/
public static void close(Jedis jedis) {
if(jedis != null) {
jedis.close();
}
}
}
使用方式:
List<Commbo> maintainStationList = new ArrayList<>();
Jedis jedis = null;
try {
jedis = JedisInstance.getInstance();
if (jedis != null) {
try {
Set<String> zrange = jedis.zrange("maintainStation", 0, -1);
for (String bytes : zrange) {
Commbo commbo = JSON.parseObject(bytes, Commbo.class);
maintainStationList.add(commbo);
}
logger.info("redis中获取维护站段信息");
} catch (Exception e) {
return maintainStationList;
}
}
} catch (Exception e) {
logger.info("redis中获取维护站段信息失败!");
} finally {
jedis.close();
}