memcache/memcached/memcachedb 配置、安装<转>
2013-12-10 15:12
489 查看
当你听到memcache与memcached时把它当做是一个东东就好了,尽管它们存在区别,但是这并不影响你对它们的运用及理解。
“Memcache”它是一个自由和开放源代码、高性能、分配的内存对象缓存系统,即该系统名称为“Memcache”;
“Memcached”它是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中(分布式),随时接受客户端的连接操作,使用共享内存存取数据;
“Memcachedb”它是新浪2007年的项目,在Memcached的基础上开发出来了,它与Memcache不同的是它提供了数据持久化存储
首先,我们需要下载一个memcached安装程序,memcached版本很多,开源的东西我们一定要找一个持续更新的版本,很简单,有团队在维护升级。
我选择的版本是:beitmemcached,项目地址:http://code.google.com/p/beitmemcached/
注:此链结为windows下memcached文程序安装文件及示例。
图中的两个文件分别为:上面的是客户端调用示例项目文件、下面的文件是Memcached主程序安装文件
然后,将memcached主程序文件安装到服务器上。
Windows下安装:
1.将上图中Memcached 1.2.5.zip解压缩到 D:\program files\memcached目录下(此目录自行定义)。
2.Ctrl+R,输入cmd,打开命令行窗口,转到D:\program files\memcached目录下。
3.memcached.exe -d install
4.memcached.exe -d start
如果你要卸载,执行下面的命令:
1.memcached.exe -d stop
2.memcached.exe -d uninstall
Linux(CentOS 5.x)下安装:
1. yum install gcc
2. cd /tmp
3. wget http://www.monkey.org/~provos/libevent-2.0.4-alpha.tar.gz 注:memcached 用到了 libevent 这个库用于 Socket 的处理,所以 还需要安装 libevent
4. tar zxvf libevent-2.0.4-alpha.tar.gz
5. cd libevent-2.0.4-alpha
6. ./configure -prefix=/usr/local/libevent
7. make
8. make install
9. cd ~
10. cd /tmp
11. http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
12. tar zxvf memcached-1.4.5.tar.gz
13. cd memcached-1.4.5
14. ./configure -prefix=/usr/local/memcached --with-libevent=/usr/local/libevent 注:安装memcached时需要指定libevent的安装位置
15. make
16. make install
17. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libevent/lib 注:将libevent的lib目录加入LD_LIBRARY_PATH里
18. vi /etc/sysconfig/iptables
19. 将下面这行加入进去
-A RH-Firewall-l-INPUT -p tcp -m tcp --dport 11211 -j ACCEPT 注:将memcached加入到防火墙允许访问规则中
20. service iptables restart 注:防火墙重启
21. /usr/local/memcached/bin/memcached -d 注:启动memcached
memcached启动参数描述:
-d :启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u :运行Memcache的用户
-l :监听的服务器IP地址
-p :设置Memcache监听的端口,默认是11211 注:-p(p为小写)
-c :设置最大并发连接数,默认是1024
-P :设置保存Memcache的pid文件 注:-P(P为大写)
如果要结束Memcache进程,执行:kill cat pid文件路径
无论是在windows下还是在linux下安装都非常简单,使用起来也很简单。
如何往memcached中插入数据?如何来读取数据?示例代码如下:
using
System;
using
System.Collections.Generic;
namespace
BeIT.MemCached {
class
Example {
public
static
void
Main(string[]
args) {
//---------------------
//
Setting up a client.
//---------------------
Console.Out.WriteLine("Setting
up Memcached Client.");
MemcachedClient.Setup("MyCache",
new
string[]
{ "localhost"
});
//It
is possible to have several clients with different configurations:
//If
it is impossible to resolve the hosts, this method will throw an exception.
try
{
MemcachedClient.Setup("MyOtherCache",
new
string[]{
"server1.example.com:12345",
"server2.example.com:12345"});
} catch
(Exception e) {
Console.WriteLine(e.Message);
}
//Get
the instance we just set up so we can use it. You can either store this reference yourself in
//some
field, or fetch it every time you need it, it doesn't really matter.
MemcachedClient cache
=
MemcachedClient.GetInstance("MyCache");
//It
is also possible to set up clients in the standard config file. Check the section "beitmemcached"
//in
the App.config file in this project and you will see that a client called "MyConfigFileCache" is defined.
MemcachedClient configFileCache
=
MemcachedClient.GetInstance("MyConfigFileCache");
//Change
client settings to values other than the default like this:
cache.SendReceiveTimeout
=
5000;
cache.ConnectTimeout =
5000;
cache.MinPoolSize =
1;
cache.MaxPoolSize =
5;
//----------------
//
Using a client.
//----------------
//Set
some items
Console.Out.WriteLine("Storing
some items.");
cache.Set("mystring",
"The
quick brown fox jumped over the lazy dog.");
cache.Set("myarray",
new
string[]{"This
is the first string.",
"This
is the second string."});
cache.Set("myinteger",
4711);
cache.Set("mydate",
new
DateTime(2008,
02,
23));
//Use
custom hash
cache.Set("secondstring",
"Flygande
b鋍kasiner s鰇a hwila p?mjuka tufvor",
4711);
//Get
a string
string
str =
cache.Get("mystring")
as
string;
if
(str !=
null)
{
Console.Out.WriteLine("Fetched
item with key: mystring, value: "
+
str);
}
//Get
an object
string[]
array =
cache.Get("myarray")
as
string[];
if
(array !=
null)
{
Console.Out.WriteLine("Fetched
items with key: myarray, value 1: "
+
array[0]
+
",
value 2: "
+
array[1]);
}
//Get
several values at once
object[]
result =
cache.Get(new
string[]{"myinteger",
"mydate"});
if
(result[0]
!=
null
&&
result[0]
is
int)
{
Console.Out.WriteLine("Fetched
item with key: myinteger, value: "
+
(int)result[0]);
}
if
(result[1]
!=
null
&&
result[1]
is
DateTime) {
Console.Out.WriteLine("Fetched
item with key: mydate, value: "
+
(DateTime)result[1]);
}
str =
cache.Get("secondstring",
4711)
as
string;
if
(str !=
null)
{
Console.Out.WriteLine("Fetched
item with key and custom hash: secondstring, value: "
+
str);
}
//Set
a counter
Console.Out.WriteLine("Setting
an item for incrementing and decrementing.");
cache.SetCounter("mycounter",
9000);
ulong?
counter =
cache.GetCounter("mycounter");
if
(counter.HasValue) {
Console.Out.WriteLine("Fetched
mycounter, value: "
+
counter.Value);
}
//Increment
the counter
counter
=
cache.Increment("mycounter",
1);
if
(counter.HasValue) {
Console.Out.WriteLine("Incremented
mycounter with 1, new value: "
+
counter.Value);
}
//Decrement
the counter
counter
=
cache.Decrement("mycounter",
9000);
if
(counter.HasValue) {
Console.Out.WriteLine("Decremented
mycounter with 9000, new value: "
+
counter.Value);
}
//Append
and prepend
Console.Out.WriteLine("Storing
bar for append/prepend");
cache.Set("foo",
"bar");
Console.Out.WriteLine("Appending
baz");
cache.Append("foo",
"
baz");
Console.Out.WriteLine("Prepending
foo");
cache.Prepend("foo",
"foo
");
Console.Out.WriteLine("New
value: "
+
cache.Get("foo"));
//Cas
cache.Delete("castest");
Console.Out.WriteLine("Trying
to CAS non-existant key castest: "
+
cache.CheckAndSet("castest",
"a",
0));
Console.Out.WriteLine("Setting
value for key: castest, value: a");
cache.Set("castest",
"a");
Console.Out.WriteLine("Trying
to CAS key castest with the wrong unique: "
+
cache.CheckAndSet("castest",
"a",
0));
ulong
unique;
cache.Gets("castest",
out
unique);
Console.Out.WriteLine("Getting
cas unique for key castest: "
+
unique);
Console.Out.WriteLine("Trying
to CAS again with the above unique: "
+
cache.CheckAndSet("castest",
"b",
unique));
string
value =
cache.Gets("castest",
out
unique) as
string;
Console.Out.WriteLine("New
value: "
+
value +
",
new unique: "
+
unique);
Console.Out.WriteLine("Displaying
the socketpool status:");
foreach
(KeyValuePair<string,
Dictionary<string,
string>>
host in
cache.Status()) {
Console.Out.WriteLine("Host:
"
+
host.Key);
foreach
(KeyValuePair<string,
string>
item in
host.Value) {
Console.Out.WriteLine("\t"
+
item.Key +
":
"
+
item.Value);
}
Console.Out.WriteLine();
}
Console.Out.WriteLine();
Console.Out.WriteLine("Finished.
Press enter to exit.");
Console.In.ReadLine();
}
}
}
注:memcached是以KEY-VALUE的方式进行数据存储的,KEY的大小限制:Key(max)<=250个字符;VALUE在存储时有限制:Value(max)<= 1M;memcached默认过期时间:ExpiresTime(max)= 30(days)。
“Memcache”它是一个自由和开放源代码、高性能、分配的内存对象缓存系统,即该系统名称为“Memcache”;
“Memcached”它是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中(分布式),随时接受客户端的连接操作,使用共享内存存取数据;
“Memcachedb”它是新浪2007年的项目,在Memcached的基础上开发出来了,它与Memcache不同的是它提供了数据持久化存储
首先,我们需要下载一个memcached安装程序,memcached版本很多,开源的东西我们一定要找一个持续更新的版本,很简单,有团队在维护升级。
我选择的版本是:beitmemcached,项目地址:http://code.google.com/p/beitmemcached/
注:此链结为windows下memcached文程序安装文件及示例。
图中的两个文件分别为:上面的是客户端调用示例项目文件、下面的文件是Memcached主程序安装文件
然后,将memcached主程序文件安装到服务器上。
Windows下安装:
1.将上图中Memcached 1.2.5.zip解压缩到 D:\program files\memcached目录下(此目录自行定义)。
2.Ctrl+R,输入cmd,打开命令行窗口,转到D:\program files\memcached目录下。
3.memcached.exe -d install
4.memcached.exe -d start
如果你要卸载,执行下面的命令:
1.memcached.exe -d stop
2.memcached.exe -d uninstall
Linux(CentOS 5.x)下安装:
1. yum install gcc
2. cd /tmp
3. wget http://www.monkey.org/~provos/libevent-2.0.4-alpha.tar.gz 注:memcached 用到了 libevent 这个库用于 Socket 的处理,所以 还需要安装 libevent
4. tar zxvf libevent-2.0.4-alpha.tar.gz
5. cd libevent-2.0.4-alpha
6. ./configure -prefix=/usr/local/libevent
7. make
8. make install
9. cd ~
10. cd /tmp
11. http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
12. tar zxvf memcached-1.4.5.tar.gz
13. cd memcached-1.4.5
14. ./configure -prefix=/usr/local/memcached --with-libevent=/usr/local/libevent 注:安装memcached时需要指定libevent的安装位置
15. make
16. make install
17. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libevent/lib 注:将libevent的lib目录加入LD_LIBRARY_PATH里
18. vi /etc/sysconfig/iptables
19. 将下面这行加入进去
-A RH-Firewall-l-INPUT -p tcp -m tcp --dport 11211 -j ACCEPT 注:将memcached加入到防火墙允许访问规则中
20. service iptables restart 注:防火墙重启
21. /usr/local/memcached/bin/memcached -d 注:启动memcached
memcached启动参数描述:
-d :启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u :运行Memcache的用户
-l :监听的服务器IP地址
-p :设置Memcache监听的端口,默认是11211 注:-p(p为小写)
-c :设置最大并发连接数,默认是1024
-P :设置保存Memcache的pid文件 注:-P(P为大写)
如果要结束Memcache进程,执行:kill cat pid文件路径
无论是在windows下还是在linux下安装都非常简单,使用起来也很简单。
如何往memcached中插入数据?如何来读取数据?示例代码如下:
using
System;
using
System.Collections.Generic;
namespace
BeIT.MemCached {
class
Example {
public
static
void
Main(string[]
args) {
//---------------------
//
Setting up a client.
//---------------------
Console.Out.WriteLine("Setting
up Memcached Client.");
MemcachedClient.Setup("MyCache",
new
string[]
{ "localhost"
});
//It
is possible to have several clients with different configurations:
//If
it is impossible to resolve the hosts, this method will throw an exception.
try
{
MemcachedClient.Setup("MyOtherCache",
new
string[]{
"server1.example.com:12345",
"server2.example.com:12345"});
} catch
(Exception e) {
Console.WriteLine(e.Message);
}
//Get
the instance we just set up so we can use it. You can either store this reference yourself in
//some
field, or fetch it every time you need it, it doesn't really matter.
MemcachedClient cache
=
MemcachedClient.GetInstance("MyCache");
//It
is also possible to set up clients in the standard config file. Check the section "beitmemcached"
//in
the App.config file in this project and you will see that a client called "MyConfigFileCache" is defined.
MemcachedClient configFileCache
=
MemcachedClient.GetInstance("MyConfigFileCache");
//Change
client settings to values other than the default like this:
cache.SendReceiveTimeout
=
5000;
cache.ConnectTimeout =
5000;
cache.MinPoolSize =
1;
cache.MaxPoolSize =
5;
//----------------
//
Using a client.
//----------------
//Set
some items
Console.Out.WriteLine("Storing
some items.");
cache.Set("mystring",
"The
quick brown fox jumped over the lazy dog.");
cache.Set("myarray",
new
string[]{"This
is the first string.",
"This
is the second string."});
cache.Set("myinteger",
4711);
cache.Set("mydate",
new
DateTime(2008,
02,
23));
//Use
custom hash
cache.Set("secondstring",
"Flygande
b鋍kasiner s鰇a hwila p?mjuka tufvor",
4711);
//Get
a string
string
str =
cache.Get("mystring")
as
string;
if
(str !=
null)
{
Console.Out.WriteLine("Fetched
item with key: mystring, value: "
+
str);
}
//Get
an object
string[]
array =
cache.Get("myarray")
as
string[];
if
(array !=
null)
{
Console.Out.WriteLine("Fetched
items with key: myarray, value 1: "
+
array[0]
+
",
value 2: "
+
array[1]);
}
//Get
several values at once
object[]
result =
cache.Get(new
string[]{"myinteger",
"mydate"});
if
(result[0]
!=
null
&&
result[0]
is
int)
{
Console.Out.WriteLine("Fetched
item with key: myinteger, value: "
+
(int)result[0]);
}
if
(result[1]
!=
null
&&
result[1]
is
DateTime) {
Console.Out.WriteLine("Fetched
item with key: mydate, value: "
+
(DateTime)result[1]);
}
str =
cache.Get("secondstring",
4711)
as
string;
if
(str !=
null)
{
Console.Out.WriteLine("Fetched
item with key and custom hash: secondstring, value: "
+
str);
}
//Set
a counter
Console.Out.WriteLine("Setting
an item for incrementing and decrementing.");
cache.SetCounter("mycounter",
9000);
ulong?
counter =
cache.GetCounter("mycounter");
if
(counter.HasValue) {
Console.Out.WriteLine("Fetched
mycounter, value: "
+
counter.Value);
}
//Increment
the counter
counter
=
cache.Increment("mycounter",
1);
if
(counter.HasValue) {
Console.Out.WriteLine("Incremented
mycounter with 1, new value: "
+
counter.Value);
}
//Decrement
the counter
counter
=
cache.Decrement("mycounter",
9000);
if
(counter.HasValue) {
Console.Out.WriteLine("Decremented
mycounter with 9000, new value: "
+
counter.Value);
}
//Append
and prepend
Console.Out.WriteLine("Storing
bar for append/prepend");
cache.Set("foo",
"bar");
Console.Out.WriteLine("Appending
baz");
cache.Append("foo",
"
baz");
Console.Out.WriteLine("Prepending
foo");
cache.Prepend("foo",
"foo
");
Console.Out.WriteLine("New
value: "
+
cache.Get("foo"));
//Cas
cache.Delete("castest");
Console.Out.WriteLine("Trying
to CAS non-existant key castest: "
+
cache.CheckAndSet("castest",
"a",
0));
Console.Out.WriteLine("Setting
value for key: castest, value: a");
cache.Set("castest",
"a");
Console.Out.WriteLine("Trying
to CAS key castest with the wrong unique: "
+
cache.CheckAndSet("castest",
"a",
0));
ulong
unique;
cache.Gets("castest",
out
unique);
Console.Out.WriteLine("Getting
cas unique for key castest: "
+
unique);
Console.Out.WriteLine("Trying
to CAS again with the above unique: "
+
cache.CheckAndSet("castest",
"b",
unique));
string
value =
cache.Gets("castest",
out
unique) as
string;
Console.Out.WriteLine("New
value: "
+
value +
",
new unique: "
+
unique);
Console.Out.WriteLine("Displaying
the socketpool status:");
foreach
(KeyValuePair<string,
Dictionary<string,
string>>
host in
cache.Status()) {
Console.Out.WriteLine("Host:
"
+
host.Key);
foreach
(KeyValuePair<string,
string>
item in
host.Value) {
Console.Out.WriteLine("\t"
+
item.Key +
":
"
+
item.Value);
}
Console.Out.WriteLine();
}
Console.Out.WriteLine();
Console.Out.WriteLine("Finished.
Press enter to exit.");
Console.In.ReadLine();
}
}
}
注:memcached是以KEY-VALUE的方式进行数据存储的,KEY的大小限制:Key(max)<=250个字符;VALUE在存储时有限制:Value(max)<= 1M;memcached默认过期时间:ExpiresTime(max)= 30(days)。
相关文章推荐
- Windows下 maven3.0.4的安装步骤+maven配置本地仓库<转>
- nodejs学习笔记<安装和配置>
- Mahout安装与配置<转>
- <配置> Ubuntu gcc 安装 使用方法
- Redis的安装配置介绍<转>
- MySQL数据库主从同步安装与配置总结<ZHUAN>
- (&lt;虚拟项目&gt;广告管理投放系统-2)Sql Server 2008 R2主数据管理系统的安装和配置
- Windows7 IIS的安装与配置<图解>
- 敏捷开发Maven实践论<一>Maven的安装与配置
- myeclipse安装 配置Maven<转>
- &lt;转载&gt;CentOS 6.3下Samba服务器的安装与配置
- logback 常用配置详解(二) <appender>
- Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached区别 & redis-cli.exe命令及示例)
- Storm集群安装部署步骤【详细版】<转>
- 关于Spring中的<context:annotation-config/>配置
- spring中配置<aop:aspectj-autoproxy/>与<mvc:annotation-driven/>作用以及国际化配置
- YUM安装遇到问题:File"/usr/bin/yum", line 29, in <module> File"/usr/share/yum-cli/yummain.py", line 276, in
- apache2.2.x(x>=3)安装配置及与tomcat5.5整合
- HDFS的重要参数配置<一> JVM的配置
- 如何安装CDT到Eclipse<转>