我们要使用Java来操作Redis,就要学会使用Jedis
一、什么是jedis
是Redis官方推荐的java连接开发工具!使用Java操作Redis 中间件!如果你要使用java操作redis,那么一定要对Jedis十分的熟悉!
二、测试
新建一个空的工程,然后新建一个module。注意这里的SDK版本选择,我选的8,两个箭头处的位置版本需对应。
检查一下新建的模块的JDK版本是否与父工程一致,不一致就要修改。
以及下面这个位置也要检查一下
1、导入对应的依赖
注意设置一下maven的路径,修改为自己的本地maven仓库。
导入以下依赖。
<dependencies>
<!-- jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.4.1</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
</dependencies>
2、连接本机redis
- 连接数据库
- 操作命令
- 断开连接!
启动本机的redis-server.exe,这是我windows系统上安装的redis,双击即可启动。
Jedis 的所有方法就是 Linux 操作 redis 的所有指令。
写一个测试程序,测试ping命令,看能否ping通。
下面返回了PONG,代表连接上了redis服务器。
package com.peng;
import redis.clients.jedis.Jedis;
public class TestPing {
public static void main(String[] args) {
//1、new Jedis对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println(jedis.ping());
}
}
按同样的方式连远程的redis会失败。
3、连接远程服务器的redis
3.1 配置远程服务器上的redis.conf文件
注意不要配置到自己的原生redis.conf了,要找到自己的拷贝的用于启动的redis.conf文件。
这个目录是我解压的原生目录:
redis的默认安装路径/usr/local/bin
我已经拷贝了一份在这个路径下,所以我需要修改的目录是下面这个:
配置远程服务器上的redis.conf文件,修改配置文件的时候改三处:
-
daemonize 设置为 yes 表明要在后台运行。
-
把bind 127.0.0.1这一行注释掉,就没有请求访问ip限制了。或者在bind 127.0.0.1下面新增一行bind 0.0.0.0
-
把 protected mode 设置成 no 即可开启远程访问。
-
ps:配置文件中,还可以给自己服务器的Redis加个访问密码
(重启redis-server服务,进入redis后要先验证密码,用这个命令:auth 密码 ,然后ping一下看有没有配置成功)
修改配置文件后测试以下本机redis连接。
开启redis-server
# redis-server my-redis-conf-copy/redis.conf
开启redis-cli连接服务器
# redis-cli -p 6379
输入验证密码
# auth 654321
使用ping命令测试是否连接成功
# ping
3.2 开启防火墙及开放对应端口
- 开启防火墙放行6379端口
- 配置端口映射,将6379映射到一个公网ip的端口
- 配置完了还要重启以下redis,避免缓存影响
我是Ubuntu系统
,使用的如下命令:
查看防火墙当前状态
#sudo ufw status
设置开放6379端口的tcp协议
#sudo ufw allow 6379/tcp
再次查看防火墙的状态,看6379端口的状态
#sudo ufw status
在/usr/local/bin目录下,开启redis-server服务,注意my-redis-conf-copy是我自己在这里建的存放启动redis配置的文件夹,根据你自身情况修改!!
#redis-server my-redis-conf-copy/redis.conf
- 连接阿里云服务器的还要修改安全组规则!
3.3 idea远程连接测试
Jedis jedis = new Jedis("服务器的外网ip",映射的外部端口);
jedis.auth("redis的密码");
System.out.println(jedis.ping());
(输出PONG的话就成功了)
这是我的测试结果