`
cy729215495
  • 浏览: 129179 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

memcache分布式锁实现代码

阅读更多
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;

import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

@Controller
public class MemController {
	
   private AtomicInteger ai=new AtomicInteger(0);
    static {  
        String[] serverlist = { "127.0.0.1:11211"};  
        
        SockIOPool pool = SockIOPool.getInstance();  
        pool.setServers(serverlist);  
        pool.initialize();  
 }  
    
	private static final Logger logger = LoggerFactory.getLogger(MemController.class);
	
	@RequestMapping(value = "/testMem", method = RequestMethod.GET)
	public void testMem(HttpServletRequest req,Model model) {
	    MemCachedClient mc = new MemCachedClient();  
	    String key="test";
	    boolean b = mc.add(key, "1", 60000);
	    Integer object =null;
	    if(b){
	         object = (Integer) mc.get("test_atomic");
	        if(object==null){
	            mc.set("test_atomic", 1);
	        }else{
	            object=object+1;
	            mc.set("test_atomic", object);
	        }
	        
	        mc.delete(key);
	    }else{
	        ai.getAndIncrement();
	    }
	    
	    
	    System.out.println("--------------object:"+object+",error:"+ai.get());
	    
	    
	    
	}
	
	

}

 用ab测试了一遍,发现没有问题

分享到:
评论

相关推荐

    PyPI 官网下载 | memcache_lock-0.0.3.tar.gz

    《PyPI与memcache_lock-0.0.3:Python中的分布式锁实现》 在Python的世界里,PyPI(Python Package Index)是开发者们获取、分享和安装第三方库的重要平台。"PyPI 官网下载 | memcache_lock-0.0.3.tar.gz"这个标题...

    memcache的源代码.zip感觉自己水平高的,可以下载研究研究

    总结,通过研究Memcached的源代码,我们可以深入理解其设计原则和实现细节,这对于提升开发者的技能,尤其是分布式系统和缓存技术的理解具有重要价值。同时,这种实践也能帮助我们更好地应用和扩展Memcached,解决...

    Fourinone分布式计算框架

    基于FourInOne可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。 其次, FourInOne可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅...

    用PHP写的基于Memcache的Queue实现代码

    Memcache是一个广泛使用的分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用性能。在这个实现中,作者通过创建一个名为MQ的类,实现了基本的队列操作,如添加元素到队列(add)和从队列获取元素(get)。 ...

    memcache1.2.8源码分析(源码有注释+ppt说明)

    虽然memcache本身不支持分布式,但可以在客户端层面实现。源码分析有助于理解如何通过一致性哈希等算法实现数据的分布式存储和查找。 8. **性能优化** 为了提高性能,memcache在设计上做了很多优化,比如预分配...

    memcache源代码分析

    8. **分布式特性**:虽然memcached本身是单进程的,但在分布式环境中,多个memcached实例可以协同工作,通过一致性哈希算法实现数据的分布和负载均衡。 通过深入研究memcached的源代码,我们可以理解其内部机制,...

    Fourinone分布式并行计算四合一框架

     开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。...

    YurunLock PHP阻塞锁和非阻塞锁

    YurunLock库支持四种不同的锁实现:文件锁、Redis锁、Memcache锁和Memcached锁。这些不同的实现方式提供了不同的性能和可靠性特性: 1. 文件锁:基于文件系统,简单易用,但可能受到文件系统的限制,如并发性能较低...

    PHP阻塞锁和非阻塞锁机制

    在这个压缩包中,`Yurunsoft/YurunLock-d6d0e9f`可能包含了这个库的源代码,包括针对文件、Redis、Memcache和Memcached的锁实现。通过使用这个库,开发者可以轻松地在PHP项目中集成锁机制,提升并发环境下的程序稳定...

    Memcache客户端Enyim.Caching的演示实例以及Enyim.Caching.dll和log4net.dll

    5. **分布式锁**:Enyim.Caching支持分布式锁,使得在多节点环境中,同一资源的访问可以得到有效的并发控制。 6. **性能监控**:集成log4net日志框架,可以记录操作日志,便于性能分析和问题排查。 7. **扩展性**...

    php实现memcache缓存示例讲解

    此外,memcache还可以用来缓存数据库查询结果、页面渲染结果,以及通过memcache分布式特性实现的会话存储等。 在进行共享内存和memcache操作时,开发者需要注意处理好共享内存段的创建、打开、写入、读取、关闭和...

    php_memcache

    Memcache是一款广泛使用的分布式内存对象缓存系统,它能够将数据存储在内存中,避免频繁地读取硬盘,从而显著提升数据获取速度。本文将深入探讨如何在PHP环境中集成并使用Memcache。 1. **PHP Memcache扩展介绍** ...

    批量获取memcache值并按key的顺序返回的实现代码

    在这里,`$cas` 参数是一个可选的Cas标识符,用于实现乐观锁机制,确保数据的一致性。如果某些键没有命中(即不存在于Memcache中),`$cas` 会包含命中的键对应的Cas值。为了处理未命中的键,你可以遍历 `$cas`,...

    PHP中使用Memache作为进程锁的操作类分享

    - 类的实现代码直接给出,应用开发者可以直接使用这些代码实现PHP中的进程锁功能。 - 文件中可能还提供了如何在实际项目中应用这个类的示例代码,由于文件内容的缺失,未能展示。 使用Memcache实现PHP进程锁时,...

    go语言memcached客户端.zip

    5. **并发安全**:由于Go语言支持并发编程,客户端库必须确保在多线程环境下安全操作,可能通过使用锁或者channel来实现。 6. **键值管理**:包括键的生成策略、过期时间设置以及键的大小限制等。 7. **性能优化**...

    PHP使用memcache缓存技术提高响应速度的方法

    在某些情况下,为了避免缓存雪崩或缓存穿透等问题,还需要采取相应的策略和设计模式,如设置随机过期时间、使用分布式锁等。 综上所述,PHP结合memcache缓存技术可以显著提高Web应用的响应速度和性能。通过合理地...

    fourinone-3.04.25

    开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。...

    php并发加锁示例

    而Memcache锁是利用Memcache缓存系统的原子操作来实现分布式锁,通过set和add等命令进行锁的获取与释放。 文章提供了LockSystem.php示例代码,这段代码的设计目的是为了在PHP中实现锁机制。LockSystem类提供了一个...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle db2 缓存 redis 数据结构 持久 ...

Global site tag (gtag.js) - Google Analytics