0 0

memcache如何缓存大的(超出缓存限制大小)列表?33

实际编程中有时需要缓存元素比较多的列表,但是memcache对单个缓存对象的大小有限制,所以显然不能直接缓存整个比如包含了10000个对象的列表,此时可以在列表中只容纳对象的ID,可以大大减小列表的内存占用。但是即使如此,列表如果过长,仍然可能超出大小限制。请问一般这种情况应该采取什么缓存策略?

问题补充:这么做貌似有些复杂,应该有更简洁的办法。

Rainbamboo 写道
这个要根据列表长度拆分成N个子列表,原来的总列表只存这N个子列表的Key,如果还不行,就需要接着拆


问题补充:业务层优化是个方向。

“将对象转为数组存储,然后分布式存储”,这个能不能说详细点?

eoasis 写道
首先想到的是拆分,然后可以考虑将将对象转为数组存储,然后分布式存储,再然后在业务层面考虑是否还有优化方案,往往业务层面可以优化的方案比技术优化更简单更有效


问题补充:这样跟拆分列表然后存储的机制是类似的。

eoasis 写道
“将对象转为数组存储,然后分布式存储”,这个能不能说详细点?

对象转为数组存储,可以将对象的属性转存在数组中,降低内存占用

然后分布式存储,不见得一定要将缓存存到一个Mem容器中,可以根据对象特性建立多个Mem容器进行存储。


2010年4月26日 18:52

3个答案 按时间排序 按投票排序

0 0

“将对象转为数组存储,然后分布式存储”,这个能不能说详细点?

对象转为数组存储,可以将对象的属性转存在数组中,降低内存占用

然后分布式存储,不见得一定要将缓存存到一个Mem容器中,可以根据对象特性建立多个Mem容器进行存储。

2010年4月30日 09:55
0 0

首先想到的是拆分,然后可以考虑将将对象转为数组存储,然后分布式存储,再然后在业务层面考虑是否还有优化方案,往往业务层面可以优化的方案比技术优化更简单更有效

2010年4月27日 17:46
0 0

这个要根据列表长度拆分成N个子列表,原来的总列表只存这N个子列表的Key,如果还不行,就需要接着拆

2010年4月26日 23:50

相关推荐

    asp memcache 解决缓存问题

    7. **监控与维护**:定期检查 Memcache 的性能和内存使用情况,根据需要调整缓存大小和策略,以确保系统的稳定性和效率。 通过以上步骤,ASP Memcache 可以显著提升网站或应用程序的响应速度,尤其在需要处理大量...

    php7的memcache.dll文件

    ...它能够存储数据,如数据库查询结果、API调用结果或者任何可以序列化的对象,以减少对数据库的访问,提高网站性能。...正确选择和配置该文件,以及掌握相关API的使用方法,是高效利用Memcache缓存系统的基础。

    Memcache 性能监视工具

    Memcache 是一种广泛使用的分布式内存缓存系统,用于减轻数据库负载,提高Web应用程序的响应速度。在复杂的Web环境中,性能监视工具是确保Memcache高效运行的关键。本文将深入探讨一个基于PHP编写的Memcache性能监视...

    PHP数据库操作二:memcache用法分析

    6. 数据大小限制:默认情况下,存储的数据不能超过1M,超过这个大小的数据应通过其他方式处理。 7. 库依赖:Memcache依赖libevent库,因此安装Memcache之前需要确认是否安装了libevent库。 8. 安全设置:Memcache...

    phpExcel导出大量数据出现内存溢出错误的解决方法

    这意味着,如果一次性读取或写入大量数据,就很容易超出PHP脚本执行的最大内存限制。为了缓解这一问题,可以通过更改缓存策略来实现。 1. 使用序列化缓存策略。这种方法通过序列化单元格数据来降低内存消耗。具体来...

    memcached 完整的项目,服务端(win) 客户端 包括jar包

    3. **内存限制**:Memcached 默认限制了总内存大小,超出后会根据内部策略删除旧数据,因此合理设置内存大小和缓存策略至关重要。 4. **故障恢复**:当 Memcached 服务端宕机后,Java 客户端可能会遇到连接问题,...

    如何发现Redis热点Key,解决方案有哪些.docx

    2. **缓存分片服务崩溃**:如果热点Key的访问量超出缓存分片服务的承受范围,可能会导致这部分服务的崩溃,使得后续请求无法得到及时处理。 3. **数据库击穿与业务雪崩**:一旦缓存失效,所有原本由缓存承担的请求...

    Fourinone分布式计算框架

    ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的...

    memcached启动错误解决

    比如,内存分配过大可能超出服务器物理内存,导致启动失败。合理设置内存大小,避免过度消耗系统资源。 ### 5. **启动脚本问题** 描述中提到的是自动启动的shell文件,确保脚本正确编写,并且有执行权限。在Linux中...

    Fourinone分布式并行计算四合一框架

    ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的...

    fourinone-3.04.25

    ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的...

    cacti模板四:memcached监控模板

    2. **性能调整**:根据监控数据,可以调整memcached的配置,例如增大缓存大小、优化过期策略等,以提高整体性能。 3. **日志分析**:结合memcached的日志信息,可以更深入地了解服务器状态,找出性能下降的原因。 ...

    web服务器集群(多台web服务器)session同步、共享的3种解决方法

    然而,Memcache分配的内存块可能存在大小限制,可能导致内存碎片,甚至在存储需求超出预设块大小时引发内存溢出问题。 总结来说,每种方法都有其优缺点。数据库同步可能会增加数据库压力,而Cookie同步依赖于客户端...

    新浪云计算SAE免费申请使用及域名绑定.docx

    4. **Memcache服务**:内存缓存系统,提升应用性能。 5. **域名绑定**:支持自定义域名,将应用与个人或企业域名关联。 申请和使用新浪SAE的步骤如下: 1. 访问**新浪云计算SAE官网**(https://sae.sina.com.cn/)...

    GoogleAppEngine-V1.5.2

    **Memcache**:为了提高性能,GAE提供了内存缓存服务,可以用来存储经常访问的数据,减少对Datastore的读取次数。 **Quota and Billing**:GAE对资源使用设有限制,例如CPU时间、数据存储和网络传输。超出免费配额...

    Google Application Engine

    GAE提供了许多内置服务,如邮件服务、任务队列(Task Queues)、缓存服务(Memcache)和身份验证(Google Accounts API)。这些服务简化了开发过程,减少了对外部服务的依赖。 **6. Goagent-goagent-0165657** 这个...

    Google App Engine 开发 源代码

    - **缓存服务**:Memcache用于高速缓存数据,提高应用性能。 - **邮件服务**:可以方便地发送电子邮件。 - **URL Fetch服务**:用于从互联网上抓取数据。 - **Blobstore**:用于存储大文件,如图片和视频。 4. ...

Global site tag (gtag.js) - Google Analytics