1.简单介绍

Memcached 是一个 高性能的 分布式 内存对象缓存系统,用于动态Web应用降低数据库负载,提升性能。

2.试用场景

1.变化频繁,具有不稳定性的数据 (比方用户在线状态、在线人数..)

2.门户站点的新闻等,认为页面静态化仍不能满足要求,能够放入到memcache中.

什么样的数据不适合放入memcached中?

(银行,股票。证券系统.)

过大的数据不能放入到memcache(优酷网.)

--我自己的一个小结怎样决定是否使用memcached

--假设是一个小站点,pv值不大,就不考虑使用memcache了

--变化频繁,查询频繁,可是不一定写入数据库(适合memcache)

--变化频繁, 一变化就要入库[比方股票,金融.](不适合memcache)

--变化不频繁,查询频繁,无论如不入库,都比較适合memcache。

3.工作原理

Memcached的奇妙来自两阶段哈希(two-stage hash)。Memcached就像一个巨大的、存储了非常多<key,value>对的哈希表。通过key。能够存储或查询随意的数据。 client能够把数据存储在多台memcached上。

当查询数据时,client首先參考节点列表计算出key的哈希值(阶段一哈 希),进而选中一个节点;client将请求发送给选中的节点,然后memcached节点通过一个内部的哈希算法(阶段二哈希),查找真正的数据 (item)。

ex:

如果有3个client1, 2, 3,3台memcached A, B, C: Client 1想把数据value”张三”以key “zs”存储。Client 1首先參考节点列表(A, B, C),计算key “zs”的哈希值。假memcached B被选中。接着,Client 1直接connect到memcached B,通过key “zs”把数据”张三”存储进去。

Client 2使用与Client 1同样的client库(意味着阶段一的哈希算法同样),也拥有同样的memcached列表(A, B, C)。

于是,经过同样的哈希计算(阶段一)。Client
2计算出key “zs”在memcached B上,然后它直接请求memcached B,得到数据”张三”。



4.FAQ

a.memcached实现存储的算法:

LRU(近期最少使用)+超时机制

b.memcached的分布式特征

Memcached Server并不具有分布式特征,每一个Server都是独立执行的,各Server之间不存在通信获知其它节点状态和数据备份的功能。那么Memcached为什么还是分布式的缓存系统呢?事实上说到Memcached的分布式,是将Memcached Client结合在一起考虑的。

详细的分布式策略。由Client实现。也就是说Memcached的分布式,不是系统层的。而是应用层的。详细实现能够參考上面的工作原理。


c.memcached假设保证多线程数据的一致性?

通过CAS(Check And Set)协议来保证数据的一致性。CAS协议类似于Hibernate的乐观锁机制,通过设置版本来保证数据的一致性。

备注:博主将在未来祥解Memcached在java web应用程序中的使用,尽情期待!


欢迎大家一起讨论学习!

实用的自己收!

记录与分享,让你我共成长!

欢迎查看我的其它博客。我的博客地址:http://blog.csdn.net/caicongyang





Memcached初体验及原理解说的更多相关文章

  1. SpringBoot初体验及原理解析

    一.前言 ​ 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...

  2. Spring核心原理之IoC容器初体验(2)

    本文节选自<Spring 5核心原理> 1 IoC与DI基本概念 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现 ...

  3. .NET WebSockets 核心原理初体验

    上个月我写了<.NET gRPC核心功能初体验>, 里面使用gRPC双向流做了一个打乒乓球的Demo, 实时双向这两个标签是不是很熟悉,对, WebSockets也可以做实时双向通信. 本 ...

  4. Java8初体验(二)Stream语法详解

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...

  5. Knockout.js初体验

    前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个类库的设计很有意思.接下来就搞清楚什么是Knock ...

  6. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

  7. .NET自带IOC容器MEF之初体验

    .NET自带IOC容器MEF之初体验   本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuil ...

  8. Swift与C++混编 OpenCV初体验 图片打码~

    OpenCV初体验,给图片打码 提到OpenCV,相信大多数人都听说过,应用领域非常广泛,使用C++开发,天生具有跨平台的优势,我们学习一次,就可以在各个平台使用,这个还是很具有诱惑力的.本文主要记录 ...

  9. 215.Spring Boot+Spring Security:初体验

    [视频&交流平台] SpringBoot视频:http://t.cn/R3QepWG Spring Cloud视频:http://t.cn/R3QeRZc SpringBoot Shiro视频 ...

随机推荐

  1. iOS 发布应用时屏蔽NSLog

    在开发过程中,经常需要使用NSLog来进行调试,但是NSLog是非常影响性能的,所以我们应该在发布应用时屏蔽掉NSLog,但是如果通过手工的去一行一行的改得话,未免太枯燥与费时了,庆幸的是,我们可以通 ...

  2. hadoop默认3个核心配置文件说明

    1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知 ...

  3. Undefined symbols for architecture xxx

    解决方法: "Build Settings"->"Linking"->"Other Linker Flags" add the ...

  4. BZOJ 1058: [ZJOI2007]报表统计( 链表 + set )

    这种题用数据结构怎么写都能AC吧...按1~N弄个链表然后每次插入时就更新答案, 用set维护就可以了... --------------------------------------------- ...

  5. BZOJ 2561: 最小生成树(最小割)

    U,V能在最小(大)生成树上,当且仅当权值比它小(大)的边无法连通U,V. 两次最小割就OK了. --------------------------------------------------- ...

  6. 提高PHP编程效率

    1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id']的速度是$row[id]的7倍. 3.echo比print快,并且使用echo的多重 ...

  7. ASP.NET MVC Framework

    ASP.NET MVC Framework是微软在ASP.NET中所添加的一组类库,这组类库可以使用Model-View-Controller的设计模式来开发ASP.NET的应用程序.它与现有的ASP ...

  8. appium获取app应用的package和 activity。---新手总结(大牛勿喷,新手互相交流)

    从网上搜索的方法: 如下: 1.查看源码 2.日志法a.启动待测apkb.开启日志输出:adb logcat>D:/log.txtc.关闭日志输出:ctrl+cd.查看日志直接搜索 :Displ ...

  9. JQuery 限制文本框只能输入数字和小数点

    $(function(){ /*JQuery 限制文本框只能输入数字*/ $(".NumText").keyup(function(){ $(this).val($(this).v ...

  10. 以程序的方式操纵NTFS的文件权限(陈皓)

    http://blog.csdn.net/haoel/article/details/2905 http://blog.sina.com.cn/s/blog_7f91494101018nmn.html