使用redis事务保证原子性伪代码实现

使用redis事务保证原子性伪代码实现,第1张

使用redis事务保证原子性伪代码实现

1、redis的事务是通过MULTI、EXEC、DISCARD、WATCH、UNWATCH命令来实现的

原伪代码如下:

@Test
public void test1() {
    final String REDIS_ROCK = "redis_lock";
    String value = UUID.randomUUID().toString()+Thread.currentThread().getId();
    try{
        //TODO
    } finally {
        if (stringRedisTemplate.opsForValue().get(REDIS_ROCK).equalsIgnoreCase(value)) {
            stringRedisTemplate.delete(REDIS_ROCK);
        }
    }
}

使用事务改造后的伪代码如下:

@Test
public void test2() {
    final String REDIS_ROCK = "redis_lock";
    String value = UUID.randomUUID().toString()+Thread.currentThread().getId();
    try{
        //TODO
    } finally {
        while (true) {
            stringRedisTemplate.watch(REDIS_ROCK);
            if (stringRedisTemplate.opsForValue().get(REDIS_ROCK).equalsIgnoreCase(value)) {
                stringRedisTemplate.setEnableTransactionSupport(true);
                stringRedisTemplate.multi();
                stringRedisTemplate.delete(REDIS_ROCK);
                List list = stringRedisTemplate.exec();
                if (list == null) {
                    continue;
                }
            }
            stringRedisTemplate.unwatch();
            break;
        }
    }
}
					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)