首先要说,以前还真少想过,一般都是自己设置需要的时间,没有涉及到Memcached最大缓存时间的问题,今天面试时,对方提出这个问题。
我看到的一行代码里,Memcached的缓存时间被设置为86400*24*4,
等于是96天。而当调用set去存储的时候,memcached会返回true。而当你用get的时候,就是相反的结果了: FALSE
。
要说BT呢,因为用到Memcached的人,通常不会去给缓存96天,这种情况下,更好的选择是DB、filecache或者其他。尽管BT,我
还是去测试了一下最长时间,得到的结果是: 30 days。去memcached源码里查了一下,这下就明白多了:
#define REALTIME_MAXDELTA 60*60*24*30
/*
* given time value that’s either unix time or delta from current unix time, return
* unix time. Use the fact that delta can’t exceed one month (and real time value can’t
* be that low).
*/
static rel_time_t realtime(const time_t exptime) {
/* no. of seconds in 30 days – largest possible delta exptime */
if (exptime == 0) return 0; /* 0 means never expire */
if (exptime > REALTIME_MAXDELTA) {
/* if item expiration is at/before the server started, give it an
expiration time of 1 second after the server started.
(because 0 means don’t expire). without this, we’d
underflow and wrap around to some large value way in the
future, effectively making items expiring in the past
really expiring never */
if (exptime <= process_started)
return (rel_time_t)1;
return (rel_time_t)(exptime – process_started);
} else {
return (rel_time_t)(exptime + current_time);
}
}
Memcached最大缓存时间为30d
, 而且从实际应用上,这么变态的时间也已经足够了。看源代码是终极办法啊。
分享到:
相关推荐
- **添加缓存**:使用`set(key, value, timeout)`方法,将键值对存入缓存,`timeout`表示过期时间。 - **获取缓存**:使用`get(key)`方法,根据键获取缓存值。 - **删除缓存**:使用`delete(key)`方法,根据键删除...
2. **配置**:配置文件通常为`/etc/memcached.conf`,可以设置监听端口、最大内存、超时时间等参数。 **四、Memcached的客户端使用** 1. **客户端库**:Memcached支持多种编程语言的客户端库,如Python、Java、PHP...
1. **合理的缓存策略**:根据业务需求设置合适的缓存时间,避免频繁更新数据导致的无效缓存。 2. **合理的键设计**:键应尽量简洁且具有唯一性,避免过长的键名影响性能。 3. **合理分配内存**:根据服务器资源和...
- **memcached的性能**:通过对缓存命中率、延迟时间等指标的监控,可以评估memcached的性能表现。 **5.3 兼容应用程序** - **TokyoTyrant案例**:TokyoTyrant是一个开源的高性能key-value存储系统,它可以与...
4. **数据过期机制**: 为避免内存无限增长,memcached允许为每个数据项设置一个过期时间,过期后该数据将自动被删除。 **三、memcached的安装与配置** 以本案例中的"memcached-1.2.6-win32-bin"为例,这是...
1. **缓存策略**:通过设置合适的缓存过期时间,平衡内存利用率和数据新鲜度。同时,使用LRU(Least Recently Used)策略,当内存满时,最近最少使用的数据会被自动淘汰。 2. **数据压缩**:对于大体积的缓存数据,...
2. **配置**: 配置文件通常为`/etc/memcached.conf`,可设置监听端口、最大内存、超时时间等参数。 3. **启动与停止**: 使用`service memcached start/stop/restart`命令进行服务的启停。 **四、使用方法** 1. **...
配置包括设置监听端口、最大内存使用量、超时时间等参数。在实际部署中,还需要考虑如何合理地分配内存、选择合适的哈希策略以及监控和调整缓存命中率。 **最佳实践** 1. **数据大小限制**:考虑到内存是有限的,...
然后,根据项目需求配置 Memcached,如设置监听的端口、最大内存大小等。配置完成后,启动 Memcached 服务,服务就会开始监听指定端口,等待客户端的连接。 **客户端接入** 对于项目中使用 Memcached,需要选择...
3. **缓存失效策略**:根据业务需求设定缓存的过期时间,或者使用惰性删除策略,只有在尝试获取数据时才检查是否过期。 4. **数据一致性**:处理数据库更新和缓存同步的问题,比如使用“写后读”策略,先更新数据库...
配置过程中,可以设置监听端口、最大内存使用量、缓存过期时间等参数。在服务器上启动Memcached服务后,就可以通过网络进行客户端连接。 **3. 使用与操作** Memcached提供了简单的文本协议,允许客户端通过TCP或...
3. 数据一致性:尽管Memcached不保证强一致性,但可以通过设置过期时间和更新策略来保持缓存数据的新鲜性。 Memcached的使用流程通常包括以下几个步骤: 1. 客户端向Memcached发送请求,检查请求数据是否已缓存。 2...
8. **可调整的性能参数**:用户可以根据实际需求调整Memcached的性能参数,如最大内存大小、超时时间、最大连接数等,以优化系统性能。 通过以上介绍,我们可以看到MemCached在分布式缓存中的重要作用。它不仅提供...
它的缓存是一种分布式的,也就是可 以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端, 同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!...
默认情况下,`memcached` 配置相对简单,可以在启动时通过命令行参数调整,例如设置监听端口、最大内存使用量等。在Linux上,可以通过编辑 `/etc/memcached.conf` 修改配置,然后重启服务使更改生效。 ### 四、使用...
- **配置参数**:可以通过命令行参数或配置文件调整缓存大小、端口号、最大连接数等参数。 - **启动与管理**:使用命令行工具启动、停止和检查Memcached服务状态。 - **防火墙设置**:确保Memcached的默认端口...
2. **配置**:配置文件一般位于/etc/memcached.conf,可设置监听端口、最大内存大小、超时时间等参数。 3. **客户端库**:有多种编程语言的客户端库,如Python、PHP、Java、Ruby等,它们提供API供开发者与Memcached...
2. **安装与配置**:在不同的操作系统(如Linux、Windows和iOS)上安装Memcached,配置服务器参数,如监听端口、最大内存使用量、超时时间等。 3. **客户端库**:学习使用各种编程语言(如Python的pylibmc、PHP的...
1. **配置**:配置Memcached时,你需要指定监听的端口、最大内存使用量、超时时间等参数。 2. **启动服务**:启动Memcached服务,确保其正常运行。 3. **客户端连接**:在应用程序中,使用相应的客户端库连接到...