memcached在多线程情况下是支持并发操作的,但是如果使用redis的话就发现redis是单线程,所以涉及到了并发的问题.
GET 获得键值后保证该键值不被其他客户端修改,直到函数执行完成后才允许其他客户端修改该键键值,这样也可以防止竞态条件.
watch可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)
RedisTemplate template = null;//这里配置自己的redis
template.watch("key");
template.multi();
template.opsForValue().set("key","value");
List exec = template.exec();
if (null==exec){
System.out.println("已经有其他线程更改了");
}else {
System.out.println("更改成功");
}