怎样将memcache缓存服务器添加到服务

二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
VIM发烧友-面向对象编程OOP-迷人的火狐插件
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2211)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_084069',
blogTitle:'如何监测memcache服务端的运行状况?',
blogAbstract:'这里的博客停止维护,请大家点下方的链接访问博主新家对应的博文:
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}关于memcache的使用(入门级问题),memcache已经配置好,如何才能通过使用它来加快访问速度?
[问题点数:60分,结帖人anyilaoliu]
关于memcache的使用(入门级问题),memcache已经配置好,如何才能通过使用它来加快访问速度?
[问题点数:60分,结帖人anyilaoliu]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2013年5月 总版技术专家分月排行榜第一
2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。memcache如何加速列表分页? - 开源中国社区
当前访客身份:游客 [
当前位置:
segmentfault上问了一天也没人理会,是太简单了不屑于答么。。。
只好贴到这来,求前辈解答,谢谢!
---------------------------------------------------------------------------
最近刚开始接触和使用memcached,我的场景是这样的:
有一张表,假设叫 post:
id&int(10)
user_id&int(10)
title&varchar(100)
description&varchar(120)
假设我把除了 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 的功能?
刚上手,可能问题有点小白了。。。不知道大家遇到这个问题是怎么实现的,有没有哪些优雅或者高效的方法?
共有2个答案
<span class="a_vote_num" id="a_vote_num_
把列表缓存起来,缓存的key加上页号,每页一个key
<span class="a_vote_num" id="a_vote_num_
我这边的项目和楼主的场景差不多,我都是缓存最新的1000条ID,从缓存中取出来程序分页,因为大多数人都不会翻页使劲的往后面翻页,所有1000条ID足够了(视情况而定),如果真的有翻到后面没在缓存里面的页数了直接查库
--- 共有 2 条评论 ---
: 更新频繁的数据不适合放缓存,那样缓存命中率很低,看看你们自己的业务场景,比如说,如果变化到一定的阈值,程序主动更新到缓存
(5个月前)&nbsp&
谢谢!还想问下,假设这个表更新比较频繁,缓存里的那1000个ID其实也是要不停的从库里取的吧?
(5个月前)&nbsp&
更多开发者职位上
有什么技术问题吗?
类似的话题人气:3110211
访问用户量:3732
笔记经验:3832
总积分:261656
级别:VIP5
搜索本笔记
ta的交流分类
ta的全部笔记
浏览(15637)|(5)
&&交流分类:|笔记分类:
&1&&&&&&&Memcache是什么
Memcache是的一个项目,最早是为&LiveJournal&服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。
它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。
为什么会有Memcache和memcached两种名称?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,
Memcache官方网站:,
2&&&&&&&Memcache工作原理
首先&memcached&是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端&API&包括&Perl/PHP/Python/Ruby/Java/C#/C&等等。客户端在与&memcached&服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符&key,存取操作均通过这个&key&进行,保存到memcached&中的对象实际上是放置内存中的,并不是保存在&cache&文件中的,这也是为什么&memcached&能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。
与许多&cache&工具类似,Memcached&的原理并不复杂。它采用了C/S的模式,在&server&端启动服务进程,在启动时可以指定监听的&ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。Memcached&的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件&(event_based)&的服务方式.使用libevent&作为事件通知实现。多个&Server&可以协同工作,但这些&Server&之间是没有任何通讯联系的,每个&Server&只是对自己的数据进行管理。Client&端通过指定&Server&端的&ip&地址(通过域名应该也可以)。需要缓存的对象或数据是以&key-&value对的形式保存在Server端。key&的值通过&hash&进行转换,根据&hash&值把&value&传递到对应的具体的某个&Server&上。当需要获取对象数据时,也根据&key&进行。首先对&key&进行&hash,通过获得的值可以确定它被保存在了哪台&Server&上,然后再向该&Server&发出请求。Client&端只需要知道保存&hash(key)&的值在哪台服务器上就可以了。
&&&&&&& 其实说到底,memcache&的工作就是在专门的机器的内存里维护一张巨大的&hash&表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。
3&&&&&&&如何使用
建立Manager类
java代码:
package com.alisoft.sme.
import java.util.D
import com.danga.MemCached.MemCachedC
import com.danga.MemCached.SockIOP
public class MemCachedManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
// 设置与缓存服务器的连接池
// 服务器列表和其权重
String[] servers = { &127.0.0.1:11211& };
Integer[] weights = { 3 };
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();
// 设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);
// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000 * 60 * 60 * 6);
// 设置主线程的睡眠时间
pool.setMaintSleep(30);
// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
// 初始化连接池
pool.initialize();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
* 保护型构造方法,不允许实例化!
protected MemCachedManager() {
* 获取唯一实例.
public static MemCachedManager getInstance() {
return memCachedM
* 添加一个指定的值到缓存中.
* @param key
* @param value
public boolean add(String key, Object value) {
return mcc.add(key, value);
public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
* 根据指定的关键字获取对象.
* @param key
public Object get(String key) {
return mcc.get(key);
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add(&hello&, 234);
System.out.print(&get value : & + cache.get(&hello&));
&建立数据对象
java代码:
package com.alisoft.sme.
import java.io.S
public class TBean implements Serializable {
private static final long serialVersionUID = 1336919L;
public String getName() {
public void setName(String name) {
this.name =
&&&创建测试用例
java代码:
package com.alisoft.sme.memcached.
import junit.framework.TestC
import org.junit.T
import com.alisoft.sme.memcached.MemCachedM
import com.alisoft.sme.memcached.TB
public class TestMemcached extends TestCase {
private static MemCachedM
public void testCache() {
TBean tb = new TBean();
tb.setName(&E网打进&);
cache.add(&bean&, tb);
TBean tb1 = (TBean) cache.get(&bean&);
System.out.println(&name=& + tb1.getName());
tb1.setName(&E网打进_修改的&);
tb1 = (TBean) cache.get(&bean&);
System.out.println(&name=& + tb1.getName());
protected void setUp() throws Exception {
super.setUp();
cache = MemCachedManager.getInstance();
protected void tearDown() throws Exception {
super.tearDown();
java代码:
[INFO] ++++ serializing for key: bean for class: com.alisoft.sme.memcached.TBean
[INFO] ++++ memcache cmd (result code): add bean 8 0 93 (NOT_STORED)
[INFO] ++++ data not stored in cache for key: bean
[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=E网打进
[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=E网打进
精品视频课程推荐
JUnit4的基本使用;在maven环境下使用JUnit;用JMock来模拟测试对象要依赖的对象;用cobertura实现覆盖测试;用hundson实现持续集成;JUnit3的基本使用。
JavaScript的内置对象--Array、String、Date、Math等,可以通过DOM对象进行对象控制,创建控制菜单及复选框的控制,创建二级联动列表框及列表框选项的移动,JavaScript项目,创建基于JS的商品管理系统。
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制
课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力
技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。
从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用
浏览(15637)|(5)
&&交流分类:|笔记分类:
项目管理系统:/d/wtViAgI.2wBlSzlRcf4自己动手写框架:/d/wtViAgLZ2gAUSTlR375ASP.NET实战中国电信CRM:/d/wtViAgIA2gD3RDlR2e2云计算中间件开发:/d/wtViAgKn2QCoQzlR050云计算商城C2C项目:/d/wtViAgLj1gBJOjlRc89ASP.NET实战小孔子OA系列:/d/wtViAgLq1QB7NjlRc94文心老师oracle系列:/d/wtViAgL01AARMzlRe6a王二暖老师oracle 11g视频:/d/wtViAgIcyQCMsjhR49dASP.NET开发通用权限系统:/d/wtViAgK.yABvsThR3d9J2EE实战手机进销存项目:ASP.NET实战设计模式开发:/d/wtViAgJixwA1rThRc81ASP.NET石曼迪his项目实战视频:/d/wtViAgL5xgC4qzhR135厉风行老师java版本crm:/d/wtViAgKLwwAioThR1a0ASP.NET实战科技公司网站开发:/d/wtViAgKNwgBJnjhRb4a华仔老师iphone视频教程:/d/wtViAgI-wACvmDhRa3eASP.NET实战国讯OA视频教程:/d/wtViAgJWuAAofzhR95bASP.NET实战工作流审批系统:/d/wtViAgIpuACUfjhR218java实战高性能基金服务器开发:/d/wtViAgKttgCaeThR11b凤舞烟老师flex4系列实战视频:/d/wtViAgJ3tgDAeDhR51b凤舞烟老师jquery实战开发视频:/d/wtViAgKNtABWcDhRd6c凤舞烟老师webservice实战视频:/d/wtViAgI.tADZbjhR724凤舞烟老师extjs实战视频:/d/wtViAgL8swCsbThR3beASP.NET对日外包项目视频:/d/wtViAgLzswB3bThR96eVS2008开发vc++程序视频:Android游戏开发系列:/d/wtViAgIaswC5ajhR2e2存储过程在ASP.NET开发中的应用:/d/wtViAgL5sgArajhR9b8J2EE版本贝斯OA系统实战开发:/d/wtViAgLWsgCzaThRcefJSP+jdbc实战报价管理系统视频:WPF视频教程:WPF流程设计器视频教程:/d/wtViAgIXsQA.YzhRd7fC#实战winform版本的OA开发视频:/d/wtViAgLksACCYjhR13ewindow服务器与网络编程-vc++视频教程:/d/wtViAgLGsAAHYjhR8e2windows phone预科班视频教程:/d/wtViAgKDsADGYDhR67bwindows phone项目实战视频教程:/d/wtViAgJYsAAQYDhRe9awindows phone系列视频教程:/d/wtViAgIVsAAhXzhR6c2win8系列视频教程:/d/wtViAgIurwCcXDhR050wcf高级实战视频教程:/d/wtViAgLLrgBAWzhR03aWCF服务免费课程(共6讲)视频教程:/d/wtViAgI5rgAYWThR4f8J2EE版本实战博客系统开发视频教程:sharepoint2010实战视频教程:/d/wtViAgKCrADQUjhR828nosql系列之redis实战视频:/d/wtViAgIlqwBxTjhR09fruby on rails框架视频教程:/d/wtViAgLoqgCjTThR7c2JAVA语言基础与OOP入门:/d/wtViAgIApgDYPDhRa02ASP.NET实战pptv项目开发:/d/wtViAgJ.pQDyOjhR98coracle之PL/sql视频教程:/d/wtViAgIepQC9OThR27bPHP版本的CRM开发视频教程:/d/wtViAgJkpADrNzhReeboracle入门之sql开发视频:/d/wtViAgLtowCDNjhR6cbOpenScales的地图网站开发视频:/d/wtViAgJ-ogBCMThRdaanosql系列之Mongodb视频教程:/d/wtViAgLooQCCLzhR2e8lucene基础视频教程:jquery实战图书管理系统:javascript视频教程下载:javafx视频教程下载:/d/wtViAgI1oQB-LDhR5e2html5项目实战视频教程:/d/wtViAgIjoQAyLDhRbf5html5从入门到精通视频教程:/d/wtViAgK-oAB1KjhRe4eASP.NET实战hr项目实战视频教程:/d/wtViAgL0nwCgJzhR87fhadoop高级视频教程:/d/wtViAgL7ngAdJThR2e1flex系统实战视频教程:/d/wtViAgKXngC1IzhR672flex实战订餐系统开发视频教程:/d/wtViAgISngAcIjhR8b7flex4.0开发B2C项目实战视频教程:/d/wtViAgJVmwBXGDhRb74extjs基础视频教程:/d/wtViAgLIgQB2YjdRe5fextjs4.1.1视频教程:/d/wtViAgJLgQDDYDdRd50ASP.NET实战erp系统视频教程:/d/wtViAgI8gQCMYDdR6e2ECSHOP二次开发视频教程:/d/wtViAgICgQDdXzdRb37VC++游戏开发之Directcomputer视频教程:/d/wtViAgKegACXXjdR04acs-老师html5移动开发:/d/wtViAgJegAC9XTdRe36ASP.NET实战CMS项目开发:/d/wtViAgJofwC7WjdRbe9C++系列从零起步视频教程:/d/wtViAgIFfwBOWTdRc0dC#数据结构实战视频教程:/d/wtViAgJifgCIVzdRa7ac#基础视频教程:asp.net基础系列视频教程:/d/wtViAgJZegD5TDdRbe5asp.net的博客项目:asp.net-b2c实战开发视频教程:/d/wtViAgIdeADERjdRc38android实用技术视频教程:/d/wtViAgJpdgDqQTdR7ac23种设计模式视频教程:/d/wtViAgIsdgD9QDdRc8diphone游戏开发视频教程:/d/wtViAgLZdQDlPzdR195im即时通讯_网络通讯部分视频教程:/d/wtViAgIjcgAWNTdR052
想问一下http://www.shxtdq..com &该网站是shopEX485版本的。目前出现页面打开后图片无法显示的问题,需要每隔10分钟就要在后台清空缓存,清空后就恢复正常了。这样很麻烦,问一下可以用MEMCACHED这个缓存机制能解决问题吗?恳求帮忙!谢谢!
缓存思想都是一样的,不能解决你这个问题,可以考虑时间差小一些 &
目前出现页面打开后图片无法显示的问题:这是怎么缓存的? 为什么图片无法显示?
&如果memcache服务器当掉,web工程就不能向memcache缓存数据,这种情况发生的话该怎么办?
想问一下http://www.shxtdq..com &该网站是shopEX485版本的。目前出现页面打开后图片无法显示的问题,需要每隔10分钟就要在后台清空缓存,清空后就恢复正常了。这样很麻烦,问一下可以用MEMCACHED这个缓存机制能解决问题吗?恳求帮忙!谢谢!
缓存思想都是一样的,不能解决你这个问题,可以考虑时间差小一些 &
目前出现页面打开后图片无法显示的问题:这是怎么缓存的? 为什么图片无法显示?
想问一下http://www.shxtdq..com &该网站是shopEX485版本的。目前出现页面打开后图片无法显示的问题,需要每隔10分钟就要在后台清空缓存,清空后就恢复正常了。这样很麻烦,问一下可以用MEMCACHED这个缓存机制能解决问题吗?恳求帮忙!谢谢!
版权所有 Copyright(C) 私塾在线学习网

我要回帖

更多关于 memcache服务端 的文章

 

随机推荐