java110
2023-05-10 87b2e47a1e3e253f54dceac7a8e8f11e08233884
optimize redis client
1个文件已修改
31 ■■■■■ 已修改文件
java110-core/src/main/java/com/java110/core/cache/JedisClientTemplate.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/cache/JedisClientTemplate.java
@@ -8,6 +8,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
import java.util.List;
@@ -42,7 +43,17 @@
        return redisTemplate.execute(new RedisCallback() {
            public String doInRedis(RedisConnection connection) {
                redis.clients.jedis.Jedis jedis = (redis.clients.jedis.Jedis) connection.getNativeConnection();
                return jedis.set(key, value, nxxx, expx, time);
                Object nativeConnection = connection.getNativeConnection();
                // 集群
                if (nativeConnection instanceof JedisCluster) {
                    return ((JedisCluster) nativeConnection).set(key, value, nxxx, expx, time);
                }
                // 单机
                if (nativeConnection instanceof Jedis) {
                    return ((Jedis) nativeConnection).set(key, value, nxxx, expx, time);
                }
                return "";
            }
        }, true).toString();
    }
@@ -140,7 +151,21 @@
    @Override
    public Object eval(String script, List<String> keys, List<String> args) {
        DefaultRedisScript<Long> redisScript = new DefaultRedisScript(script,Long.class);
        return redisTemplate.execute(redisScript, keys, args);
        Object exeRet = redisTemplate.execute((RedisCallback<Object>) connection -> {
            Object nativeConnection = connection.getNativeConnection();
            // 集群
            if (nativeConnection instanceof JedisCluster) {
                return ((JedisCluster) nativeConnection).eval(script, keys, args);
            }
            // 单机
            if (nativeConnection instanceof Jedis) {
                return ((Jedis) nativeConnection).eval(script, keys, args);
            }
            return null;
        });
        //return redisTemplate.execute(redisScript, keys, args);
        return exeRet;
    }
}