java110
2023-07-19 97d01c4e4588cb1ee38a633a9a26c539ff101462
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;
@@ -31,7 +32,7 @@
    @Override
    public String set(byte[] key, byte[] value) {
        redisTemplate.opsForValue().set(key, value);
        redisTemplate.opsForValue().set(new String(key), value);
        return "";
    }
@@ -39,23 +40,46 @@
    public String set(String key, String value, String nxxx, String expx, int time) {
//        redisTemplate.opsForValue().set(key, value,nxxx,expx,time);
//        return "";
        return redisTemplate.execute(new RedisCallback() {
        Object ext = redisTemplate.execute(new RedisCallback() {
            public String doInRedis(RedisConnection connection) {
                Jedis jedis = (Jedis) connection.getNativeConnection();
                return jedis.set(key, value, nxxx, expx, time);
                //redis.clients.jedis.Jedis jedis = (redis.clients.jedis.Jedis) connection.getNativeConnection();
                Object nativeConnection = connection.getNativeConnection();
                // 集群
                if (nativeConnection instanceof JedisCluster) {
                    return ((JedisCluster) nativeConnection).set(key, value, nxxx, expx, time);
                }
                // 单机
                if (nativeConnection instanceof redis.clients.jedis.Jedis) {
                    return ((redis.clients.jedis.Jedis) nativeConnection).set(key, value, nxxx, expx, time);
                }
                return "";
            }
        }, true).toString();
        }, true);
        if (ext == null) {
            return "";
        }
        return ext.toString();
    }
    @Override
    public String get(String key) {
        return redisTemplate.opsForValue().get(key).toString();
        Object value = redisTemplate.opsForValue().get(key);
        if (value == null) {
            return null;
        }
        return value.toString();
    }
    @Override
    public byte[] get(byte[] key) {
        return (byte[]) redisTemplate.opsForValue().get(key);
        Object value = redisTemplate.opsForValue().get(new String(key));
        if (value == null) {
            return null;
        }
        return (byte[]) value;
    }
    @Override
@@ -109,7 +133,7 @@
    @Override
    public Long del(byte[] key) {
        redisTemplate.delete(key);
        redisTemplate.delete(new String(key));
        return 1L;
    }
@@ -131,7 +155,21 @@
    @Override
    public Object eval(String script, List<String> keys, List<String> args) {
        DefaultRedisScript redisScript = new DefaultRedisScript(script);
        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 redis.clients.jedis.Jedis) {
                return ((redis.clients.jedis.Jedis) nativeConnection).eval(script, keys, args);
            }
            return null;
        });
        //return redisTemplate.execute(redisScript, keys, args);
        return exeRet;
    }
}