`

Windows和Linux环境下Memcached安装与配置

    博客分类:
  • java
 
阅读更多
来源http://www.cnblogs.com/xd502djj/archive/2012/09/25/2701800.html

一、memcached安装配置

windows平台安装

1、memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/,执行memcached.exe -d install 安装。

2、守护进程方式启动:memcached.exe -m 512 -d start
-d为守护进程启动,不能指定端口 默认端口11211
-m为指定内存大小

3、指定端口启动:memcached.exe –p 33000 -m 512
可以启动多个服务,命令行窗口关闭则服务停止。

Linux平台安装

1、准备文件

下载地址 :http://code.google.com/p/memcached/downloads/list

目前最新版本为memcached-1.4.15.tar.gz (可以wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz)

这里以memcached-1.4.15.tar.gz为例作说明 

libevent-2.0.12-stable.tar.gz 下载地址 :http://libevent.org/(目前最新版本为 libevent-2.0.20-stable.tar.gz 可以

  wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz )



2、安装libevent,先验证ls /usr/lib |grep libevent 看是否安装。

若出现类似以下信息说明已经安装

ls /usr/lib |grep libevent

libevent-1.4.so.2
libevent-1.4.so.2.1.3
libevent-2.0.so.5
libevent-2.0.so.5.1.8
libevent.a
libevent_core-1.4.so.2
libevent_core-1.4.so.2.1.3
libevent_core-2.0.so.5
libevent_core-2.0.so.5.1.8
libevent_core.a
libevent_core.la
libevent_core.so
libevent_extra-1.4.so.2
libevent_extra-1.4.so.2.1.3
libevent_extra-2.0.so.5
libevent_extra-2.0.so.5.1.8
libevent_extra.a
libevent_extra.la
libevent_extra.so
libevent.la
libevent_pthreads-2.0.so.5
libevent_pthreads-2.0.so.5.1.8
libevent_pthreads.a
libevent_pthreads.la
libevent_pthreads.so
libevent.so



#用tar命令解压安装文件

[root@localhost local]# tar -zxvf libevent-2.0.20-stable.tar.gz

用./configure命令进行配置,检查当前的环境

[root@localhost libevent-2.0.20-stable]./configure –prefix=/usr

[root@localhost libevent-2.0.20-stablemake
[root@localhost libevent-2.0.20-stablemake install



安装memcached

[root@localhost local]#  tar -zxvf memcached-1.4.15.tar.gz

[root@localhost local]#  cd memcached-1.4.15

[root@localhost memcached-1.4.15]# ./configure

[root@localhost memcached-1.4.15]# make
[root@localhost memcached-1.4.15make install

验证安装
#ll /usr/local/bin | grep memcached

-rwxr-xr-x 1 root root 245683 Sep 25 16:04 memcached

启动memcached

#  /usr/local/bin/memcached -d -m 512 -c 512 -p 11211 -u root -t 10



-d选项是启动一个守护进程。

-m是分配给Memcache使用的内存数量,单位是MB。

-u是运行Memcache的用户。

-l是监听的服务器IP地址,如果有多个地址的话,指定下服务器的I监听P地址。

-p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,我们这里统一使用11211-c选项是最大运行的并发连接数,默认是1024。

-P是设置保存Memcache的pid文件。

-vv 用very vrebose模式启动,调试信息和错误输出到控制台 。

更多可以参考 # /usr/local/bin/memcached -h

可以在一台机器上启动若干进程 如

[root@localhost local]#  ps -ef | grep memcach
root     26928     1  0 16:17 ?        00:00:00 /usr/local/bin/memcached -d -m 64 -c 64 -p 11211 -u root -l 10.33.2.75 -P /tmp/memcached.pid
root     26968     1  0 16:18 ?        00:00:00 /usr/local/bin/memcached -d -m 64 -c 64 -p 11212 -u root -l 10.33.2.75 -P /tmp/memcached2.pid
root     26975     1  0 16:18 ?        00:00:00 /usr/local/bin/memcached -d -m 64 -c 64 -p 11213 -u root -l 10.33.2.75 -P /tmp/memcached3.pid





注意:如果你前面一切OK,那恭喜你,你可以正常使用了。如果出现一些错误,请不要担心:

error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory



解决办法:

1.首先 find / -name libevent-2.0.so.5 找到缺少的链接文件。

2.LD_DEBUG=libs  /usr/local/bin/memcached -v

3. 从Debug信息中就知道程序去哪里找链接库了。我这边程序去 trying file=/usr/lib/libevent-1.4.so.2 而我的链接库的实际存储位置(根据机器的位,我的是64位的)是 /usr/local/lib64/libevent-1.4.so.2(在下面的位置随便选择一个就行了)

4. 做一个软连接 ln -s /usr/local/lib64/libevent-2.0.so.5  /usr/lib/libevent-2.0.so.5

17768:      trying file=/lib64/tls/x86_64/libevent-2.0.so.5
17768:       trying file=/lib64/tls/libevent-2.0.so.5
17768:       trying file=/lib64/x86_64/libevent-2.0.so.5
17768:       trying file=/lib64/libevent-2.0.so.5
17768:       trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
17768:       trying file=/usr/lib64/tls/libevent-2.0.so.5
17768:       trying file=/usr/lib64/x86_64/libevent-2.0.so.5
17768:       trying file=/usr/lib64/libevent-2.0.so.5

验证是否启动成功

[root@bookedb ~]#  netstat -ntlp|grep memcached



停止memcached(找到进程,杀掉进程)

[root@bookedb ~]# pgrep -l memcached
16321 memcached

[root@bookedb ~]# kill -9 16321

或者

# kill `/tmp/memcached.pid`
二、测试memcached

1、命令中输入:telnet 192.168.120.28 11211(你安装的主机的ip和memcached启动端口),然后直接敲击stats命令

stats
STAT pid 16321
STAT uptime 2831
STAT time 1322126000
STAT version 1.4.6
STAT libevent 2.0.12-stable
STAT pointer_size 64
STAT rusage_user 0.004999
STAT rusage_system 0.004999
STAT curr_connections 12
STAT total_connections 18
STAT connection_structures 13
STAT cmd_get 6
STAT cmd_set 7
STAT cmd_flush 0
STAT get_hits 5
STAT get_misses 1
STAT delete_misses 0
STAT delete_hits 1
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 5023
STAT bytes_written 7246
STAT limit_maxbytes 536870912
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 2479
STAT curr_items 2
STAT total_items 7
STAT evictions 0
STAT reclaimed 0
END



三、Memcache的常用命令

查询状态命令:stats
查询版本号 version
退出命令 quit
清空缓存数据(其实是将所有缓存数据标记为过期):flush_all

memcached的协议与数据存取

所谓协议,可以理解为对其操作(数据存取)的语法规则,存取数据的常用命令和参数如下:

set:存入一条记录
key:记录的键值
flags:十进制的int,标识存储记录时的客户端标志,在记录取出时会返回。
exptim:数据的过期时间,0表示不过期,其他数值则表示有效的毫秒数,在过期后,客户端将取不到这条记录,memcached中的过期记录会被清空或删除。
get:表示从memcached取出key对应的值,如果没有对应的值则返回结束标志END
append:表示对key所对应的值在最后再加入输入的内容
delete:删除key对应的值



参考摘自 http://cnazure.com/2011/12/windows-linux-memcached-install-configuration/



Memcached常用命令及使用说明

一、存储命令

存储命令的格式:

?
1
2
<command name> <key> <flags> <exptime> <bytes>
<data block>
参数说明如下:

<command name> set/add/replace
<key> 查找关键字
<flags> 客户机使用它存储关于键值对的额外信息
<exptime> 该数据的存活时间,0表示永远
<bytes> 存储字节数
<data block> 存储的数据块(可直接理解为key-value结构中的value)
1、添加

(1)、无论如何都存储的set



这个set的命令在memcached中的使用频率极高。set命令不但可以简单添加,如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

可以通过“get 键名”的方式查看添加进去的记录:



如你所知,我们也可以通过delete命令删除掉,然后重新添加。



(2)、只有数据不存在时进行添加的add



(3)、只有数据存在时进行替换的replace





2、删除



可以看到,删除已存在的键值和不存在的记录可以返回不同的结果。



二、读取命令

1、get

get命令的key可以表示一个或者多个键,键之间以空格隔开



2、gets



可以看到,gets命令比普通的get命令多返回了一个数字(上图中为13)。这个数字可以检查数据是否发生改变。当key对应的数据改变时,这个多返回的数字也会改变。

3、cas

cas即checked and set的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。





三、状态命令

1、stats





2、stats items


执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。



3、stats cachedump slab_id limit_num

我们执行stats cachedump 1 0 命令效果如下:



这里slab_id为1,是由2中的stats items返回的结果(STAT items后面的数字)决定的;limit_num看起来好像是返回多少条记录,猜的一点不错, 不过0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。


通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。



4、其他stats命令

如stats slabs,stats sizes,stats reset等等使用也比较常见。





四、其他常见命令

1、append



在现有的缓存数据后添加缓存数据,如现有缓存的key不存在服务器响应为NOT_STORED。



2、prepend

和append非常类似,但它的作用是在现有的缓存数据前添加缓存数据。





3、flush_all



该命令有一个可选的数字参数。它总是执行成功,服务器会发送 “OK\r\n” 回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。 flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由memcached的懒惰检测和删除机制决定的)。

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。

4、其他命令

memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。



补充一则:简单认识.net framework中的几种缓存

web站点中缓存的重要性毋庸置疑。我想很多asp.net开发人员在开发web应用系统的时候优先考虑使用的缓存并不是第三方缓存解决方案(比如分布式缓存memcached、redis等等),而应该是.net framework已经提供的多种缓存解决方案。下面结合自己的开发经验谈谈对.net framework中缓存的认识。

1、System.Web.Caching.Cache

估计大部分做过asp.net开发的人都用过这个命名空间下的缓存,我们可以直接使用HttpContext.Current.Cache实例而不用实例化。当然这个命名空间下的Cache类是允许您实例化的,需要定制自己的缓存系统的当然可以完全自己控制如何初始化这个类。我在园子里看到过有很多文章介绍Cache的CRUD辅助类库大多数都是针对System.Web.Caching.Cache。

需要说明的是,我们还可以通过该命名空间下的HttpRuntime.Cache实现web、控制台、winform等不同表现形式下的缓存,而且完全无需自己实例化。HttpRuntime.Cache是之前个人开发中使用比较多的一个类,现在比较偏爱.net framework4.0中的增强型的缓存类MemoryCache。



2、Output Cache

众所周知,输出缓存主要分页面输出缓存和页面部分缓存。说白了,就是缓存整个页面的html或者部分html,本来没什么值得讨论的,但是最近看到dudu的这篇博客才恍然发现,想不到使用它还真是大有讲究,我以前怎么就没有发现这个问题呢?看来发现问题和解决问题的能力同样重要,有时候前者甚至更重要啊。



3、System.Runtime.Caching

现在个人开发中使用最多的类MemoryCache出自这个命名空间,使用前需要引用using System.Runtime.Caching。MemoryCache继承自ObjectCache, IEnumerable, IDisposable,其中ObjectCache是个抽象类。用过MemoryCache的人都知道,这个MemoryCache有一个属性叫Default,通常可以像下面这样使用:

private static ObjectCache memCache = MemoryCache.Default;
当然我们也完全可以通过public MemoryCache(string name, NameValueCollection config = null)构造函数初始化缓存对象。

接着我们可以在web.config文件中配置每个MemoryCache实例运行的内存使用配额方案和配额检查周期,下面示例参考MSDN:

  <system.runtime.caching>
    <memoryCache>
      <namedCaches>
        <add name="Default" cacheMemoryLimitMegabytes="10"  pollingInterval="00:02:00"/>
      </namedCaches>
    </memoryCache>
  </system.runtime.caching>
这些配置意义在于可以明确指定每个MemoryCache实例运行的内存使用配额方案和配额检查周期。比如我们可以通过配置来按需更改MemoryCache.Default实例的内存配额(不知道缓存可用最大内存是多少,可能还是传说中的800M左右)。缓存过期策略与其它的缓存框架大同小异,与System.Web.Caching.Cache的不同只是名称不叫CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目录的缓存依赖策略。关于缓存过期策略也比较有探讨的必要,不过个人开发中比较偏重于数据缓存和替换,目前还没有接触和使用过比较完美的过期策略解决方案。
分享到:
评论

相关推荐

    Redis-deployment-on-windows.rar_MEMCACHED_Master/Slave_文件哈希存储

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)、...Redis一般部署在linux服 务器上,但是我们也可以在windows上学习他的安装和配置。

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    11.4.1 配置与检查安装环境 11.4.2 在Director Server上安装IPVS管理软件 11.5 搭建高可用 LVS集群 11.5.1 通过heartbeat搭建LVS高可用性集群 11.5.2 通过Keepalived搭建LVS高可用性集群系统 11.5.3 通过...

    memcached缓存组件资料.rar

    memcached缓存组件资料.rar ,包含 linux windows ios 平台的配置。

    memcached缓存组件资料

    1、 MemCache介绍 2、 MemCache工作原理 3、 MemCache缓存web应用程序架构 ...6、 MemCache在windows下服务端的安装 7、 MemCache在Linux下服务端的安装 8 Linux下telnet的配置及memcache监测 9、 MemCache客户端的使用

    主机宝管理面板Windows WANMP版v1.0.1

    Linux主机宝将和Windows主机宝同步开发,不同面板不同的操作系统下统一的操作方式和灵活性,可直接跨平台相互迁移。 网站语言支持: Apache2.4.7、Nginx1.4.5 、PHP5.2.17 / 5.4.31、MySQL5.5.38 软件安装支持: 1...

    nServer-v2.1023[FTP + MYSQL + HTTP + PHP(FCGI)]

    二、如何管理MySQL和Memcached 1.使用浏览器访问http://127.0.0.1/tools/adminer.php 1.使用浏览器访问http://127.0.0.1/tools/memcached 2.服务器:127.0.0.1;帐户/密码:root/admin 三、如何切换PHP版本 1.确保...

    服务器运维工程师的主要职责.docx

    5、重视流程规范,熟悉Windows及Linux服务器环境和安全配置; 6、性格开朗、诚实、积极、主动团队配合能力强; 7、良好的英文读写能力。 2 职责: 1、负责公司平台云服务器的日常运维工作; 2、负责公司运营业务平台的...

    gomemcache:Go Memcache客户端软件包

    实现以下命令: 获取(单键) 设置,添加,替换,追加,前置删除增量,增量安装go get github.com/kklis/gomemcache 根据您的环境配置,您可能需要root(Linux)或管理员(Windows)访问权限才能运行上述命令。...

    PHPADM网络广告管理系统V4.0.zip

    并且由于其所依赖的性能很好的web服务软件和以高速著称的数据库软件在Linux和Windows平台上均能运行,因此具有跨平台功能,它的代码不用做修改就可以直接运行在两个不同的操作系统中。 (4)多层及多维广告位管理:...

    [PHP源码] [仿码农网整站源码] [资源销售平台源码]

    适用系统:Windows/Linux 源码简介 系统功能介绍:支持文章、论坛、下载、图片、小说、视频、商城、专题等等模块,所有模块都支持自定义字段,你想到的网站功能都能实现。 会 员 组 :会员组价格+时间+权限,会员...

    Redis总结笔记(一):安装和常用命令

    一、redis简单介绍 redis是NoSql家族的一员,键值对的内存型数据库。但是它支持把数据保存到本地。这点比memcached好。 缺点: 没有本地数据缓冲, 目前还没有完整...linux版官方版本,具体安装也很简单 代码如下: $ wg

    ach:Laravel应用程序开发摘要

    成就成就要求PHP&gt; = 5.4 + Mcrypt MySQL的作曲家Git(用于安装完成的应用程序) 您可以设置Homestead,一种虚拟机,允许您在包括Ubuntu 14.04,Nginx,MySQL,PostgreSQL,Redis,Memcached等在内的任何系统...

    400电话办理选号系统

    运行环境:Windows Server 2003/2008、Linux/CentOS/Solaris/Ubuntu WEB环境 :IIS 6/7、Apache、Nginx 声明:该程序遵循GNU通用公共授权条款,GPL授予程序接受人以下权利:以任何目的运行此程序的自由;再发行复制...

    内容付费系统 视频影视整站源码 在线教育付费观看

    8、支持Linux/Unix/Windows服务器,支持Apache/IIS/Nginx等 9、支持电脑PC端、手机端(微信端)、小程序 系统功能 1、设置:站点设置、账号同步、上传设置、SEO设置、邮箱短信、支付方式(支付宝/微信/银联)、权限...

    DSmall TP框架多商户B2B2C商城系统开源商城V3.2.1

    8、支持Linux/Unix/Windows服务器,支持Apache/IIS/Nginx等 9、支持电脑PC端、手机端(微信端)、小程序 DSMall商城系统功能: 1、设置:站点设置、账号同步、上传设置、SEO设置、邮箱短信、支付方式(支付宝/...

    serf:服务编排和管理工具

    Serf可在Linux,Mac OS X和Windows上运行。 一种高效,轻量级的八卦协议用于与其他节点进行通信。 Serf可以检测节点故障并通知群集的其余部分。 一个事件系统是建立在Serf之上的,它使您可以使用Serf的八卦协议来...

    DSO2O外卖订餐开源系统源码 v3.2.5

    DSO2O技术评价1、B/S架构2、MVC编码架构,wap端采用vue.js框架3、支持Compser4、支持阿里云存储5、支持负载均衡6、支持Mysql读写分离 7、支持Redis/Memcached8、支持Linux/Unix/Windows服务器,支持Apache/IIS/...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics