You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JReJSON包在Java中连接远程RedisJSON实例?

解决JReJSON连接远程Redis服务器的UnknownHostException问题

问题根源

你调用的JReJSON("redis://:password@host", port)构造方法中,第一个参数的设计是纯主机地址字符串(比如localhost或192.168.1.100),并不支持解析完整的Redis URL格式。当你传入redis://:password@host时,程序会把整个字符串当作主机名去做DNS解析,自然找不到对应主机,从而抛出UnknownHostException和“Failed to create socket”错误。

正确的远程连接方式

JReJSON基于Jedis开发,推荐使用Jedis连接池或直接传入Jedis实例来构建客户端,这两种方式都支持完整的Redis URL格式。

方式1:使用Jedis连接池(生产环境推荐)

连接池能更好地管理连接资源,适合高并发场景:

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.RedisURI;
import io.redisearch.rejson.JReJSON;

public class RedisJsonConnExample {
    public static void main(String[] args) {
        // 替换为你的远程Redis URL
        String redisUrl = "redis://:your_password@your_host:your_port";
        
        // 配置连接池参数
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(10); // 最大连接数
        poolConfig.setMaxIdle(5);   // 最大空闲连接数
        
        // 基于URL创建连接池
        RedisURI redisURI = RedisURI.create(redisUrl);
        JedisPool jedisPool = new JedisPool(poolConfig, redisURI);
        
        // 初始化JReJSON客户端
        JReJSON jsonClient = new JReJSON(jedisPool);
        
        // 测试JSON写入与读取
        jsonClient.set("user:1", "{\"name\":\"Alice\",\"age\":30}");
        String userJson = jsonClient.get("user:1");
        System.out.println(userJson);
        
        // 关闭连接池(程序结束时执行)
        jedisPool.close();
    }
}

方式2:直接使用单个Jedis连接(测试场景用)

如果只是简单测试,也可以直接创建Jedis实例传入JReJSON:

import redis.clients.jedis.Jedis;
import io.redisearch.rejson.JReJSON;

public class RedisJsonSingleConnExample {
    public static void main(String[] args) {
        // 替换为你的远程Redis URL
        String redisUrl = "redis://:your_password@your_host:your_port";
        
        // 创建Jedis连接
        Jedis jedis = new Jedis(redisUrl);
        
        // 初始化JReJSON客户端
        JReJSON jsonClient = new JReJSON(jedis);
        
        // 测试操作
        jsonClient.set("test:key", "{\"content\":\"hello redis json\"}");
        System.out.println(jsonClient.get("test:key"));
        
        // 关闭连接
        jedis.close();
    }
}

额外说明

你使用的Jedis 4.3.1和JReJSON 1.4.0版本是兼容的,JReJSON 1.4.0官方就是适配Jedis 4.x系列版本,无需担心版本冲突问题。

内容的提问来源于stack exchange,提问作者Gowthamss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:05:29