Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
Memcached官方:http://danga.com/memcached/
关于Memcached的介绍请参考:Memcached深度分析
下载Windows的Server端
下载地址:http://code.jellycan.com/memcached/
安装Memcache Server(也可以不安装直接启动)
1. 下载memcached的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在CMD下输入 “c:\memcached\memcached.exe -d install” 安装.
3. 再输入:”c:\memcached\memcached.exe -d start” 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
如果下载的是二进制的版本,直接运行就可以了,可以加上参数来加以设置。
常用设置:
-p <num> 监听的端口
-l <ip_addr> 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u <username> 以<username>的身份运行 (仅在以root运行的时候有效)
-m <num> 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c <num> 最大同时连接数,默认是1024
-f <factor> 块大小增长因子,默认是1.25
-n <bytes> 最小分配空间,key+value+flags默认是48
-h 显示帮助
然后就可以用php的memcached客户端来试一下了。
Php代码与memcached的交互和与mysql的交互原理是一样的,需要安装一个服务器端的memcached ,现有的交互处理过程已经封装成了一个php的扩展了;需要在php.ini中,将这个扩展加进去。
Php memcached官方手册地址:http://cn2.php.net/manual/en/memcached.get.php
php扩展库pecl下载地址:
配置:
1. 下载pecl模块包(地址如上),解压后将php_memache.dll放到php目录的ext子目录下,为了使得能正常使用,最好下载和php版本一致的模块包。
2. 在php.ini文件中导入’extension=php_memcache.dll’
然后重启apache,估计就可以了(可以在phpinfo.php 中,看看是否有memcached模块),当然了,我们可以写一个实验一下
$memcache_obj = new Memcache;
$memcache_obj->connect(‘localhost’, 11211);
$memcache_obj->set(‘var_key’, ’This is a memcached test!’,MEMCACHE_COMPRESSED, 50);
echo $memcache_obj->get(‘var_key’);
例举一些常用的Memcache方法:
Memcache::add // 添加一个值,如果已经存在,则返回false
Memcache::addServer // 添加Memcache地址
Memcache::close // 关闭一个Memcache的连接
Memcache::connect // 打开一个到Memcache的连接
Memcache::decrement // 对保存的某个key中的值进行减法操作
Memcache::delete // 删除一个Memcache上的key值
Memcache::flush // 刷新所有Memcache上保存的项目(类似于删除所有的保存的项目)
Memcache::get // 从Memcache上获取一个key值
Memcache::getExtendedStats // 获取进程池中所有进程的运行系统统计
Memcache::getServerStatus // 获取运行服务器的参数
Memcache::getStats //获取当前Memcache服务器运行的状态
Memcache::getVersion // 返回运行的Memcache的版本信息
Memcache::increment // 对保存的某个key中的值进行加法操作
Memcache::pconnect // 打开一个到Memcache的长连接
Memcache::replace // 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::set // 向Memcache添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold // 对大于某一大小的数据进行压缩
Memcache::setServerParams // 在运行时修改服务器的参数
一个简单的用法案例:
.net-memcached客户端用法:
C# 下可用的API(每个客户端API中都有详细的说明和注释)
https://sourceforge.net/projects/memcacheddotnet/
http://www.codeplex.com/EnyimMemcached/ - Client developed in .NET 2.0 keeping performance and extensibility in
mind. (Supports consistent hashing.)
http://code.google.com/p/beitmemcached/ - Client developed by BeIT with many new features
转载出处: http://www.yaosansi.com/
----------------------------------------------------------------------------------------
Client调用:
下载示例代码网址: http://sourceforge.net/projects/memcacheddotnet/
C#/.NET memcached client library. This library can be used by .NET projects to access memcached servers. Ported from the Java memcached library located athttp://www.whalin.com/memcached/.
e.g.:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
/** * MemcachedBench.cs
*
* Copyright (c) 2005
* Tim Gebhardt <tim@gebhardtcomputing.com>
*
* Based off of code written by
* Greg Whalin <greg@meetup.com>
* for his Java Memcached client:
*
*
* See the memcached website:
*
* This module is Copyright (c) 2005 Tim Gebhardt.
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later
* version.
*
* This library is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @author Tim Gebhardt<tim@gebhardtcomputing.com>
* @version 1.0
*/ namespace Memcached.MemcachedBench
{ using System;
using System.Collections;
using Memcached.ClientLibrary;
public class MemcachedBench
{
/// <summary>
/// Arguments:
/// arg[0] = the number of runs to do
/// arg[1] = the run at which to start benchmarking
/// </summary>
/// <param name="args"></param>
[STAThread]
public static void Main(String[] args)
{
int runs = 100;
int start = 200;
if (args.Length > 1)
{
runs = int .Parse(args[0]);
start = int .Parse(args[1]);
}
//可以设置多个服务器列表
//string[] serverlist = { "127.0.0.1:11211" , "140.192.34.73:11211" };
string [] serverlist = { "127.0.0.1:11211" }; //, "140.192.34.73:11211" };
// initialize the pool for memcache servers
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(serverlist);
pool.InitConnections = 3;
pool.MinConnections = 3;
pool.MaxConnections = 5;
pool.SocketConnectTimeout = 1000;
pool.SocketTimeout = 3000;
pool.MaintenanceSleep = 30;
pool.Failover = true ;
pool.Nagle = false ;
pool.Initialize();
// initialize the pool for memcache servers
// SockIOPool pool = SockIOPool.Instance; // pool.Servers = serverlist; // // pool.InitConn = 5; // pool.MinConn = 5; // pool.MaxConn = 50; // pool.MaintSleep = 30; // pool.SocketTO = 1000; // // pool.Nagle = false; // pool.Initialize(); // // // get client instance MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = false ;
// MemcachedClient mc = new MemcachedClient(); // mc.CompressEnable = false; // mc.CompressThreshold = 0; // mc.Serialize = true; string keyBase = "testKey" ;
string obj = "这是我的字符串This is a test of an object blah blah es, serialization does not seem to slow things down so much. The gzip compression is horrible horrible performance, so we only use it for very large objects. I have not done any heavy benchmarking recently" ;
long begin = DateTime.Now.Ticks;
for ( int i = start; i < start+runs; i++)
{
mc.Set(keyBase + i, obj);
}
long end = DateTime.Now.Ticks;
long time = end - begin;
Console.WriteLine(runs + " 设置花费的时间-sets: " + new TimeSpan(time).ToString() + "ms" );
begin = DateTime.Now.Ticks;
int hits = 0;
int misses = 0;
for ( int i = start; i < start+runs; i++)
{
string str = ( string ) mc.Get(keyBase + i);
Console.WriteLine( "key={0},value={1}" ,keyBase+i,str);
if (str != null )
++hits;
else ++misses;
}
end = DateTime.Now.Ticks;
time = end - begin;
Console.WriteLine(runs + "读取花费的时间- gets: " + new TimeSpan(time).ToString() + "ms" );
Console.WriteLine( "Cache hits,成功: " + hits.ToString());
Console.WriteLine( "Cache misses,失败: " + misses.ToString());
IDictionary stats = mc.Stats();
foreach ( string key1 in stats.Keys)
{
Console.WriteLine(key1);
Hashtable values = (Hashtable)stats[key1];
foreach ( string key2 in values.Keys)
{
Console.WriteLine(key2 + ":" + values[key2]);
}
Console.WriteLine();
}
SockIOPool.GetInstance().Shutdown();
Console.ReadKey();
}
}
} |
服务器端: http://files.cnblogs.com/wucg/memcached-1.2.6-win32-bin.zip
下载Client库文件及示例,vs2008,.netframework 1.0,2.0 http://files.cnblogs.com/wucg/clientlib.zip
http://www.splinedancer.com/memcached-win32/
memcached for Windows
This is a port of memcached to the win32 architecture byKenneth Dalgleish, based on Kronuz's 1.2.1 port.This port is not supported by the official memcached team.
Install
The win32 version of memcached can be run both as a NT Service or from the command line.To install memcached as a service, follow the next steps:
- Unzip the binaries in your desired directory (eg. c:\memcached)
- Install the service using the command: 'c:\memcached\memcached.exe -d install' from the command line
- Start the server from the Microsoft Management Console or by running the following command: 'c:\memcached\memcached.exe -d start'
- Use the server, by default listening to port 11211
Building from source
To build from source, you will need Visual Studio 2005 (any edition with C++ should work), Windows SDK (eg.Windows SDK for Windows Server 2008 and .NET Framework 3.5) and libevent (win32 binary provided on this page).
- Install Visual Studio 2005
- Install Windows SDK
- Put libevent.lib in Win32-Prj/ folder
- Open solution file and it should build
Downloads
memcached 1.2.4 Win32 Beta
- memcached 1.2.4 Win32 Beta Binaries (09.03.2008)
- memcached 1.2.4 Win32 Beta Source (09.03.2008)
- memcached 1.2.4 Win32 Beta Patch for SVN revision 662 (tag 1.2.4) (09.03.2008)
Libevent 1.3e Win32
(Needed if building from source)
- Libevent 1.3e Win32 Binary (06.03.2008)
相关推荐
**Memcached Windows 下安装与测试详解** Memcached是一款高性能、分布式的内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载。它通过在内存中存储数据和对象来加速动态Web应用的运行速度。在Windows...
### Windows 下安装 Memcached #### 一、概述 本文旨在详细介绍如何在Windows环境下安装Memcached。Memcached是一款高性能、分布式内存对象缓存系统,用于加速动态Web应用,减轻数据库负担。由于官方并未直接提供...
### Memcached在Windows环境下的安装...通过以上步骤,不仅可以顺利完成Memcached在Windows环境下的安装与基本配置,还能在特定的应用场景下(如DiscuzNT 3.0论坛系统)实现高效缓存管理,显著提升系统性能和响应速度。
这个“memcached-windows64-1.4安装文件”是专为Windows 64位操作系统设计的版本,包含安装所需的所有组件,使得在Windows环境下部署和运行Memcached变得简单。 **工作原理** Memcached基于键值对存储,它的工作...
- 客户端:通常需要一个Java客户端库,例如`memcached-2.4.2.jar`,以便于在Java应用中与Memcached交互。 2. **安装步骤**: - 下载并解压缩`memcached-1.2.1-win32.zip`到E盘。 - 进入解压后的目录,运行`...
`memcached` 在Windows上的安装有针对两种处理器架构的版本:x64和x86。x64版本适用于64位操作系统,提供更好的性能和内存利用率,而x86版本则适用于32位操作系统。选择哪个版本取决于你的系统配置。如果您的计算机...
### MemCached在Windows环境下的安装与配置详解 #### 一、概述 MemCached是一种高性能、分布式内存对象缓存系统,可以极大地加速动态Web应用程序的速度,提高可扩展性。本文档将详细介绍如何在Windows 7 64位操作...
- **windows**:说明讨论的是在Microsoft Windows操作系统上的部署和使用,这与通常在Linux环境下的使用有所不同,可能需要考虑兼容性和特定的安装步骤。 - **缓存**:缓存是提高应用程序性能的关键技术,通过将...
本篇文章将详细讲解如何安装和配置memcached,以及与之相关的libevent和magent。 首先,我们需要了解libevent库。libevent是一个事件通知库,它允许程序处理多个网络连接,并有效地处理来自不同源的事件。在安装...
总的来说,memcached在Windows环境下的应用为开发者提供了强大的缓存解决方案,特别是在与PHP和Apache集成时,能显著提升Web应用的性能。通过bat命令控制台,可以轻松管理memcached服务,使得运维变得更加简单高效。
通过以上介绍,我们可以了解到Memcached在Windows环境下的使用方法,以及如何通过配置、优化和监控来提升其在Web应用中的效能。正确地部署和使用Memcached能够显著提升系统的响应速度,减轻数据库压力,提高用户体验...
标题中的“Windows下memcached+memcached.dll 5.3.8”指的是在Windows操作系统上安装和使用Memcached服务的场景,其中`memcached.dll 5.3.8`是Memcached服务器的一个特定版本的动态链接库文件。Memcached是一款高...
3. **下载与安装**:从官方网站或软件仓库获取最新版本的Memcached源代码,然后编译安装。 - 下载源代码: ``` wget https://github.com/memcached/memcached/releases/download/x.x.x/memcached-x.x.x.tar.gz ...
这款1.4.5版本是专为Windows 32位操作系统设计的,尤其适合那些在Windows环境下运行的应用程序。 **一、Memcached的基本概念** 1. **分布式内存缓存**:Memcached将数据存储在内存中,而非硬盘,以实现快速访问。...
“memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...
**Windows环境下Memcached的安装与使用** Memcached是一款高性能、分布式的内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据的读取速度大大...
在Windows环境下安装和使用Memcached可能会与Linux等其他操作系统有所不同,但同样提供了方便的工具进行操作。以下是对标题和描述中涉及的知识点的详细解释: 1. **Memcached的基本概念**:Memcached是一个基于内存...
**描述详解:**“windows系统下安装memcached缓存系统。资源包括memcached文件及安装方法,及修改端口号的方法,简单易操作。” 描述中提到,除了安装过程,还会有修改端口号的步骤。这表明教程不仅会涵盖基础的...