Redis发布订阅的可视化深度剖析

3周前发布 gsjqwyl
15 0 0

七. Redis 中 Jedis 的细致剖析与运用

目录

  • 七. Redis 中 Jedis 的细致剖析与运用
  • 1. Jedis 概述
  • 2. Java程序里使用 Jedis 操作 Redis 数据
    • 2.1 Java 程序使用 Jedis 连接 Redis 的留意要点
    • 2.2 Java程序经 Jedis 操作 Redis 的 key 键值对
    • 2.3 Java程序经 Jedis 操作 Redis 的 string 字符串
    • 2.4 Java程序经 Jedis 操作 Redis 的 list 列表
    • 2.5 Java程序经 Jedis 操作 Redis 的 set 集合
    • 2.6 Java程序经 Jedis 操作 Redis 的 hash 哈希表
    • 2.7 Java程序经 Jedis 操作 Redis 的 Zset 有序集合
  • 3. 结语:

1. Jedis 概述

Jedis是Java程序与Redis进行交互的工具,这和Java操作MySQL时使用JDBC的作用是类似的

Jedis工作示意图

在这里插入图片描述

Jedis的API文档
https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html

在这里插入图片描述

下面是网上一位网友总结的 Jedis中文文档,此处进行了转载
https://blog.csdn.net/CYY941027/article/details/109110455

创建 Jedis 对象,采用对应的构造器

在这里插入图片描述

键值对的操作

在这里插入图片描述

字符串操作

在这里插入图片描述

整数与浮点数操作

在这里插入图片描述

列表List操作

在这里插入图片描述

集合(Set)操作

在这里插入图片描述

哈希表(Hash)操作

在这里插入图片描述

有序集合(Zsort)操作

在这里插入图片描述

排序操作

在这里插入图片描述

可以发现上述 API 的方法,很明显就是我们在 Redis 中敲的命令,只不过换成了Java中的方法来使用。因为我们要在Java程序里操作 Redis,所以自然要把命令转换成Java中的方法来进行操作。

2. Java程序里使用 Jedis 操作 Redis 数据

快速入门:

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

若要使用 jedis,需在 pom.xml 文件中引入相关的 jar 依赖。

在这里插入图片描述
    <dependencies>
            <!--        引入 jedis 依赖-->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>3.2.0</version>
            </dependency>
        </dependencies>

Java 程序通过 Jedis 连接数据库之前,得先把 Linux 中安装的 Redis 服务器启动起来。

[root@localhost bin]# redis-server /etc/redis.conf # 启动 redis 服务器
[root@localhost bin]# redis-cli # 进入到 Redis 客户端
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2.1 Java 程序使用 Jedis 连接 Redis 的留意要点

在这里插入图片描述
package com.rainbowsea.jedis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class JedisTest {
    // 连接 Redis
    @Test
    public void con() {
        // 使用 ip地址 + redis的端口的构造器方法
        Jedis jedis = new Jedis("192.168.76.145", 6379);
        String ping = jedis.ping();
        System.out.println("连接成功 ping 返回的结果 = " + ping);

        jedis.close();  // 关闭连接

    }
}

ip地址无误,端口号也是默认的6379 。但却显示连接不上,还提示连接超时。

在这里插入图片描述

原因与解决办法

  1. 第一个缘由是:Linux中6379端口的防火墙处于关闭状态。若防火墙未开放该端口,外部无法连接此端口。所以需在Linux里开启6379端口,使外界(如Java程序)能连接该端口。

具体操作如下:

[root@localhost bin]# firewall-cmd --list-all
在这里插入图片描述

设置开放的端口号:

[root@localhost bin]# firewall-cmd --add-port=6379/tcp --permanent
在这里插入图片描述

留意:设置开放端口后,需重启防火墙才能生效。

重启防火墙:

[root@localhost bin]# firewall-cmd --reload # 重启防火墙
在这里插入图片描述

再次执行 firewall-cmd --list-all 命令查看是否将6379端口开启成功。

[root@localhost bin]# firewall-cmd --list-all
在这里插入图片描述
  1. 第二个缘由:在Redis的 /etc/redis.conf 文件中,存在 bind 设置,需将其设为远程访问配置,而非本机配置。

用 vim 打开该文件进行修改。

[root@localhost bin]# vim /etc/redis.conf
在这里插入图片描述 在这里插入图片描述
# bind 127.0.0.1 -::1

同样,修改配置后,需关闭 Redis 服务,再启动 Redis 服务,配置才能生效。

[root@localhost ~]# redis-cli -p 6379 shutdown # 关闭 Redis 服务
[root@localhost bin]# redis-server /etc/redis.conf # 重启Redis 服务器
在这里插入图片描述
  1. 第三个缘由:需将 protected-mode yes 修改为 no 关闭保护模式,如图所示
protected-mode no
在这里插入图片描述

同样,修改配置后,需关闭 Redis 服务,再启动 Redis 服务,配置才能生效。

再次尝试在Java程序中连接 Redis 。

在这里插入图片描述
  1. Redis 默认未配置密码,但无密码会被认为不安全。可为 Redis 配置密码,在 /etc/redis.conf 文件中的 requirepass 配置密码,如图所示:
 requirepass rainbowsea
在这里插入图片描述

同样,修改配置后,需关闭 Redis 服务,再启动 Redis 服务,配置才能生效。

设置密码后:使用 auth 密码 登录。

在这里插入图片描述 在这里插入图片描述

再次尝试在Java程序中连接 Redis 。

留意: 若Redis设置了密码,Java程序连接时需先执行 auth() 方法进行认证登录,方能连接上 Redis 服务,否则无法连接。

在这里插入图片描述

“`java
package com.rainbowsea.jedis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class JedisTest {
// 连接 Redis
// 1. 如果Redis 设置了密码,则需要进行身份校验
// 2. 因为需要连接到 redis端口,比如6379,就需要配置防火墙,放开端口
// 3. 注意修改 bind ,支持远程连接
// 4 注意关闭保护模式,protected-mode no ,no表示关闭
// 5. 注意:设置了密码,需要执行 auth(密码)进行身份验证
@Test
public void con() {
// 使用 ip地址 + redis的端口的构造器方法
Jedis jedis = new Jedis(“192.168.76.145”, 6379);

    // 如果Redis 配置了密码,则需要进行身份校验
© 版权声明

相关文章

暂无评论

暂无评论...