Memcached缓存

Memcached是免费的,开源的,高性能的,分布式内存对象的缓存系统(键/值字典),旨在通过减轻数据库负载加快动态Web应用程序的使用。

Memcached是由布拉德·菲茨帕特里克(Brad Fitzpatrick)在2003年为LiveJournal 开发的,现在有很多知名网站都在使用,包括:Netlog, Facebook, Flickr, Wikipedia, Twitter, YouTube等。 

memcached 主要特点是:

  • 开源

  • memcached服务器是一个很大的哈希表

  • 显著减少数据库负载。

  • 非常适合高负载的数据库网站。

  • 在BSD许可下发布

  • 从技术上来说,它是在通过TCP或UDP在服务器和客户端之间来访问。

 

在Ubuntu上安装Memcached
要在Ubuntu上安装Memcached,打开终端,然后输入以下命令:

$sudo apt-get update
$sudo apt-get install memcached
确认memcached是否安装
要确认memcached安装与否,需要运行下面的命令:

$ps aux | grep memcached
上面的命令将显示Memcached是默认端口11211上,如运行在其它端口,那么运行以下命令来启动memcached服务器:

$memcached -p 11111 -U 11111 -d
上面的命令将启动服务器上的TCP端口11111并监听UDP端口11111作为守护进程。可以从一个安装memcached服务器上运行多个实例。


要连接到memcache服务器,需要使用telnet命令到主机和端口名称。

语法
memcached 的 telnet 命令的基本语法如下所示:

$telnet HOST PORT
在这里,Host 和Port 是memcached服务器运行的IP和端口

例子
下面给出的示例演示如何连接到memcached服务器,并运行一个简单的set和get命令。在这个例子中,假定memcached服务器在主机IP是127.0.0.1,端口11211上运行

$telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
// now store some data and get it from memcached server
set yiibai 0 900 9
memcached
STORED
get yiibai
VALUE yiibai 0 9
memcached
END


memcached 的 set 命令用于一个新的值,为一个新的或现有的键(key)设置一个值。

语法
memcached set 命令的基本语法如下所示:

set key flags exptime bytes [noreply] 
value 
如下图所示以上关键字的含义:

key 是通过被存储在Memcached的数据并从memcached获取键(key)的名称。

flags 是32位无符号整数,该项目被检索时用的数据(由用户提供),并沿数据返回服务器存储。

exptime 以秒过期时间,0表示没有延迟,如果exptime大于30天,Memcached将使用它作为UNIX时间戳过期。

bytes 是在数据块中,需要被存储的字节数。基本上,这是一个需要存储在memcached的数据的长度。

noreply (可选) 参数告知服务器不发送回复

value 是一个需要存储的数据。数据需要与上述选项执行命令后,将通过新的一行。

输出
上述命令的输出如下所示:

STORED
STORED 表示成功。

ERROR 以表明有问题,同时保存数据或错误的语法。

示例
set yiibai 0 900 9 
memcached 
STORED 
get yiibai 
VALUE yiibai 0 9
memcached
END 
在上面的例子中,我们使用yiibai作为键,memcached在其900秒失效时间并设定值。

 

Memcached的replace 命令用来替换现有键的值。如果该键不存在,那么它输出NOT_STORED

语法
memcached的replace命令的基本语法如下所示:

replace key flags exptime bytes [noreply]
value
以上关键字的含义,如下图所示:

key 是通过被存储在Memcached的数据并从memcached获取键(key)的名称。

flags 是32位无符号整数,该项目被检索时用的数据(由用户提供),并沿数据返回服务器存储。

exptime 以秒为过期时间,0表示没有延迟,如果exptime大于30天,Memcached将使用它作为UNIX时间戳过期。

bytes 是在数据块中,需要被存储的字节数。基本上,这是一个需要存储在memcached的数据的长度。

noreply (optional) 参数告知服务器不发送回复

value 是一个需要存储的数据。数据需要将通过在新的一行后,执行命令上述选项。

输出
上述命令的输出如下所示:

STORED
STORED 用来表示成功。

NOT_STORED, 如果数据没有被存储在memcached。

示例
add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
memcached
END
replace key 0 900 5
redis
get key
VALUE key 0 5
redis
END
在上面的例子中,我们已经使用key作为键,并存储memcached在900秒失效时间之前。同样的键替换值为Redis。


memcached的append 命令是用来添加一些数据到现有键(key)。数据是存储在键的现有数据之后。

语法
memcached的append命令的基本语法如下所示:

append key flags exptime bytes [noreply]
value
以上关键字的含义,如下图所示:

key 是通过被存储在Memcached的数据并从memcached获取键(key)的名称。

flags 是32位无符号整数,该项目被检索时用的数据(由用户提供),并沿数据返回服务器存储。

exptime 以秒过期时间,0表示没有延迟,如果 exptime 大于30天,Memcached将使用它作为UNIX时间戳过期。

bytes 是在数据块中,需要被存储的字节数。基本上,这是一个需要存储在memcached的数据的长度。

noreply (optional) 参数告知服务器不发送回复

value 是一个需要存储的数据。数据需要将通过在新的一行后,执行命令上述选项。

输出
上述命令的输出如下所示:

STORED
STORED 表示成功。

NOT_STORED, 如果key不存在于memcached服务器。

CLIENT_ERROR, 如果有一些错误。

示例
append tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
append tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
memcachedredis
END
在上面的例子中,我们添加一些数据在键中,如果它不存在,则 memcached 返回NOT_STORED,我们已经建立一个键并附加数据到其中。

 

Memcached的prepend命令用于添加一些数据到现有的键(key)。数据将存储在键的现有的数据之前。

语法
memcached的prepend命令的基本语法如下所示:

prepend key flags exptime bytes [noreply]
value
以上关键字的含义,如下图所示:

key 是通过被存储在Memcached的数据并从memcached获取键(key)的名称。

flags 是32位无符号整数,该项目被检索时用的数据(由用户提供),并沿数据返回服务器存储。

exptime 以秒为过期时间,0表示没有延迟,如果exptime大于30天,Memcached将使用它作为UNIX时间戳过期。

bytes 是在数据块中,需要被存储的字节数。基本上,这是一个需要存储在memcached的数据的长度。

noreply (optional) 参数告知服务器不发送回复

value 是一个需要存储的数据。数据需要将通过在新的一行后,执行命令上述选项。

输出
上述命令的输出如下所示:

STORED
STORED 表示成功。

NOT_STORED, 如果key不存在于memcached服务器。

CLIENT_ERROR, 如果有一些错误。

示例
prepend tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
prepend tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
redismemcached
END
在上面的例子中,我们将一些数据添加一个键,它不存在,memcached返回NOT_STORED ,之后我们已经建立一个键和预先添加数据到其中。

 

Memcached 的 cas 命令用于设置数据,如果自上一次获取没有人更新。如果该键不在memcached中,那么它返回NOT_FOUND。

语法
memcached的cas命令的基本语法如下所示:

set key flags exptime bytes unique_cas_key [noreply]
value
以上关键字的含义,如下图所示:

key 是通过被存储在Memcached的数据并从memcached获取键(key)的名称。

flags 是32位无符号整数,该项目被检索时用的数据(由用户提供),并沿数据返回服务器存储。

exptime 以秒过期时间,0表示没有延迟,如果exptime大于30天,Memcached将使用它作为UNIX时间戳过期。

bytes 是在数据块中,需要被存储的字节数。基本上,这是一个需要存储在memcached的数据的长度。

unique_cas_key 从gets命令的获得唯一键。
noreply (optional) 参数告知服务器不发送回复

value 是一个需要存储的数据。数据需要将通过在新的一行后,执行命令上述选项。

输出
上述命令的输出如下所示:

STORED
STORED 表示成功。

ERROR 以表明有问题,同时保存数据或错误的语法。

EXISTS 以表明自上一次获取起已有人修改了CAS数据。

EXISTS 以表示该键不存在于memcached服务器。

示例
要运行memcached的cas命令,需要从gets命令得到memcached令牌。

cas tp 0 900 9
ERROR
cas tp 0 900 9 2
memcached
set tp 0 900 9
memcached
STORED
gets tp
VALUE tp 0 9 1
memcached
END
cas tp 0 900 5 2
redis
EXISTS
cas tp 0 900 5 1
redis
STORED
get tp
VALUE tp 0 5
redis
END


Memcached 的 get 命令用于获取存储在键的值。如果该键在memcached 中不存在,那么它没有返回值。

语法
memcached 的 get 命令的基本语法如下所示:

get key
示例
set yiibai 0 900 9
memcached
STORED
get yiibai
VALUE yiibai 0 9
memcached
END
在上面的例子中,我们已经使用yiibai作为键,并存储在memcached设置900秒失效的时间。


memcached的基本gets命令的语法如下:

gets key
示例
set yiibai 0 900 9
memcached
STORED
gets yiibai
VALUE yiibai 0 9 1
memcached
END
在上面的例子中,我们已经使用 yiibai 作为键,并存储在memcached 设置900秒失效的时间。


Memcached的delete命令用于删除memcached服务器现有的键。

语法
memcached delete命令的基本语法如下所示:

delete key
如果键成功删除,则返回DELETED,如果key没有找到则返回NOT_FOUND,否则返回ERROR。

示例
set yiibai 0 900 9
memcached
STORED
get yiibai
VALUE yiibai 0 9
memcached
END
delete yiibai
DELETED
get yiibai
END
delete yiibai
NOT_FOUND
在上面的例子中,我们已经使用yiibai作为键,并存储在memcached其900秒后失效,之后删除所存储的键。

 

Memcached的 flush_all 命令用于删除memcached服务器中的所有数据(键值对)。它接受一个叫做time可选参数,表示这个时间后的所有memcached数据会被清除。

语法
memcached 的 flush_all 命令的基本语法如下所示:

flush_all [time] [noreply]
上面的命令总是返回OK

示例
在下面给出的例子中,我们存储一些数据到 memcached 服务器,然后清除所有数据。

set yiibai 0 900 9
memcached
STORED
get yiibai
VALUE yiibai 0 9
memcached
END
flush_all
OK
get yiibai
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值