memcached—使用
2016-02-22 09:25
471 查看
本篇主要介绍如何使用memcached,包含以下几个方面:
memcached的部署方案
telnet连接memcached
pymemcache,python语言中memcached client的一种实现
数据的可用性(当某节点故障后,剩余节点还可以继续提供服务)
数据访问性能问题,尤其在读写非常频繁的系统中,从多个节点写入和读取大大加快了读写的性能
那么,我们的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节点上进行存储,很快又恢复到故障前的状态。如何部署,应该不用我说了吧
连接到memcached,
存储一对key-value,
存储类命令还有add和replace。add命令格式与set相同,set一般是重新设置key的value,如果key不存在则跟add的作用一致,如果key存在则跟replace的作用一致。
获取命令,
删除命令,
增加/减少指定的值,
使用手册参考《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
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
相关文章推荐
- 【Memcached】基础知识-Cache
- PHP_Memcache函数详解
- PHP 使用memcached
- Redis与Memcached的区别
- 分布式缓存系统_Memcached
- 为什么引入Memcached?
- Memcached—安装
- Linux memcached
- memcached 常用方法介绍
- Memcached
- Memcached源代码分析 - Memcached源代码分析之消息回应(3)
- Centos7 安装 memcached 1.4.25
- php缓存技术之Memcached
- Redis和Memcache的区别分析
- wamp 配置 memcache
- memcache
- redis和memcache
- memcache应用之成交动态
- Windows安装Memcached
- Redis和Memcache的区别分析