基础连接方式
引入依赖
<!-- 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()方法里面
可以从上面代码看到,判断有没有连接池,如果有 连接结束后退回连接池,没有则消毁。