`

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,并且提供了基于文件和目录的缓存依赖策略。关于缓存过期策略也比较有探讨的必要,不过个人开发中比较偏重于数据缓存和替换,目前还没有接触和使用过比较完美的过期策略解决方案。
分享到:
评论

相关推荐

    linux环境下memcached安装以及配置使用

    ### Linux环境下Memcached安装及配置...通过以上步骤,可以在Linux环境下成功安装和配置Memcached,并将其与Tomcat集成以实现跨服务器的Session共享。这不仅提高了系统的响应速度,也增强了系统的稳定性和可扩展性。

    MemCached安装与配置图解(windows).pdf

    ### MemCached在Windows环境下的安装与配置详解 #### 一、概述 MemCached是一种高性能、分布式内存对象缓存系统,可以极大地加速动态Web应用程序的速度,提高可扩展性。本文档将详细介绍如何在Windows 7 64位操作...

    memcached linux windows 安装 使用 缓存 集群

    总结来说,Memcached是跨平台的缓存解决方案,适用于Windows和Linux环境。通过正确配置和使用,它可以显著提升Web应用的性能,减少对数据库的依赖,并提供高可用性的数据缓存服务。在部署和使用过程中,注意端口设置...

    Memcached的Linux和Windows安装包

    Memcached作为一款轻量级的缓存系统,其安装过程在Linux和Windows上有所不同。在Linux上,通常涉及编译源码和配置系统服务,而在Windows上则更倾向于直接运行可执行文件并注册为服务。无论是哪种操作系统,安装完成...

    windows下memcached+memcached.dll 5.3.8

    描述中提到的“详细你谷歌memcached安装教程”,暗示了用户可能需要通过搜索引擎(如Google)查找关于如何在Windows环境下安装和配置Memcached的步骤。这通常包括以下几个关键步骤: 1. **下载Memcached**: 首先,...

    memcached 缓存 linux windows 安装 集群

    ### Memcached缓存系统在Linux与Windows环境下的安装与集群配置 #### 一、概述 Memcached是一款高性能的分布式内存对象缓存系统,用于通过缓存数据库查询结果和其他开销较大的计算结果来减少数据库负载并加速动态...

    memcached(windows,linux 服务器端的安装包)

    无论在Windows还是Linux环境中,安装过程都相对简单,但正确配置和使用它需要对缓存原理和最佳实践有所了解。通过熟练掌握这些知识点,你可以在开发中充分利用Memcached的优势,实现高效的缓存管理。

    memcached安装手册(for windows)

    本安装手册将指导您在Windows环境下安装和配置Memcached。 ### 一、下载与安装 1. **获取源码**:首先,您需要从Memcached的官方网站或者其他可信源下载适用于Windows的源码包。源码通常以.zip或.tar.gz格式提供,...

    memcached服务端windows版

    - **windows**:说明讨论的是在Microsoft Windows操作系统上的部署和使用,这与通常在Linux环境下的使用有所不同,可能需要考虑兼容性和特定的安装步骤。 - **缓存**:缓存是提高应用程序性能的关键技术,通过将...

    Windows下Memcached相关安装程序打包

    在Windows环境下安装和使用Memcached可能会与Linux等其他操作系统有所不同,但同样提供了方便的工具进行操作。以下是对标题和描述中涉及的知识点的详细解释: 1. **Memcached的基本概念**:Memcached是一个基于内存...

    windows memcached 安装文件

    **Windows平台上的Memcached安装与使用详解** Memcached是一款高性能、分布式的内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。它通过将数据存储在内存中,使得数据访问几乎达到...

    Memcached服务器(windows版本和Windows server版本)

    Memcached最初是为Linux环境设计的,但随着其受欢迎程度的增长,也出现了适用于Windows系统的版本,包括Windows和Windows Server。 ### 1. Memcached在Windows上的安装 - **Windows版本**: `memcached Windows.rar...

    windows系统安装memcached缓存系统

    这表示教程内容将专注于在Windows环境下如何使用和管理memcached,这对于那些习惯于Windows平台的开发者或系统管理员来说尤其有价值,因为他们可能不熟悉在Linux等其他系统上进行类似操作。 **压缩包子文件的文件...

    MemCached.net 安装说明

    请确保在生产环境中根据实际需求调整Memcached服务的配置,如增加服务器、调整内存分配等,以达到最佳性能和稳定性。同时,持续关注MemCached和MemCached.net的更新,以便及时获取新功能和安全修复。

    memcached windows最新版本

    `memcached`最初是为Linux环境设计的,但随着其流行度的增长,也有了针对Windows平台的版本。 **1. memcached Windows x64 和 x86 支持** `memcached` 在Windows上的安装有针对两种处理器架构的版本:x64和x86。x...

    memcached-1.5.4windows下64位编译

    Cygwin是一个在Windows上模拟Linux环境的开源工具集,使得可以在Windows上运行许多原本只能在Unix或Linux系统中使用的命令行工具和软件,包括编译器和构建工具,这对于在Windows上编译像memcached这样的开源软件非常...

    windows下按装memcached和memecache

    在Windows环境下安装`Memcached`和`Memcache`是一个相对较少被讨论的话题,因为这两个工具在Linux系统上更为常见。然而,对于Windows开发者来说,理解如何在本地环境中配置它们是十分重要的,特别是对于进行跨平台...

    memcached安装错误解决文件

    memcached主要支持Windows、Linux、Unix等系统。 2. 编译工具:如果你需要编译源代码安装,确保已安装C编译器,例如GCC或MinGW。 3. PHP扩展(如有必要):如果你是在PHP环境中使用memcached,确保已安装PHP的...

    MemCached安装文件及安装文档

    无论在Linux还是Windows上,安装完成后,你都可以通过各种编程语言的客户端库与Memcached进行交互,存储和检索数据。这通常涉及到设置键值对、过期时间以及操作数据等基本操作。 总之,Memcached作为一款高效的缓存...

Global site tag (gtag.js) - Google Analytics