memcached

memcached介绍

	Memcached是一个高性能的分布式内存对象缓存系统,用于加速动态Web应用以减轻数据库负载。
	Memcached通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
	Memcached基于一个存储键/值对的hashmap,其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余,当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
	Memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
	memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。
	memcached作为高速运行的分布式缓存服务器,具有以下的特点
		协议简单
		基于libevent的事件处理
		内置内存存储方式
		memcached不互相通信的分布式
	缓存服务器:
		cache,无持久存储功能;
		bypass缓存,依赖于客户端的智能;
		k/v cache,仅支持存储可流式化数据;
	特性:
			k/v cache:仅可存储可序列化数据;存储项:k/v;
			智能性一半依赖于客户端(调用memcached的API开发程序),一半依赖于服务端;
			分布式缓存:互不通信的分布式集群;
				分布式系统请求路由方法:取模法,一致性哈希算法;
			算法复杂度:O(1)
			清理过期缓存项:
				缓存耗尽:LRU 
				缓存项过期:惰性清理机制
			
	安装配置:
		由CentOS 7 base仓库直接提供:
			监听的端口:
				11211/tcp, 11211/udp 
		主程序:/usr/bin/memcached
		配置文件:/etc/sysconfig/memcached
		Unit File:memcached.service 
		协议格式:memcached协议
			文本格式
			二进制格式
			
		命令:
			统计类:stats, stats items, stats slabs, stats sizes
			存储类:set, add, replace, append, prepend
				命令格式:<command name> <key> <flags> <exptime> <bytes>  <cas unique>
			检索类:get, delete, incr/decr
			清空:flush_all
			
			示例:
				telnet> add KEY <flags> <expiretime> <bytes> \r
				telnet> VALUE
				
		memcached程序的常用选项:
			-m <num>:	使用<num>MB内存最大值用于对象存储,默认为64MB.
			-c <num>:	使用<num>最大同时连接,默认为1024
			-u <username>:	以指定的用户身份来运行进程;
			-l <ip_addr>:	监听的IP地址,默认为本机所有地址;
			-p <num>:	监听的TCP端口,默认为 11211.
			-U <num>:	Listen on UDP port <num>, the default is port 11211, 0 is off.
			-M:	内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空间可用时为止;
			-f <factor>:	增长因子;默认是1.25;
			-t <threads>:	启动的用于响应用户请求的线程数;
			
		memcached默认没有认证机制,可借用于SASL进行认证;
			SASL:Simple Authentication Secure Layer
			
		API:
			php-pecl-memcache
			php-pecl-memcached
			python-memcached
			libmemcached
			libmemcached-devel
		命令行工具:
			memcached-tool  SERVER:PORT  COMMAND 
posted @ 2018-02-24 17:07  shenxm  阅读(222)  评论(0编辑  收藏  举报