基础连接方式
引入依赖
<!-- Jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
创建Jedis对象,建立连接
操作字符串
方法名与Rdeis命令一致
操作Hash类型
释放资源
测试数据
完整代码
import redis.clients.jedis.Jedis;
import java.util.Map;
public class JedisTest {
static private Jedis jedis;
static void setUp(){
//1.建立连接
jedis = new Jedis("Ip地址",6379);
//2.设置密码
jedis.auth("123221");
//3.选择库
jedis.select(0);
}
static void testString(){
//存入数据
String result = jedis.set("name","张三");
System.out.println("result = "+result);
//获取数据
String name = jedis.get("name");
System.out.println("name = "+name);
}
static void testHash(){
jedis.hset("user:1","name","李四");
jedis.hset("user:1","age","14");
//获取
Map<String,String> map=jedis.hgetAll("user:1");
System.out.println(map);
}
static void tearDown(){
//关闭连接
jedis.close();
}
public static void main(String[] args) {
setUp();
testHash();
tearDown();
}
}
使用线程池连接
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能消耗,因此推荐大家使用Jedis线程池代替Jedis的直连方式。
线程池配置
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisConnectionFactory {
private static final JedisPool jedisPool;
static {
//配置连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 设置最大连接数
poolConfig.setMaxTotal(8);
// 设置最大空闲连接数
poolConfig.setMaxIdle(8);
// 设置最小空闲连接数
poolConfig.setMaxIdle(0);
// 设置延时时间 默认-1 一直存活
poolConfig.setMaxWaitMillis(1000);
// 创建连接池对象
jedisPool = new JedisPool(poolConfig, "47.93.247.7", 6379, 1000,"123221");
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
更换连接方式,其他不变
static void setUp(){
// 建立连接
jedis=JedisConnectionFactory.getJedis();
}
可能有的小伙伴会好奇,为什么不把关闭连接去掉,可以按住Ctrl键进入jedis.close()方法里面
可以从上面代码看到,判断有没有连接池,如果有 连接结束后退回连接池,没有则消毁。