Jedis

2天前发布 1 00

用于与 ​Redis​(Remote Dictionary Server)交互

收录时间:
2025-04-01

Jedis 简介

Jedis 是一个 Java 客户端库,用于与 Redis(Remote Dictionary Server)交互,由 Redis 官方推荐 的 Java 开发工具之一。它提供了简单、高效的 API,支持 连接池、事务、管道(Pipeline)、集群模式 等 Redis 核心功能,适用于 高并发、低延迟 的应用场景。Jedis 以其 轻量级、易用性和高性能 成为 Java 开发者操作 Redis 的首选工具之一。


核心特性

  1. 完整的 Redis 协议支持
    • 覆盖 Redis 所有命令(如 SET/GETHSET/HGETLPUSH/LPOP
    • 支持 Redis 6.0+ 的新特性(如 ACL、客户端缓存)
  2. 连接池管理
    • 内置 JedisPool,复用连接减少开销
    • 可配置 最大连接数、超时时间、空闲检测
  3. 高性能操作
    • Pipeline(管道):批量执行命令,减少网络往返
    • 事务(Transaction)MULTI/EXEC 保证命令原子性
  4. 集群与哨兵模式
    • 支持 Redis Cluster(自动路由请求到正确节点)
    • 支持 Redis Sentinel(自动故障转移)
  5. Lua 脚本支持
    • 通过 Jedis.eval() 执行 Lua 脚本,实现复杂逻辑
  6. SSL 与认证
    • 支持 TLS 加密连接
    • 支持 Redis 密码认证(AUTH)

核心概念

术语说明
Jedis 实例单个 Redis 连接(线程不安全,需配合连接池使用)
JedisPool连接池,管理多个 Jedis 实例(推荐生产环境使用)
Pipeline批量命令打包发送,提升吞吐量
Transaction事务块,保证一组命令的原子性
Cluster集群模式客户端,自动处理分片和重定向

典型应用场景

  1. 缓存加速
    • 存储热点数据(如用户信息、商品详情)
  2. 分布式锁
    • 通过 SETNX 实现互斥锁(如秒杀系统)
  3. 消息队列
    • 使用 List 或 Stream 实现异步任务队列
  4. 计数器与排行榜
    • 利用 INCR 和 ZSET 实现实时统计
  5. 会话共享
    • 分布式系统中存储用户 Session

快速入门示例

1. 添加 Maven 依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.4.1</version>
</dependency>

2. 基础操作

import redis.clients.jedis.Jedis;

public class JedisDemo {
    public static void main(String[] args) {
        // 创建连接(默认端口 6379)
        try (Jedis jedis = new Jedis("localhost")) {
            // 存储数据
            jedis.set("foo", "bar");
            System.out.println(jedis.get("foo")); // 输出 "bar"

            // 哈希表操作
            jedis.hset("user:1001", "name", "Alice");
            System.out.println(jedis.hget("user:1001", "name")); // 输出 "Alice"
        }
    }
}

3. 使用连接池

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolDemo {
    public static void main(String[] args) {
        // 配置连接池
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(100); // 最大连接数

        try (JedisPool pool = new JedisPool(config, "localhost", 6379)) {
            try (Jedis jedis = pool.getResource()) {
                jedis.set("pool_test", "success");
                System.out.println(jedis.get("pool_test")); // 输出 "success"
            }
        }
    }
}

4. Pipeline 批量操作

try (Jedis jedis = new Jedis("localhost")) {
    Pipeline pipeline = jedis.pipelined();
    for (int i = 0; i < 1000; i++) {
        pipeline.set("key_" + i, "value_" + i);
    }
    pipeline.sync(); // 批量执行
}

性能优化建议

  1. 合理使用连接池
    • 设置 maxTotal 和 maxIdle 避免资源耗尽
    • 监控 getNumActive() 防止连接泄漏
  2. Pipeline 优化批量操作
    • 单次 Pipeline 命令数建议控制在 1万以内
  3. 避免大 Key
    • Value 超过 1MB 会影响性能(如拆分或压缩)
  4. 集群模式调优
    • 使用 JedisCluster 时,合理设置 maxAttempts(默认 5)
  5. Lua 脚本替代多命令
    • 减少网络往返(如原子性扣库存)

数据评估

Jedis浏览人数已经达到1,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:Jedis的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要,一些确切的数据则需要找Jedis的站长进行洽谈提供。如该站的IP、PV、跳出率等!

关于Jedis特别声明

本站速览导航提供的Jedis都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由速览导航实际控制,在2025年4月1日 下午9:43收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,速览导航不承担任何责任。

相关导航