ChenZhen 搜索
首页 标签 归档 留言板 友链 ChatGPT 提示库 AI工具导航网 🚇开往 关于我

在Java使用Jedis来操控Redis

Jedis介绍 Jedis是redis的java版本的客户端实现,使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式 Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中

ChenZhen 2022-10-07T13:22:25
cover

在Java使用Jedis来操控Redis

作者: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配置文件

后台启动设置daemonizeno改成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()方法并不会关闭连接,而是将连接归还连接池

在这里插入图片描述

© 版权声明
😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🤩😘😗😚😙😋😛😜🤪😝🤑🤗🤭🤫🤔🤐🤨😐😑😶😏😒🙄😬🤥😌😔😪🤤😴😷🤒🤕🤢🤮🤧🥵🥶🥴😵🤯🤠🥳😎🤓🧐😕😟🙁☹️😮😯😲😳🥺😦😧😨😰😥😢😭😱😖😣😞😓😩😫🥱😤😡😠🤬