jedis
线程不安全 所以每个线程需要一个独立的链接 为了保证线程安全 所以需要连接池
创建jedis链接池
java
public class JedisConnectionFactory
{
public static final JedisPool jedispool;
static{
//配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(8);
jedisPoolConfig.setMaxIdle(8);
//最小空闲链接
jedisPoolConfig.setMinIdle(0);
jedisPoolConfig.setMaxWait(Duration.ofNanos(100000));
//创建连接池对象
jedispool = new JedisPool(jedisPoolConfig, "xxxxxx",
6379, 1000, "XXXXXX");
}
public static Jedis getJedis(){
return jedispool.getResource();
}
}
说明:
JedisPoolConfig() 创建一个配置对象,使用无参构造方法就可以了
void setMaxTotal() 设置连接池最大的连接数
void setMaxWait() 刚开始没连上最多等待的时间
void setMaxIdle() 设置最大空闲链接数 也就是在线程池中最多有多少个空闲的链接
void setMinIdle() 设置最小空闲连接数
使用jedis (jedis的api就是redis命令)
java
public class jedisTest
{
private Jedis jedis;
@BeforeEach
void setUp(){
jedis = JedisConnectionFactory.getJedis();
}
@Test
void testString(){
String set = jedis.set("name", "虎哥");
System.out.println("set = " + set);
String name = jedis.get("name");
System.out.println("name = " + name);
}
@Test
void testHash(){
jedis.hset("user:1","name", "name1");
jedis.hset("user:1","age", "1");
Map<String, String> stringStringMap = jedis.hgetAll("user:1");
stringStringMap.forEach((k,v) -> System.out.println("v = " + v));
}
@AfterEach
void tearDown(){
if (jedis != null){
jedis.close();
}
}
}