1. 非CAS

首先看一个不是CAS的Memcached程序实例。实例的问题原型,见上一篇博文。

程序实例:

  1. package com.sinosuperman.memcached;
  2. import java.io.IOException;
  3. import java.net.InetSocketAddress;
  4. import net.spy.memcached.MemcachedClient;
  5. public class Test {
  6. public static void main(String[] args) throws IOException {
  7. MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  8. cache.set("x", 1800, "Love");
  9. String obj1 = (String) cache.get("x");
  10. String obj2 = (String) cache.get("x");
  11. obj2 = "Michael";
  12. cache.set("x", 1800, obj2);
  13. System.out.println("Non-CAS 2:\t" + obj2);
  14. System.out.println("Non-CAS 1:\t" + obj1);
  15. }
  16. }

运行结果:

  1. 2011-12-18 23:12:39.836 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
  2. 2011-12-18 23:12:39.843 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@b09e89
  3. Non-CAS 2:  Michael
  4. Non-CAS 1:  Love

可见在多个Client操作时,一定会引起写不一致性的问题。

2. CAS

程序实例:

  1. package com.sinosuperman.memcached;
  2. import java.io.IOException;
  3. import java.net.InetSocketAddress;
  4. import net.spy.memcached.CASValue;
  5. import net.spy.memcached.MemcachedClient;
  6. public class Test {
  7. @SuppressWarnings("unchecked")
  8. public static void main(String[] args) throws IOException {
  9. MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
  10. cache.set("y", 1800, "Love");
  11. CASValue casValue1 = cache.gets("y");
  12. CASValue casValue2 = cache.gets("y");
  13. cache.cas("y", casValue2.getCas(), casValue2.getValue());
  14. System.out.println("CAS 2:\t" + casValue2.getCas());
  15. System.out.println("Value 2:\t" + casValue2.getValue());
  16. System.out.println("CAS 1:\t" + casValue1.getCas());
  17. System.out.println("Value 1:\t" + casValue1.getValue());
  18. }
  19. }

运行结果:

  1. 2011-12-18 23:07:14.528 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
  2. 2011-12-18 23:07:14.541 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@1621e42
  3. CAS 2:  11
  4. Value 2:    Love
  5. CAS 1:  11
  6. Value 1:    Love

实战Memcached缓存系统(5)Memcached的CAS程序实例相关推荐

  1. 实战Memcached缓存系统

    实战Memcached缓存系统 1. What is Memcached? Memcached是一个免费开源.高性能.分布式的内存对象缓存系统.Memcached是在内存中,为特定数据(字符串或对象) ...

  2. 实战Memcached缓存系统(1)Memcached基础及示例程序

    尊重知识,转载请注明本文来自:编程艺术家Poechant的CSDN博客 http://blog.csdn.net/potent 1.Cache定义 (1)狭义概念:用于CPU的相对高速处理与主存(Ma ...

  3. 安装telnet_Flask干货:Memcached缓存系统——Memcached的安装

    图 | 源网络文 | 5号程序员 Memcached缓存系统是目前使用最广泛的高性能分布式内存缓存系统,是一个自由开源的高性能分布式内存对象缓存系统. 国内外众多大型互联网应用都选择Memcached ...

  4. Memcached 缓存系统的-介绍、安装以及应用

    一. memcached 是什么? memcached is a high-performance, distributed memory object caching system, generic ...

  5. 分布式缓存系统之Memcached

    简单介绍: Memcache缓存数据库:减少数据库压力.高性能的分布式内存缓存服务器,用于动态Web应用,减少I/O,提高web访问速度以减轻数据库负载,以提高动态Web应用的速度.提高可扩展性.利用 ...

  6. Memcached 数据缓存系统

    Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...

  7. Linux分布式缓存系统——memcached+LAMP环境搭建+监控

    概述 memcached简介 Memcached是一个开源.高性能.分布式内存对象缓存系统. Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串.对象),这些数据 ...

  8. .NET下实现分布式缓存系统Memcached

    [IT168 技术文档]在Web应用程序中,数据通常保存在RDBMS中,应用服务器从数据库中读取数据并在浏览器中显示.但随着数据量的增大.访问的集中,就会出现RDBMS的负载加重.数据库响应变慢.网站 ...

  9. Memcache缓存系统原理

    在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法.其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率. 除了能够提高服务的运行效 ...

最新文章

  1. 结对编程——单元测试
  2. 【数学专题】组合数学与计数
  3. 在PHPStorm中支持ThinkPHP代码提示
  4. 我的Android进阶之旅------gt;Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法...
  5. GPIO做输出还能作外部中断输入吗?
  6. PMCAFF公选了最美咖友,结果却是……
  7. 转:12个信号判断男人肾不好
  8. 再深入 HTTP Referer【转】
  9. [vue] 使用vue开发一个todo小应用,谈下你的思路
  10. mybatis学习(12)com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP
  11. gcn在图像上的应用_GCN的概念与应用
  12. 事态升级是什么意思_为什么有的人越到关键时刻越容易掉链子?记住不要有“赌徒心理”...
  13. UITableViewCell高度自适应变化
  14. LabVIEW入门教程
  15. s3c6410地址映射
  16. 私有云的优缺点_私有云的优缺点是什么?与公有云的区别
  17. 解读滴滴招股书:提供“移动“价值的全球共享经济企业潜力几何?
  18. 追踪邮件插件:Unlimited Email Tracker 安装——帮你时刻关注对方会不会点击你的邮件
  19. 性能测试之线上引流测试--让性能测试更真实更丰富
  20. IntelliJ IDEA下载

热门文章

  1. 直销会员管理系统(ASP.NET)之一
  2. 扬帆优配|银行股逆势走强 医药股震荡走高 资金流入防御类板块
  3. 店铺爆款是如何打造成功的
  4. 被呼叫方拒绝接收呼叫。 (异常来自 HRESULT:0x80010001 (RPC_E_CALL_REJECTED))
  5. 28、最小的k个数(TopK)
  6. vue-cli搭建的项目vue run dev运行端口一直变,为什么,请大神多多指教
  7. oracle删除重复rownum,distinct和rownum使用
  8. Lunascape:将FireFox、Safari和IE合为一体的浏览器
  9. 旋转延迟时间为什么要除以2?
  10. 广东有哪些计算机自主招生的大专学校,广州大专自主招生有哪些学校