您的位置:首页 > 数据库 > Memcache

memcached—使用

2016-02-22 09:25 471 查看
本篇主要介绍如何使用memcached,包含以下几个方面:

memcached的部署方案

telnet连接memcached

pymemcache,python语言中memcached client的一种实现

memcached的部署方案

memcached在部署上跟mysql、mongodb等数据库相似,可以是单个服务使用,也可以多个服务联合起来形成集群来使用;但memcached集群又与其他集群不一样,最主要的区别在于memcached集群中的服务不知道其他服务的存在,各服务之间不需要相互通信。mysql、mongodb等部署为集群,无非是为了:

数据的可用性(当某节点故障后,剩余节点还可以继续提供服务)

数据访问性能问题,尤其在读写非常频繁的系统中,从多个节点写入和读取大大加快了读写的性能

那么,我们的memcached是部署为单个的服务好,还是集群好?在《一个故事》中提到过,memcached集群的大小等于集群中各节点分配内存的总和,假设我现在需要3GB大小的memcached,你可以选择以下几种部署方案中的任何一种,甚至其他你喜欢的方案:

3GB memcached

2GB memcached + 1GB memcached

1GB memcached + 1GB memcached + 1GB memcached

以及其他任意你喜欢的方案,那么我们到底该如何选择呢?假设我们选择第一种(3GB memcached)方案,很不幸,有一天我的memcached服务故障了(可能是网络原因,也可能是服务器坏掉了,谁知道呢),那么我们整个系统将不会再有缓存;假设我们选择第三种(1GB memcached + 1GB memcached + 1GB memcached)方案,同样很不幸,有一个memcached服务故障了,又会怎么样呢?在在《一个故事》中说过,这仅仅会导致存储在该节点上的数据失效,短期内需要跨过memcached重新请求数据,但client会把取到的新数据按照哈希算法重新分配到剩余的memcached节点上进行存储,很快又恢复到故障前的状态。如何部署,应该不用我说了吧

telnet连接memcached

在《安装memcached》提到了可以通过telnet连接到memcached服务,也仅仅是提到,没有更加深入的介绍,今天就来讲一讲telnet连接到memcached后的基本命令

连接到memcached,
telnet host port


存储一对key-value,
set key flags exptime bytes\r\n datablocks
,flags一般不用,起到一个标记的作用。exptime是保存时间,最大是30天,超过最大值memcached就会当做时间戳来处理,即系统时间达到该时间戳表示的时间时key-value将失效(之后不能通过get命令获取)。bytes指定接下来的数据的字符个数,必须是最后一个参数datablocks的字符个数,不然会报错。datablocks,要保存在memcached中与key对应的value。本条命令包含两行,\r\n表示回车换行,第二行是全部要保存的数据。


存储类命令还有add和replace。add命令格式与set相同,set一般是重新设置key的value,如果key不存在则跟add的作用一致,如果key存在则跟replace的作用一致。


获取命令,
get key
,在上图中已经有体现,这里就不多说了

删除命令,
delete key



增加/减少指定的值,
incr/decr key value



pymemcache

pymemcache是memcached client的一种python实现。安装方法:
pip install pymemcache
,或者源码安装:

git clone https://github.com/pinterest/pymemcache.git 
cd pymemcache

python setup.py nosetests


使用手册参考《pymemcache文档》,以及官方api

参考文献:

github docs:https://github.com/pinterest/pymemcache/blob/master/docs/getting_started.rst

pypi memcached:https://pypi.python.org/pypi/pymemcache/

pymemcache官网:http://pymemcache.readthedocs.org/en/latest/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: