建立一个maven项目
pom文件如下:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
测试类代码
public class TestJedis {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.1.10",6379);
jedis.set("name", "Jedis Redis");
String value=jedis.get("name");
System.out.println(value);
jedis.close();
}
}
首先启动redis 服务
运行代码报错 报出connet time out 异常
是因为防火墙6379端口没有开权限,运行下述代码进行开权限:
firewall-cmd –zone=public –add-port=6379/tcp –permanent
firewall-cmd –reload
然后运行 还是报错:
这里绑定了本机 我们要注释掉
修改完配置 保存 重启redis:
[root@localhost redis]# ./bin/redis-cli shutdown
[root@localhost redis]# ./bin/redis-server ./redis.conf
然后运行代码又报错:
这是因为远程连接redis redis自我保护 拒绝访问;
这里有两种解决方法;
第一种 关闭自我保护功能(开发中不推荐)
root@localhost redis]# vi /usr/local/redis/redis.conf
进入配置
找到 protected-mode yes
改成 no即可
第二种 设置Redis连接密码
进入客户端
保证Redis启动
[root@localhost redis]# ./bin/redis-server ./redis.conf
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> config set requirepass 123456
OK
127.0.0.1:6379>
Ctrl+c退出
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> auth 123456
OK
说明设置成功
然后在测试代码中加入jedis.auth(“123456”);
运行得到如下结果:
下面说下redisPool连接池的用法:
测试代码如下:
public class TestJedis {
public static void main(String[] args) {
JedisPoolConfig jpconfig= new JedisPoolConfig();//初始化连接池
jpconfig.setMaxTotal(100);//设置最大连接数
jpconfig.setMaxIdle(10);//设置最大空闲连接数
JedisPool jedisPool = new JedisPool(jpconfig,"192.168.1.10",6379);
Jedis jedis=null;
try{
jedis=jedisPool.getResource();
jedis.auth("123456");
jedis.set("name", "Jedis Redis");
String value=jedis.get("name");
System.out.println(value);
}catch(Exception e){
e.printStackTrace();
}finally{
if(jedis!=null){
jedis.close();
}
if(jedisPool!=null){
jedisPool.close();
}
}
}
}
测试结果: