在Windows中安装Memcached-阿里云开发者社区

开发者社区> 浣熊干面包> 正文

在Windows中安装Memcached

简介:
+关注继续查看

Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度。

  Memcached最开始是作为Linux应用程序被安装在Linux服务器上来使用的,不过自从开源之后,它又被重新编译以适用于Windows环境。JellycanNorthscale两个站点都提供了Windows的二进制可执行文件下载,下面是下载的地址:

  http://code.jellycan.com/files/memcached-1.2.5-win32-bin.zip

  http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

  http://downloads.northscale.com/memcached-win32-1.4.4-14.zip

  http://downloads.northscale.com/memcached-win64-1.4.4-14.zip

  http://downloads.northscale.com/memcached-1.4.5-x86.zip

  http://downloads.northscale.com/memcached-1.4.5-amd64.zip

  在1.4.5版本之前,memcached可以被安装成一个服务,但之后的版本中该功能被移除了。因此memcached的安装可以分为两类,第一类是1.4.5之前的版本,另一类是1.4.5之后的版本。

安装memcached < 1.4.5:

  1. 将下载的文件解压到任意目录。

  2. 1.4.5之前版本的memcached会被安装成一个服务,以administrator打开控制台,运行下面的命令:

c:\memcached\memcached.exe -d install

* 注意将路径c:\memcached\memcached.exe替换成你本地的安装路径。

  3. 然后使用下面的命令启动或停止memcached服务:

c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop

  4. 通过注册表键值来修改memcached的配置项。在运行中输入regedit.exe,然后导航到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached"。修改其中的键值。例如你想增加memcached所使用的最大内存限制,可以修改ImagePath的值:

"c:\memcached\memcached.exe" -d runservice -m 512

* 除了参数'-m 512'之外,你还可以使用其它的参数。通过“c:\memcached\memcached.exe -h”可以查看所有能使用的参数。

  5. 如果要卸载memcached服务,可以使用下面的命令:

c:\memcached\memcached.exe -d uninstall

 安装memcached >= 1.4.5

  1. 将下载的文件解压到任意目录。

  2. 1.4.5之后版本的memcached不能作为Windows服务来运行,必须使用Windows计划任务来运行它。要将memcached配置成当Windows启动时自动运行,在命令行运行下面的命令:

schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"

* 注意将路径c:\memcached\memcached.exe替换成你本地的安装路径。

** 除了参数'-m 512'之外,你还可以使用其它的参数。通过“c:\memcached\memcached.exe -h”可以查看所有能使用的参数。

  3. 通过下面的命令将memcached从Windows计划任务中移除:

schtasks /delete /tn memcached

 

在PHP中使用memcached

  要在PHP中使用memcached,首先需要安装memcache扩展包:

  1. 查看你本地的PHP扩展包目录里是否有php_memcache.dll这个文件,如果没有,从https://pecl.php.net/package/memcache下载(选择windows dll文件),然后复制到PHP扩展包目录里。

  2. 在php.ini中添加下面的代码以启用memcache扩展包:

extension=php_memcache.dll

  3. 创建下面的php示例代码进行测试:

复制代码
<?php

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";

$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";

var_dump($get_result);

?> 
复制代码

 

在Python中使用memcached

  要在Python中使用memcached,首先需要安装memcached客户端:

  1. 执行下面的命令进行memcached客户端的安装。第一个适用于Python 2.x,第二个适用于Python 3.x。

pip install python-memcached
pip install python3-memcached

  2. 创建下面的python示例代码进行测试:

复制代码
import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
mc.set("some_key", "Some value")
value = mc.get("some_key")
mc.set("another_key", 3)
mc.delete("another_key")
mc.set("key", "1")   # note that the key used for incr/decr must be a string.
mc.incr("key")
mc.decr("key")
复制代码

 

在Node.js中使用memcached

  在Node.js中可以通过memcached包来使用memcache,Github的地址https://github.com/3rd-Eden/memcached。下面是一段示例代码:

复制代码
var Memcached = require( 'memcached' );

// connect to our memcached server on host 10.211.55.5, port 11211
var memcached = new Memcached( "10.211.55.5:11211" );

memcached.set( "hello", 1, 10000, function( err, result ){
    if( err ) console.error( err );
    
    console.dir( result );
    memcached.end(); // as we are 100% certain we are not going to use the connection again, we are going to end it
});

memcached.get( "hello", function( err, result ){
    if( err ) console.error( err );
    
    console.dir( result );
    memcached.end(); // as we are 100% certain we are not going to use the connection again, we are going to end it
});
复制代码

   更详细的使用方法可以参考Github上的说明。

 

Memcached的数据统计

  要查看memcached的数据统计,可以通过telnet连接到memcached:

telnet 127.0.0.1 11211

* ip地址后面的数字为memcached运行的端口号

** 在Windows 10中telnet组件默认并没有添加,可通过Control Panel > Programs and Features > Turn Windows features on or off来添加。

  然后使用stats来查看统计信息。下表列出了stats统计结果中各数据项的含义:

Name Type Meaning
pid 32u Process id of this server process
uptime 32u Number of secs since the server started
time 32u current UNIX time according to the server
version string Version string of this server
pointer_size 32 Default size of pointers on the host OS (generally 32 or 64)
rusage_user 32u.32u Accumulated user time for this process (seconds:microseconds)
rusage_system 32u.32u Accumulated system time for this process (seconds:microseconds)
curr_items 32u Current number of items stored
total_items 32u Total number of items stored since the server started
bytes 64u Current number of bytes used to store items
curr_connections 32u Number of open connections
total_connections 32u Total number of connections opened since the server started running
connection_structures 32u Number of connection structures allocated by the server
reserved_fds 32u Number of misc fds used internally
cmd_get 64u Cumulative number of retrieval reqs
cmd_set 64u Cumulative number of storage reqs
cmd_flush 64u Cumulative number of flush reqs
cmd_touch 64u Cumulative number of touch reqs
get_hits 64u Number of keys that have been requested and found present
get_misses 64u Number of items that have been requested and not found
delete_misses 64u Number of deletions reqs for missing keys
delete_hits 64u Number of deletion reqs resulting in an item being removed.
incr_misses 64u Number of incr reqs against missing keys.
incr_hits 64u Number of successful incr reqs.
decr_misses 64u Number of decr reqs against missing keys.
decr_hits 64u Number of successful decr reqs.
cas_misses 64u Number of CAS reqs against missing keys.
cas_hits 64u Number of successful CAS reqs.
cas_badval 64u Number of CAS reqs for which a key was found, but the CAS value did not match.
touch_hits 64u Numer of keys that have been touched with a new expiration time
touch_misses 64u Numer of items that have been touched and not found
auth_cmds 64u Number of authentication commands handled, success or failure.
auth_errors 64u Number of failed authentications.
evictions 64u Number of valid items removed from cache to free memory for new items
reclaimed 64u Number of times an entry was stored using memory from an expired entry
bytes_read 64u Total number of bytes read by this server from network
bytes_written 64u Total number of bytes sent by this server to network
limit_maxbytes 32u Number of bytes this server is allowed to use for storage.
threads 32u Number of worker threads requested. (see doc/threads.txt)
conn_yields 64u Number of times any connection yielded to another due to hitting the -R limit.
hash_power_level 32u Current size multiplier for hash table
hash_bytes 64u Bytes currently used by hash tables
hash_is_expanding bool Indicates if the hash table is being grown to a new size
expired_unfetched 64u Items pulled from LRU that were never touched by get/incr/append/etc before expiring
evicted_unfetched 64u Items evicted from LRU that were never touched by get/incr/append/etc.
slab_reassign_running bool If a slab page is being moved
slabs_moved 64u Total slab pages moved
crawler_reclaimed 64u Total items freed by LRU Crawler
lrutail_reflocked 64u Times LRU tail was found with active ref. Items moved to head to avoid OOM errors.

  更详细的内容可以查看这里:https://github.com/memcached/memcached/blob/master/doc/protocol.txt

  另外,有关Memcached的常用命令及使用说明也可以参考这篇文章:http://www.cnblogs.com/jeffwongishandsome/archive/2011/11/06/2238265.html


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/5196811.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10071 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26788 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10882 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2511 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9157 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7489 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22390 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4500 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7363 0
941
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载