jedis基本使用
1.导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>
2.建立连接
public class JedisTest {
private Jedis jedis;
@Before
public void setUp(){
// 1.建立连接
jedis = new Jedis("192.168.80.20",6379);
// 2.设置密码
// jedis.auth("");
// 3.选择库
jedis.select(0); // 默认0库
}
@Test
public void testString(){
String result = jedis.set("name", "zhangsan"); // result = "ok"
System.out.println(result);
String name = jedis.get("name"); // name = "zhangsan"
System.out.println(name);
}
@Test
public void testHash(){
jedis.hset("user:1", "name", "lisi");
jedis.hset("user:2", "age", "20");
jedis.hset("user:3", "salary", "31800");
HashMap<String,String> map = new HashMap<>();
map.put("bir", "20001005");
map.put("place", "济南");
jedis.hset("user:4", map);
}
@After
public void tearDown(){
if (jedis != null){
jedis.close();
}
}
}
jedis连接池
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。
- 编写连接池工具类
public class JedisConnectionFactory {
private static final JedisPool jedisPool;
static {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(8); // 最大连接数
poolConfig.setMaxIdle(8); // 最大预备连接
poolConfig.setMinIdle(0); // 最小预备连接
poolConfig.setMaxWaitMillis(1000); // 没有连接可用时,最多等待多久
// 创建连接池对象
jedisPool = new JedisPool(poolConfig, "192.168.80.*", 6379, 100);
}
public static Jedis getJedisInstance(){
return jedisPool.getResource();
}
}
- 之后再创建jedis对象时,直接
jedis = JedisConnectionFactory.getJedisInstance();
jedis.close( ) 实际上是归还到连接池中
public void close() { if (this.dataSource != null) { Pool<Jedis> pool = this.dataSource; this.dataSource = null; if (this.isBroken()) { pool.returnBrokenResource(this); } else { pool.returnResource(this); } } else { this.connection.close(); } }