我们要使用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的话就成功了)
这是我的测试结果