java - 绝地武士和约翰异常(exception)

标签 java redis jedis

我正在使用 Johm 缓存和检索 Redis 数据库中的一些数据。但是,当我想使用 JOhm.getAll(MT.class); 提取对象数据时例如我得到一个异常

   redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
        at redis.clients.jedis.Protocol.process(Protocol.java:85)
        at redis.clients.jedis.Protocol.read(Protocol.java:137)
        at redis.clients.jedis.Connection.getIntegerReply(Connection.java:191)
        at redis.clients.jedis.Jedis.exists(Jedis.java:83)
        at redis.clients.johm.Nest.exists(Nest.java:117)
        at redis.clients.johm.JOhm.get(JOhm.java:55)
        at redis.clients.johm.JOhm.getAll(JOhm.java:393)
        at com.smsgh.smpp.Components.Database.MTProc.getAll(MTProc.java:67)
..................................................
        Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at redis.clients.util.RedisInputStream.fill(RedisInputStream.java:109)
        at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:45)
        at redis.clients.jedis.Protocol.process(Protocol.java:70)
        ... 31 more

这是我的 Johm 设置

public class Redis {

    @SuppressWarnings("unused")
    private static Logger logger = LoggerFactory.getLogger(Redis.class);
    private static Redis redis = new Redis();
    protected JedisPool jedisPool;

    /**
     * 
     */
    private Redis() {
        jedisPool = new JedisPool(new Config(), "localhost", 6379);
        JOhm.setPool(jedisPool);
        // purgeRedis();
    }

    protected void purgeRedis() {
        Jedis jedis = jedisPool.getResource();
        jedis.flushAll();
        jedisPool.returnResource(jedis);
    }

    public synchronized static Redis getInstance() {
        if (redis == null)
            redis = new Redis();
        return redis;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        throw new CloneNotSupportedException("Clone is not allowed.");
    }

}

这是检索函数:

public Set<MT> getAll(){
    return JOhm.getAll(MT.class);
}

我的 Redis 已启动并正在运行 有人可以帮助我吗?

最佳答案

这是一个连接问题。

检查您是否尝试连接到正确的地址,以及您的所有连接配置是否正确。

关于java - 绝地武士和约翰异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595247/

相关文章:

java - 如何打印 Swing 窗使其适合一页

Symfony 4 启用使用 Monolog 的 Redis 处理程序进行日志记录

java - 使用 Redis 的大文件字数统计的最佳解决方案

Autocloseable 的 Java 代理(Jedis 资源)

java - 数据访问对象 (DAO) 是否应该委托(delegate)给其他 DAO 以提高可读性?

java - 按下按钮时重绘不起作用

node.js - 在发件人端显示两次聊天消息广播给其他人

java - 绝地武士集群 : Scan For Key does not work

java - 迪菲·赫尔曼 至 AES

c - C中结构属性的 "dot"定义是什么