提取码:45on
Java连接redis,首先修改两项配置文件
bind 127.0.0.1 ::1 注释掉
protected-mode 设置为no
然后需要导入一个依赖
redis.clients jedis 3.1.0为了方便测试,我们引入junit
junit junit 4.13这里我们给出一个例子,jedis对象就像我们的客户端
RedisDemo
package com.hzy.redis;
import org.junit.Test; import redis.clients.jedis.Jedis;
public class RedisDemo { public static void main(String[] args) { // 连接Redis服务器 Jedis jedis = new Jedis("192.168.40.128",6379); // 权限认证,也就是我们redis-cli设置的密码 jedis.auth("root"); // 测试是否连接成功 // CentOS下查看防火墙运行访问的端口号:firewall-cmd --list-ports // 开启6379端口号:firewall-cmd --zone=public --add-port=6379/tcp --permanent // 重启防火墙:firewall-cmd --reload System.out.println(jedis.ping()); }
/*
* 测试String,redis中有哪些命令,jedis中就有哪些方法
* */
@Test
public void test1() {
Jedis jedis = new Jedis("192.168.40.128",6379);
jedis.auth("root");
jedis.set("strName","hzy");
String strName = jedis.get("strName");
System.out.println(strName);
jedis.close();
}
/*
* redis是为了减轻数据库的访问压力
* 如果某key存在,就在redis中查询,否则就去数据库中查询
* 并将查询出的数据存入到redis
* */
@Test
public void test2() {
Jedis jedis = new Jedis("192.168.40.128",6379);
jedis.auth("root");
String key = "appName"; // key的名称
if (jedis.exists(key)) {
String s = jedis.get(key);
System.out.println("redis中查询到的");
} else {
String s = "应用名";
jedis.set(key,s);
System.out.println("数据库中查询");
}
jedis.close();
}
}
而且我们还可以通过连接池的方式进行操作,这里我们通过一个工具类进行获取jedis
RedisPoolUtil
package com.hzy.redis;
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;
public class RedisPoolUtil { private static JedisPool jedisPool;
static {
// 连接池配置信息,不写有默认值
// JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // jedisPoolConfig.setMaxTotal(5); // 设置最大连接数 // jedisPoolConfig.setMaxIdle(1); // 设置最大空闲数 // 连接池 // JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.40.128",6379); // 连接池 jedisPool = new JedisPool("192.168.40.128",6379); } public static Jedis getJedis() { Jedis jedis = jedisPool.getResource(); jedis.auth("root"); return jedis; } public static void close(Jedis jedis) { jedis.close(); } }
然后一个测试类RedisDemo2
package com.hzy.redis;
import redis.clients.jedis.Jedis;
public class RedisDemo2 { public static void main(String[] args) { Jedis jedis = RedisPoolUtil.getJedis();
String key = "strKey";
if (jedis.exists(key)) {
String s = jedis.get(key);
System.out.println("redis中查询到的");
} else {
String s = "应用名";
jedis.set(key,s);
System.out.println("数据库中查询");
}
RedisPoolUtil.close(jedis);
}
}
第一次查询的时候,会输出数据库中查询,后续查询都是在redis中查询到的