Redis 之八:Jdeis API 的使用(Java 操作 Redis)

Jedis API 使用

Jedis 是 Redis 官方推荐的 Java 客户端,它提供了一套丰富的 API 来操作 Redis 服务器。通过 Jedis API,开发者可以方便地在 Java 应用程序中执行 Redis 的命令来实现数据的增删查改以及各种复杂的数据结构操作。

以下是一些基本的 Jedis API 示例和它们对应的功能:

常用操作

  1. 连接 Redis

    Jedis jedis = new Jedis("localhost", 6379); // 创建一个与Redis实例的连接,默认端口是6379
  2. 字符串(String)操作

    设置/获取值:

    jedis.set("key", "value"); // 设置键值对
    String value = jedis.get("key"); // 获取键对应的值
  3. 哈希表(Hash)操作

    添加/获取哈希表中的字段值:

    jedis.hset("hashKey", "field", "value"); // 向哈希表添加字段
    Map<String, String> map = jedis.hgetAll("hashKey"); // 获取整个哈希表的内容
  4. 列表(List)操作

    在列表头部或尾部插入元素:

    jedis.lpush("listKey", "item1"); // 在列表左侧添加元素
    List<String> list = jedis.lrange("listKey", 0, -1); // 获取列表内所有元素
  5. 集合(Set)操作

    添加/查询集合成员:

    jedis.sadd("setKey", "member1"); // 将元素添加到集合中
    Set<String> members = jedis.smembers("setKey"); // 获取集合中所有成员
  6. 有序集合(Sorted Set/ZSet)操作

    添加带分数的成员并排序:

    jedis.zadd("zsetKey", 1.0, "member1"); // 根据分数添加成员
    Set<String> sortedMembers = jedis.zrangeByScore("zsetKey", 0, Double.MAX_VALUE); // 根据分数范围获取成员

除此之外,Jedis 还提供了事务、发布订阅、Lua 脚本、键空间通知等高级功能的API支持。为了确保资源的有效管理,使用完 Jedis 实例后需要调用 jedis.close() 方法关闭连接。

随着 Redis 版本更新和新特性的增加,Jedis API 也在不断扩展和完善,以适应更多的应用场景。

具体测试步骤

1. 新建 maven 项目

配置 pom.xml ,添加 Jedis 依赖

<dependencies>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.6.3</version>
    </dependency>
</dependencies>

2. 编写测试类

测试是否能够连通

先测试是否能连通本地redis (window )

/**
 * 访问本机
 */
public class Test {
    public static void main(String[] args) {
        //127.0.0.1 访问的window 上的 redis
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.auth("zhang");
        String name = jedis.get("name");
        System.out.println(name);
    }
}

注意: 如果 redis 配置了身份验证,可以使用 jedis.auth("") 指定密码即可。

3. 访问配置

a. 测试linux 连通

/**
 * 1. 防火墙和端口
 * 2. 修改配置,允许其他站点访问
 */
public class TestLinuxRedis {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.184.140",6379);
        String name = jedis.get("name");
        System.out.println(name);
    }
}

注意:默认情况下,连接会超时和失败。

原因:

  1. linux 防火墙或端口问题。可以通过关闭防火墙或开放端口解决

  2. 如果开放后,默认仍是无法访问的,因为 redis 默认只允许本机访问。需要修改配置文件 redis.conf

    a) 方式一: 修改 bind 127.0.0.1 改为 bind 0.0.0.0

    b) 方式二:注释掉 bind 127.0.0.1 同时 修改保护模式为 : protected-mode no

b. 关闭防火墙

[root@localhost bin]# systemctl stop firewalld

c. 再测试,通过!

再次开启防火墙,又不能通过,所以再单独开放 6379 端口即可

[root@zhangpeng bin]# systemctl start firewalld
[root@zhangpeng bin]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
[root@zhangpeng bin]# firewall-cmd --reload

开启防火墙命令:

*    firewall-cmd --zone=public --add-port=6379/tcp --permanent
*    firewall-cmd --reload**  # 配置立即生效

4. 问题总结

* 1. 出现 connect timed out 连接超时问题
*  a. 检查防火墙和端口是否开放
*  b. redis 保护问题,查看配置文件 redis.conf 文件
*      bind 127.0.0.1 -::1 注释掉
*      protected-mode no
*  c. 重新启动,先shutdown,再启动
* 2. 注意:不能向从节点中写数据的
*      redis.clients.jedis.exceptions.JedisDataException:
*      READONLY You can't write against a read only replica.
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zp8126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值