springboot redisTemplate简单锁-简记

让人想犯罪 __ 提交于 2020-02-26 00:16:56
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

/**
     * 简单锁 10s
     */
    @SuppressWarnings("ConstantConditions")
    private boolean sampleLock(String lockName){

        return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
            Object obj = redisConnection.execute("set",
                    getBytes("DS_REAL_FEE_LOCK_" + lockName),
                    getBytes("lockIt"),
                    getBytes("NX"),
                    getBytes("EX"),
                    getBytes("10"));
            return obj != null;
        });
    }

    private byte[] getBytes(String obj){
        return obj.getBytes(StandardCharsets.UTF_8);
    }

 

当spring boot集成redis但是又未引入jedis时,简单锁写法如上

 

当spring boot集成redis同时又引入了jedis时,简单锁写法如下

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

/**
     * 简单锁 10s
     */
    @SuppressWarnings("ConstantConditions")
    private boolean sampleLock(String lockName){

        return redisTemplate.execute((RedisCallback<Boolean>) redisConnection -> {
            RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
            RedisSerializer keySerializer = redisTemplate.getKeySerializer();
            Object obj = connection.execute("set", 
                                keySerializer.serialize(key), 
                                valueSerializer.serialize(value),
                                SafeEncoder.encode("NX"), 
                                SafeEncoder.encode("EX"), 
                                Protocol.toByteArray(exptime));
            return obj != null;
        });
    }

    private byte[] getBytes(String obj){
        return obj.getBytes(StandardCharsets.UTF_8);
    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!