作者:ChenZhen
博客地址:https://www.chenzhen.space/
版权:本文为博主 ChenZhen 的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。
如果对你有帮助,请给一个小小的star⭐
Jedis介绍
Jedis是redis的java版本的客户端实现,使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式
Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。
在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。
在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。
1.启动Redis服务
在使用Jedis之前,首先要保证你的虚拟机上或者云服务器上的Redis服务已经开启,使用指令查看
ps -ef|grep redis
已启动↓
如果服务没有开启↓,则先开启服务
来到你的Redis安装目录我这里是/usr/local/bin,有以下文件
- redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
- redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
- redis-check-dump:修复有问题的dump.rdb文件
- redis-sentinel:Redis集群使用
- redis-server:Redis服务器启动命令
- redis-cli:客户端,操作入口
前台启动(不推荐)
前台启动,命令行窗口不能关闭,否则服务停止
后台启动(推荐)
修改redis.conf配置文件
后台启动设置daemonize 将no改成yes
这里顺便设置注释掉bind 127.0.0.1 ,然后 protected-mode 设置为no,为后面远程连接做准备,这样子后面可以不用重启服务
使用 /关键字 可以快速查找
Redis启动
回到你的安装目录下,运行指令redis-server,后面跟上你的redis.conf配置文件路径
redis-server /etc/redis.conf
再次查看后台进程,redis服务成功启动
2.开放端口
在redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode 设置为no
修改了配置文件需要重启redis服务
要让外部能够成功连接上Redis,还要开放防火墙的6379端口
firewall-cmd --permanent --add-port=6379/tcp
permanent:表示永久生效,即使机器重启
查看防火墙状态
firewall-cmd --list -all
6379端口已经开放
3.导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.1.0</version>
</dependency>
调用Jedis的构造方法,第一个参数是Redis服务器的Ip地址(填自己的),第二是端口号 在调用ping()方法测试是否连接上
Jedis jedis = new Jedis("192.168.43.128", 6379);
// 如果有密码
// jedis.auth("123321");
String ping = jedis.ping();
System.out.println("ping = " + ping);
输出pong表示成功连接Redis
连接完成之后就可以调用redis对象里的各种方法对Redis进行操作了,方法名与实际操作的指令名基本一致,使用起来十分容易
配置连接池
通过jedis自己提供的连接池对象,配置连接池
节省每次连接redis服务带来的消耗,把连接好的实例反复利用。
通过参数管理连接的行为,解决连接超时的问题
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtil {
private static volatile JedisPool jedisPool = null;
private JedisPoolUtil() {
}
public static JedisPool getJedisPoolInstance() {
if (null == jedisPool) {
synchronized (JedisPoolUtil.class) {
if (null == jedisPool) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(10); //最大连接数
poolConfig.setMaxIdle(8); //最大空闲连接
poolConfig.setMinIdle(0);//最小空闲连接
poolConfig.setMaxWaitMillis(100*1000);
poolConfig.setBlockWhenExhausted(true);
poolConfig.setTestOnBorrow(true);
//连接池配置,ip,端口号,超时时间(ms)
jedisPool = new JedisPool(poolConfig, "192.168.43.128", 6379, 6000 );
//连接池配置,ip,端口号,超时时间(ms),密码
// jedisPool = new JedisPool(poolConfig, "192.168.43.128", 6379, 6000,"123456");
}
}
}
return jedisPool;
}
}
再次通过ping测试,使用连接池也成功连接上Redis
这里的close()方法并不会关闭连接,而是将连接归还连接池