最近刚开始接触和使用 memcached ,我的场景是这样的:
有一张表,假设叫 post :
id int(10)
user_id int(10)
title varchar(100)
description varchar(120)
body text
假设我把除了 body 以外的字段通过数组序列化存到 key 为 post-xxx ( xxx 为 ID )的记录中,这样当取到 id = 333 的记录时,就可以直接 get('post-333') 然后反序列化来使用。
这个时候有个问题,即使我把 post 单条记录的字段全部缓存起来,能够加快的也只是我读取这单条记录时的速度,但是表数据越来越多时(暂不考虑分表分库),我的 post 列表分页依旧要到 post 表中去 LIMIT ,我该如何设计一种方式来让 memcached 能够为我的 LIMIT 加速呢?
之前在没有 cache 时为了一定程度上加速列表分页的读取速度,我是将 text 类型的 body 字段分了张表,因为本身读取列表时也不需要 body , text 字段类型也太重。
我的设想:
1 、无法到 memcached 中去 LIMIT ,那我能做的就只有在去表中 LIMIT 时能够更快,那就单独建一张表,就只存放 post 的所有 ID ,跟原先 post 表中的 ID 一一对应 。。。 LIMIT 直接从这张表取,等到要取除其他字段时再到 memcached 里取。
2 、 memcached 能不能实现类似 LIMIT 的功能?
刚上手,可能问题有点小白了。。。不知道大家遇到这个问题是怎么实现的,有没有哪些优雅或者高效的方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.