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

1年前发布 gsjqwyl
118 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 配置了密码,则需要进行身份校验
© 版权声明

相关文章

没有相关内容!

暂无评论

none
暂无评论...