memcached/redis/localcache
文章平均质量分 68
猫头哥
创业中的猫头哥
展开
-
memcached(三)内存管理
基本概念:slab,page,chunk。 slab,是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同slab有不同的chunk size。具体分配多少个slab由参数 -f (增长因子)和 -n (chunk最小尺寸)决定的。 page,可以理解为内存页。大小固定为1m。slab会在存储请求时向系...2013-11-05 21:16:45 · 80 阅读 · 0 评论 -
memcached(十七)协议命令格式
memcached的管理使用的是telnet登录服务器 telnet 127.0.0.1 11211 [noreply]\r\ncas [noreply]\r\n : "set", "add", "replace", "append" or "prepend"set:“存储这个数据”,一般是更新已有的缓存,也可以用于新增。add:新增缓存,缓存中不...2014-01-16 23:06:27 · 117 阅读 · 0 评论 -
memcached(十九)并发原语CAS与GETS操作
最近笔者自己的项目中,遇到了乐观锁的需求。但是redis没有这个操作,无奈,看了memcache天然的支持这种并发原语,即:GETS和CAS操作。因此准备打算继续使用REDIS,业务没有那么强的时序执行要求,因此可以使用没有CAS的算法在某种程度上解决。 我们为什么要使用这种并发原语呢?如果是单机版的,我们可以通过通过加锁同步就可以解决执行时序的问题。但是我们的应用是分布式的,无...2014-06-28 23:43:03 · 285 阅读 · 0 评论 -
memcached(一)初识
官方地址:http://memcached.org/【简介】 为什么会有Memcache和memcached两种名称? 其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名。 Memcache官方网站:http://www.danga.com/memcached,http://memcached.org/ 针对WEB2...2013-09-17 12:31:57 · 88 阅读 · 0 评论 -
memcached(二)安装
1【libevent】选择其中之一即可1.1 编译安装tar -zxvf libevent-1.4.14b-stable.tar.gz //先解压缩cd libevent-1.4.14b-stable //切换到libevent的目录中./configure --prefix=/usr/libevent //指定安装路径到/usr/目录下make //编译make i...2013-09-17 12:39:04 · 107 阅读 · 0 评论 -
memcached(四)客户端初步
客户端支持各种语言,许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的语言就有[list][*]Perl[*]PHP[*]Python[*]Ruby[*]C#[*]C/C++[*]Lua[*]JAVA[/list]下面笔者说下JAVA的客户端MemcachedClientspymemca...2013-09-17 14:59:50 · 76 阅读 · 0 评论 -
memcached(十八)缓存业务逻辑
在高并发的网站只用,缓存的作用之一,就是保存持久层的查询结果。而如何保证缓存里的数据和持久层里数据的一致性,是我们关注的问题。既然是缓存,我们是可以接受短时间内的不一致性。但是最重要保持一致。所以根据业务逻辑,我们有以下两种常用的方式:[b]读取[/b]读取缓存如过不存在,则读取持久层设置缓存[b]更新[/b]删除缓存读取持久层设置缓存如...2014-03-13 14:05:48 · 123 阅读 · 0 评论 -
memcached(五)单台服务器部署单线程性能测试
[size=x-large]一 服务器配置[/size][b]1)cpu[/b]2颗 Intel(R) Xeon(R) CPU E5620@2.40GHzprocessor : 15vendor_id : GenuineIntelcpu family : 6model : 44model name : In...2013-09-25 15:21:50 · 142 阅读 · 0 评论 -
memcached(六)调优经验
[size=x-large]一 监控[/size]查看memcahe服务器的状态,通常我们使用2个命令1)telnet 127.0.0.1 11211查看全局stats查看slabstats slabs查看itemstats items2)vmstat 1 -S M[size=x-large]二 调优[/size]根据笔者个人经验,memca...2013-09-25 22:32:52 · 257 阅读 · 0 评论 -
本地缓存(一)ehcache/jcs/cache4j/jcs的性能测试与使用场景分析
前言 之前在网上看过几篇本地缓存的性能测试,但只看到了一个结果,没有看到具体测试的方案和使用场景。因此猫头哥放假期间,整理了一份阅兵版的缓存性能分析。另外朋友们需要脱离一个认知误区,就是不要拿本地缓存和分布式缓存做比较。localcache的作用,是解决分布式缓存节点过热问题,作为L1 cache挡在分布式缓存的前面。 关于测试过程中,要注意以下几个事...2015-09-05 22:02:00 · 528 阅读 · 0 评论 -
memcached(二十)Dogpile效应
Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应) 避免Memcached缓存的Dogpile效应Memcached的read-through cache流程:[list][*]A客户端读取缓存[*]B没有的话就由客户查询持久层[*]C生成缓存[*]D返回数据[/list]Mem...原创 2015-10-03 09:34:46 · 333 阅读 · 0 评论 -
memcached(十六)缓存基本知识
[size=large]缓存简介[/size]缓存,让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU--L1/L2--内存--磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找...2014-01-12 23:52:06 · 81 阅读 · 0 评论 -
memcached(十五)binary vs text protocols
memcached服务端支持2种传输协议,还有一种XMemcached对于Kestrel的支持实现text protocol文本协议传输的时候,序列化会产生大量的冗余内容。例如255,会使用3个字节。但是调试方便,在服务端可以清晰的看到文本内容。binary protocol二进制协议传输的时候,序列化产生的内容较少。内容紧凑。比如255,则使用1个字节。但是调试的时候,在...2014-01-12 11:30:31 · 206 阅读 · 0 评论 -
memcached(十四)memcached单次请求性能分析
试验环境和IP服务器:10.10.64.83客户端:10.10.64.82配置2颗Intel(R) Xeon(R) CPU E5620 @ 2.40GHz服务器启动参数./memcached -d -m 1024 -p 11211 -P /tmp/memcached.pid -c 1024 -f 1.25 -n 80 -t 16 客户端代码单线程循环一万...2014-01-12 01:46:11 · 154 阅读 · 0 评论 -
memcached(七)failure模式和standby节点
关于failure模式,可以看下memcached官方文档的解释https://code.google.com/p/memcached/wiki/NewConfiguringClient#Failure,_or_Failover 展开来说,在某个memcached节点挂掉或者由于其他故障连接断开的时候,大部分客户端的默认策略都是failover的,也就是会查找下一个可用的me...原创 2013-11-06 23:37:19 · 388 阅读 · 0 评论 -
memcached(八)一致性哈希高级应用
[size=xx-large]简介[/size] 一致性哈希算法在1997年由麻省理工学院提出(参见扩展阅读[1]),设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 英文解释 Consistent hashing is a scheme ...原创 2013-11-07 09:44:42 · 146 阅读 · 0 评论 -
memcached(九)客户端高级-Java
[size=xx-large]简介[/size]目前常用的Java客户端有3种。[list][*]MemcachedClient[*]spymemcached[*]xmemcached[/list],MemcachedClient:其中笔者亲测,在高并发的时候,容易报异常,Out Of Memory。spy:的性能比xmemcached略差。xmemcached...原创 2013-11-08 10:13:00 · 125 阅读 · 0 评论 -
memcached(十二)1.4的stats命令
[code="js"]STAT pid 10937 #服务器进程的进程号STAT uptime 3120815 #服务器自运行以来的秒数STAT time 1369216979 #当前服务器上的UNIX时间STAT ve...原创 2013-11-08 10:52:04 · 82 阅读 · 0 评论 -
memcached(十)simple-spring-memcached
[size=xx-large]简介[/size]simple-spring-memcached是spring和xmemcached的集成使用。用注解的方式使用缓存。官方地址http://code.google.com/p/simple-spring-memcached/wiki/UserGuide注解说明http://blog.csdn.net/a9529lty/article...原创 2013-11-08 22:22:24 · 103 阅读 · 0 评论 -
memcached(十一)memcached-session-manager
[size=xx-large]介绍[/size]memcached-session-manager是将tomcat中的session,托管到memcache中管理,实现tomcat的无状态应用。但是在笔者的经验中,我们一般开发的时候,不会使用这个技术。而是将现有的项目中使用了session,快速升级为无状态应用时,会使用这种办法。相关官方https://code.google....原创 2013-11-08 23:08:15 · 164 阅读 · 0 评论 -
redis(一)初识
[size=xx-large]官网[/size]http://redis.io/中国社区http://redis.cn/[size=xx-large]介绍[/size]Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集...原创 2013-11-26 10:03:16 · 71 阅读 · 0 评论 -
redis(二)主从复制
[size=xx-large]一、Redis的Replication:[/size] Redis中配置Master-Slave模式非常简单,下面的列表清楚的解释了Redis Replication的特点和优势。 1). 同一个Master可以同步多个Slaves。 2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步...2013-11-26 10:05:54 · 73 阅读 · 0 评论 -
redis(三)主要数据结构
值的长度不能超过1GB计数器原子递增:incrmap存储key-value的数据list有序数组Redis lists基于Linked Lists实现。list可被用来实现聊天系统。还可以作为不同进程间传递消息的队列。set无序的测某个元素是否存在,以及实现交集,并集,差集等等sorted set有序集合geo(red...原创 2013-11-26 10:06:57 · 62 阅读 · 0 评论 -
memcached(十三)memcached内存占用分析
最近又在研究memcached,如果想进一步研究如何使用分布式缓存,我们就需要知道具体的数据在内存中占用的情况。在启动memcached的时候,增加参数 -vv控制太可以显示设置的细节。例如:./memcached -d -m 2m -p 11211 -c 1024 -f 1.25 -n 80 -t 16 -u root -vv设置命令setmemcach...2013-12-06 21:30:45 · 685 阅读 · 0 评论 -
redis(四)vs memcache
[color=red]redis使用单核,memcahe可以使用多核[/color]平均每一个核上Redis在存储小数据时比Memcached性能更高[color=red]value性能区别[/color]在100k以上的数据中,Memcached性能要高于Redis。key-value这样简单的数据储存,memcache的内存使用率更高[color=red]持久化、主从复...原创 2017-07-04 14:35:27 · 356 阅读 · 0 评论