• linux »
  • Memcached的安装以及使用

Memcached的安装以及使用

Memcached的安装以及使用

Memcached概述

1.简介

memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

2.特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

*协议简单 : 使用简单的基于文本行的协议,可以通过telnet进行数据的存储以及取出
*内置内存存储方式 : 不会对数据持久化,重启memcached或操作系统,数据丢失
*memcached不互相通信的分布式 : 各个memcached服务器不会相互通信以及共享信息

一、安装

1.获取源码包

2.编译安装

二、使用

启动

-p 使用的TCP端口。默认的11211
-m 最大内存大小.默认64M
-c 最大的并发连接数.默认1024
-P 将进程的pid保存到指定的文件(注:只有在使用-d下使用)
-d 作为daemon在后台启动
-u 以memcahced用户启动memcached
-l 监听的服务器的ip地址,默认为环境变量INDRR_ANY的值

重启

操作

如何连接memcached缓存服务器:通过telnet进行连接

1.memcache的运行状态可以方便的用stats命令显示

查看运行状态

数据保存指令

指令格式:
<命令> <键> <标记> <有效期> <数据长度>

<命令> – command name
set 命令是保存一个叫做key的数据到服务器上
add 命令是添加一个数据到服务器,但是服务器必须这个key是不存在的,能够保证数据不会被覆盖
replace 命令是替换一个已经存在的数据,如果数据不存在,就是类似set功能
<键> – key
就是保存在服务器上唯一的一个表示符,必须是跟其他的key不冲突,否则会覆盖掉原来的数据,这个key是为了能够准确的存取一个数据项目
<标记> – flag
标记是一个16位的无符号整形数据,用来设置服务器端跟客户端一些交互的操作
<有效期> – expiration time
是数据在服务器上的有效期限,如果是0,则数据永远有效,单位是秒,Memcache服务器端会把一个数据的有效期设置为当前Unix时间+设置的有效时间
<数据长度> – bytes
数据的长度,block data 块数据的长度,一般在这个个长度结束以后下一行跟着block data数据内容,发送完数据以后,客户端一般等待服务器端的返回,服务器端的返回

数据提取命令

get <键>
VALUE <键> <标记> <数据长度>

数据删除指令

delete <键> <超时时间>
flush_all
  这个指令执行后,服务器上所有缓存的数据都被删除

其他指令

version VERSION 开头的版本信息
quit 断开当前连接

例子:

三、用客户端连接

许多语言都实现了连接memcached的客户端,这里我就举ruby,php两个例子:

php版本:

相关函数:
Memcache面向对象的常用接口包括:
Memcache::connect — 打开一个到Memcache的连接
Memcache::pconnect — 打开一个到Memcache的长连接
Memcache::close — 关闭一个Memcache的连接
Memcache::set — 保存数据到Memcache服务器上
Memcache::get — 提取一个保存在Memcache服务器上的数据
Memcache::replace — 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::delete — 从Memcache服务器上删除一个保存的项目
Memcache::flush — 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats — 获取当前Memcache服务器运行的状态
Memcache::addServer — 分布式服务器添加一个服务器
eg:
[php]
$mem = new Memcache();
$mem->addServer(’127.0.0.1′);
$sql = “SELECT * FROM demos”;
if ( $vo = $mem->get(md5($sql)) ) {
echo ‘有缓存的时候’;
var_dump($vo);
} else {
echo ‘没有缓存的时候’;
$m = new mysqli(‘localhost’,'root’,'demo’,'demo’);
$m->set_charset(‘utf8′);
$result = $m->query($sql);
if ( $result && $m->affected_rows ) {
while($row=$result->fetch_assoc()){
$rows[] = $row;
}
}
$mem->add(md5($sql)), $rows, MEMCACHE_COMPRESSED, 60*60);
var_dump($row);
}
?>
[/php]

ruby版本

ruby on Rails版本

安装:
[ruby]
gem install dalli

require ‘dalli’
dc = Dalli:Client.new(’127.0.0.1:11211′)
dc.set(‘abc’,123)
dc.get(‘abc’) #=> 123
[/ruby]

vim config/environments/development.rb

参考:http://wp.xdite.net/?p=1029

https://github.com/mperham/dalli

This entry was posted in linux, memcached

Leave a Reply

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">