memcached 失效的数据去了哪里了
来源:互联网 发布:java ee新手教程 编辑:程序博客网 时间:2024/04/27 08:00
先普及下memcached 数据有效期的感念
memcache.set(key,value,new Date(50)) 设置为50秒过期
memcache.set(key,value,new Date(System.currentTimeMillis()+5000)) 设置为50秒过期
第二个跟第一个的区别是当设置了这个时间点之后,它会以服务端的时间为准,也就是说如果本地客户端的时间跟服务端的时间有差值,这个值就会出现问题。
例:如果本地时间是20:00:00,服务端时间为20:00:10,那么实际上会是40秒之后这个缓存key失效
那么过期有效的数据,去了哪里了呢 ?memcached有类似Java的垃圾回收机制么?
memcached的缓存失效策略:
memcached的缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向memcached存储数据时,你可能会设置一个过期时间,可以是永久也可以是一段时间,但是如果一旦给memcached分配的内存使用完毕,则首先会替换掉已失效的数据,其次是最近最少使用的数据。
普及一点memcached的存储概念:
1、过期时间限制
memcached的过期时间并不能随便设置,有一个最大时限就是30天,若超过30天后,存储时返回true,但是在取数据的时候取不到。(在取数据的时候才去做验证,看看数据是否失效)
2、存储限制
键被限制在 250 字符之内。数据项不能超过 1M (这个值由其内存分配机制决定的),因为这是最大的块( slab )值。如果对数据超过1M的值进行set,则会返回FALSE。
memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下,会导致操作系统比memcached进程本身还慢。Slab Allocator就是为解决该问题而诞生的。Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题.
3、访问限制
最大同时连接数200.
那么又来了memcached连接数那么有限,该如何处理?
redis上场时间到!!
- memcached 失效的数据去了哪里了
- Saurik:我的iOS 6 TSS数据去哪里了?
- 说好的数据去哪里了(java-HashSet-HashMap)
- 土拨鼠哪里去了?
- 一元去哪里了
- 文件哪里去了
- 城管去哪里了?
- 文章去哪里了
- skbuff_head_cache去哪里了
- 凌乱--哪里去了
- 天,我的blog哪里去了?
- 我的图标到哪里去了?
- .NET的人去哪里了呢?
- 我上传的图片去哪里了?
- 中国人的想象力到哪里去了?
- 我们的时间去了哪里?
- 日本的高科技哪里去了?
- csdn的私信到哪里去了?
- ios开发所需图片尺寸汇总
- *leetcode #128 in cpp
- JavaSE入门学习51:多线程编程(二)
- BASH中关于变量内替换详解
- git flow
- memcached 失效的数据去了哪里了
- J2EE_Struts2_01
- JavaSE入门学习50:多线程编程(一)
- 任意数字n,分解n^2=a^2+b^2+c^2.... a,b,c是严格递增数列
- android当参数可变时,如何调用可变参数库函数
- 二分与贪心-圣诞老人的礼物(算法基础 第9周)
- Java多线程编程
- java.lang.IllegalArgumentException: Illegal character in query at index xxx:
- PropertyDescriptor