memcache CAS实现原子操作
来源:互联网 发布:webuploader php后端 编辑:程序博客网 时间:2024/05/16 06:21
背景: 多个分布式系统实现计数器累加。
protected Boolean execute() throws Exception {
String memcachedKey = "testCAS";
Boolean exist = true;
try {
exist = memcachedService.add(memcachedKey, 1 ,60000);
if (exist) {
exist = false;
} else {
exist = checkExecuteOver(memcachedKey);
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return exist;
}
public Boolean checkExecuteOver(String memcachedKey) throws Exception {
MemcachedItem memcachedItem = memcachedService.gets(memcachedKey);
Boolean exist;
long casUnique = memcachedItem.getCasUnique();
int value = (int) memcachedItem.getValue();
if (value >= (distributed.getAllNumberList().size() - 1)) {
exist = true;
} else {
boolean unanimous = memcachedService.cas(memcachedKey, value + 1 ,casUnique);
if (unanimous) {
exist = false;
} else {
// 版本号不一致 重新计算
exist = checkExecuteOver(memcachedKey);
}
}
return exist;
}
- memcache CAS实现原子操作
- 使用循环CAS实现原子操作
- 使用循环CAS实现原子操作
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- CAS原子操作实现无锁及性能分析
- Memcache的原子性操作
- php操作memcache原子递增操作
- memcached 原子性操作 CAS模式
- 窗口最大值数组
- 高性能JavaScript模板引擎原理解析
- sdk接入
- 第三周项目2-建设“顺序表”算法库
- block_dump观察Linux IO写入的具体文件
- memcache CAS实现原子操作
- 15.Android 异步更新UI 技巧
- Singleton
- 对话框显示图像的简单方法
- xib自定义cell,代码修改cell里控件frame加载后不生效,下一次reloaddata改变?
- 第三周实践项目-顺序表的基本运算
- poj2385+动态规划有点还 不能完全理解
- javascript 方法 prototype属性
- android NotificationCompat.Builder 使用