`

memcached高并发防止穿透db

阅读更多
//冲突延时 1秒 
private static final int MUTEX_EXP = 1;
 
//冲突键 
private static final String MUTEX_KEY_PREFIX = "MUTEX_";

 /** 
     * 冲突判定 
     * @param key 
     * @param exp 
     * @return true 冲突 
     */  
	private boolean isMutex(String key) {  
        boolean status = true;  
        try {  
            if (xmemcachedClient.add(MUTEX_KEY_PREFIX + key, MUTEX_EXP, "true")) {  
                status = false;  
            }  
        } catch (Exception e) {  
            logger.error(e.getMessage(), e);  
        }  
        return status;  
    }


	private List<RecommendDataView> getRecommendDataViewList(String key, int rid, int pageNum, int pageSize) {
		List<RecommendDataView> recommendDataViewList  = null;
		recommendDataViewList = getCache(key);
		if (recommendDataViewList == null) {
			if (!isMutex(key)) {
				recommendDataViewList = recommendDataService.getRecommendDataViewList(rid, pageNum, pageSize);
				if (recommendDataViewList != null) {
					cache(key, recommendDataViewList);
				}
				removeMutex(key);
			} else {
				while(true) {
				    try {
				    	int interval = 0;
						Thread.sleep(50);
						recommendDataViewList = (List<RecommendDataView>)getCache(key);
						interval++;
						if (interval > 5 || recommendDataViewList != null) {
							break;
						}
					} catch (InterruptedException e) {
						logger.info(e.getMessage(), e);
					}
				}
			}
		} 
	
		return recommendDataViewList;
	}

分享到:
评论

相关推荐

    基于Nginx和Memcached的高并发WEB服务器设计_戴华

    10. 关键词:并发服务器、高并发WEB服务器设计、Nginx、Memcached、分布式缓存、一致性哈希算法、云计算。 整体而言,文章所探讨的技术内容和知识点涉及了现代高性能WEB服务器设计的关键技术和策略,以及它们在实际...

    PHP MemCached 高级缓存应用代码

    Memcached是一种高性能、分布式内存对象缓存系统,它通过减轻数据库负担来加速动态Web应用程序的速度,提高可扩展性。其工作原理是将数据存储在内存中,提供快速的数据访问速度,尤其是在高并发场景下,能够显著提升...

    高并发web架构完整1

    《高并发Web架构完整1》是一份关于优化和构建高性能Web站点的综合资源,共分为五个部分。在当今互联网行业中,随着用户数量的急剧增长,Web应用必须具备处理高并发请求的能力,才能确保服务的稳定性和用户体验。本...

    Memcached 简单示例

    Memcached以其轻量级、高性能和简单易用的特点,成为了很多开发者的首选。 C#中的Memcached支持通常依赖于第三方库,如Enyim.Caching或StackExchange.Redis。这些库提供了与Memcached服务器交互的API,使得开发者...

    [Apache.MySQL.memcached.Perl开发高速开源网站

    例如,当网站访问量激增时,可以通过增加memcached服务器的数量来分散缓存压力,同时利用Perl的脚本灵活性快速调整业务逻辑,确保网站在高并发场景下依然能够稳定运行。此外,Apache的负载均衡功能还可以帮助分发...

    memcached安装包以及MemCachedClient

    它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可移植性强,广泛应用于多种编程语言环境。 **1. 安装 Memcached** 首先,你需要下载 Memcached 的源码包或预编译...

    高并发高流量网站构架

    并发高流量的网站架构设计问题,探讨了一系列关键技术和策略,旨在构建能够应对大规模用户访问压力的稳定、高效、可扩展的网站系统。 首先,对于高并发和高流量的挑战,通常采用负载均衡技术来分散服务器的压力。...

    java面试题_高并发、高可用、分布式(9题)

    在Java面试中,高并发、高可用和分布式是考察开发者技术深度和广度的重要领域。以下将详细解析这些关键知识点: 1. **高并发** 高并发是指系统在同一时间处理大量请求的能力。在Java中,实现高并发通常涉及线程...

    大数据高并发系统架构实战方案(全套视频+代码+课件)

    1.大数据高并发架构实战案例分享-概述 2.Piranha安装快速搭建LVS负载均衡集群 3.LVS负载均衡DR模式安装调试介绍 4.LVS负载均衡深入进阶实战 5.LVS调度策略及负载均衡原理深入 6.LVS深入及NAT集群调试 7.Nginx反向...

    memcached 64位 window

    由于其简单的设计和高效的性能,Memcached在许多高流量网站和应用中被广泛应用。 **64位系统的优势** 在64位Windows系统上运行Memcached,可以支持超过4GB的内存,这在处理大量数据时非常有用。64位版本可以更有效...

    多线程 高并发

    在IT领域,多线程和高并发是两个关键的概念,特别是在服务器端开发、分布式系统以及高性能计算中。这里,我们主要探讨的是如何通过编写多线程并发程序来优化应用程序的性能,提高系统的处理能力。 首先,多线程是指...

    《亿级流量Jαva高并发与网络编程实战》-源码.zip

    《亿级流量Java高并发与网络编程实战》是一本深入探讨如何处理大规模并发访问和高效网络编程的书籍。源码.zip文件包含的可能是作者为了配合书中的理论讲解而提供的实践代码示例。这本书的核心目标是帮助Java开发者在...

    高并发高性能服务器

    在IT领域,构建高并发高性能服务器是至关重要的技术挑战,特别是在大数据时代,处理大量用户请求、实时数据交换以及保持高效的服务响应成为系统设计的核心。本资料包提供的"高并发高性能服务器"源码提供了深入理解这...

    memcached_1.4.4.rar

    正确理解和使用Memcached,可以显著改善网站的性能,特别是在高并发和大数据量的场景下。然而,需要注意的是,Memcached并不适合长期存储数据,因为内存中的数据在服务器重启或内存满时可能会丢失。因此,它应当作为...

    memcached安装软件 libevent magent memcached

    Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载。它通过在内存中存储数据来提供快速的数据访问,从而提高应用的性能。本篇文章将详细讲解如何安装和配置memcached,...

    memcached1.4.5

    在 Memcached 中,libevent 用于异步非阻塞地处理网络通信,确保服务的高并发性能。libpthread-2.8.0.a 是线程库,可能用于支持多线程环境下的 Memcached 实例,提升并发处理能力。 1.bat 文件可能是用于启动或配置...

    memcached windows稳定版

    在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...

    nginx+tomcat7+memcached session会话保持

    在构建高性能、高可用性的Web应用系统时,会话保持是一个关键环节,它涉及到用户登录状态、购物车信息等重要数据的持久化处理。本文将详细介绍如何在Nginx、Tomcat7和Memcached的环境下实现会话保持,确保用户在多台...

    分布式缓存Memcached实例

    总的来说,Memcached作为一个强大的分布式缓存解决方案,在提升系统性能和应对高并发访问方面具有显著优势,是现代Web应用中的重要组件。理解其工作原理和应用场景,以及如何有效利用和管理,对于优化系统性能至关...

    memcached服务器端memcached.exe 下载

    Memcached是一款高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。它通过在内存中存储数据来快速访问,避免了反复读取硬盘上的数据,从而提高了应用程序的响应速度。 标题“memcached...

Global site tag (gtag.js) - Google Analytics