J2Cache调用Redis的setnx和getset

private CacheChannel cacheChannel = SpringUtil.getBean(CacheChannel.class);
private static class Holder {
        private static J2CacheUtils single = new J2CacheUtils();
}
public static CacheProvider getL2Provider() {
        return Holder.single.cacheChannel.getL2Provider();
}
public static boolean setNxWithL2Redis(String region, String key, String val) {
        CacheProvider provider = getL2Provider();
        if (provider instanceof RedisCacheProvider) {
            RedisCacheProvider redisCacheProvider = (RedisCacheProvider) provider;
            RedisClient redisClient = redisCacheProvider.getRedisClient();
            Long result = redisClient.get().setnx((region + ":" + key).getBytes(), val.getBytes());
            return result == 0 ? false : true;
        } else {
            throw new RuntimeException("L2缓存不是Redis");
        }
}
public static String getSetWithL2Redis(String region, String key, String val) {
        CacheProvider provider = getL2Provider();
        if (provider instanceof RedisCacheProvider) {
            RedisCacheProvider redisCacheProvider = (RedisCacheProvider) provider;
            RedisClient redisClient = redisCacheProvider.getRedisClient();
            byte[] result = redisClient.get().getSet((region + ":" + key).getBytes(), val.getBytes());
            return new String(result);
        } else {
            throw new RuntimeException("L2缓存不是Redis");
        }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容