Memcache CAS协议介绍及使用
2024-10-18 01:41:02
1.什么是CAS
所谓CAS,check and set,在写操作时,先检查是否被别的线程修改过。
基本原理非常简单,一言以蔽之,就是“版本号”。每个存储的数据对象,多有一个版本号。我们可以从下面的例子来理解:
如果不采用CAS,则有如下的情景:
第一步,A取出数据对象X;
第二步,B取出数据对象X;
第三步,B修改数据对象X,并将其放入缓存;
第四步,A修改数据对象X,并将其放入缓存。
我们可以发现,第四步中会产生数据写入冲突。
如果采用CAS协议,则是如下的情景。
第一步,A取出数据对象X,并获取到CAS-ID1;
第二步,B取出数据对象X,并获取到CAS-ID2;
第三步,B修改数据对象X,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID是否一致。结果是“一致”,就将修改后的带有CAS-ID2的X写入到缓存。
第四步,A修改数据对象Y,在写入缓存前,检查CAS-ID与缓存空间中该数据的CAS-ID是否一致。结果是“不一致”,则拒绝写入,返回存储失败。
这样CAS协议就用了“版本号”的思想,解决了冲突问题。
最新文章
- 从零开始学 Java - CentOS 下安装 Nginx
- Python验证码6位自动生成器
- python 模块库
- C# PInvoke(DllImport使用) 进阶教程(一)转
- 【OOAD】OOAD概述
- 使用apache和htaccess对目录访问设置密码保护配置教程
- SQL Server数据库(SQL Sever语言 存储过程及触发器)
- eclipse项目持续报红解决
- Android2.2 API中文文档——View
- IOS 7 Study - UIActivityViewController(Presenting Sharing Options)
- 初试zabbix
- php 微信3 自定义菜单
- cocos2dx-lua绑定自定义c++类(二)
- MassMutual Interview Questions
- C# 枚举的使用
- C指针 指针和数组 二维数组的指针 指针应用
- Apache Spark技术实战之6 --Standalone部署模式下的临时文件清理
- c# 读取excels
- linux学习笔记 yum 在线管理软件包
- 一套oracle的练习题
热门文章
- tabindex 属性
- Effective C++(Third Edition) Item29 为“异常安全”而努力是值得的
- TCP/IP理解
- Datawhale MySQL 训练营 Task5
- jquery 3.0 新版本
- git查看添加删除远程仓库
- 07-matplotlib-箱线图
- 笨办法学Python - 习题8-10: Printing &; Printing, Printing
- Linux下端口映射工具rinetd
- Vue 列表渲染及条件渲染实战