Memcached是一个高性能的分布式内存对象缓存系统,用于减轻数据库负载。它通过在内存中缓存数据来减少读取数据库的次数,从而提高接口的速度。
Window下安装Memcached
官网上并未提供Memcached的Window平台安装包,需要根据自己的系统及需要的版本号另行下载。在1.4.5版本以前Memcached可以作为一个服务安装,而在1.4.5及之后的版本删除了该功能。1.下载安装包并解压。2.管理员进入cmd,安装成服务memcached.exe -d install。Memcached的特点及工作原理
1.完全基于内存缓存。2.节点之间相互独立。3.C/S模式架构,C语言编写,总共2000多行代码。4.异步I/O模型,使用libevent作为事件通知机制。5.被缓存的数据以key/value键值对形式存放。6.全部数据存放在内存中,没有持久化设计,重启服务器后内存里的数据会丢失。7.当内存中缓存的数据容量达到启动时设定的内存值时,就自动使用LRU算法删除过期的缓存数据。8.可以对存储的数据设置过期时间,过期后的数据自动被清除,服务本身不会监控过期,而是在访问的时候查看key的时间戳,判断是否过期。9.Memcached会对设定的内存进行分块,再把块分组,然后再提供服务。协议
Memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、获取数据。通信分布式
Memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个Memcached不会互相通信以共享信息,需要客户端实现。Memcached连接
telnet 127.0.0.1 11211set命令
set命令用于将数据存储在指定的key中,如果key已经存在,则更新数据。set key flags exptime bytes [noreply]value参数说明:
key:键值,用于查找缓存值。flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。exptime:在缓存中保存键值的时间长度(以秒为单位,0表示永远)bytes:在缓存中存储的字节数noreply(可选):该参数告知服务器不需要返回数据value:存储的值(始终位于第二行)set name 0 900 3
123STOREDget name
VALUE runoob 0 3123输出信息说明:
STORED:保存成功。ERROR:保持失败。NOT_STORED:保持失败。add命令用于将数据存储在指定的key中,如果key已经存在,则不更新数据。
replace命令用于替换已存在的数据。
append命令用于在后面追加数据。
prepend命令用于在前面追加数据。
cas命令用于执行一个"检查并设置"的操作。
get命令用于获取key的数据,多个key使用空格隔开,如果key不存在,则返回空。
gets命令用于获取带有cas令牌的数据,如果key不存在,则返回空。
delete命令用于删除。
flush_all命令用于清理缓存中的所有数据。该命令提供了一个可选参数time,用于在制定的时间后执行清理缓存操作。
Redis与Memcached的区别1.网络IO模型Redis:单线程的IO复用的网络模型。Memcached:多线程的非阻塞IO复用的网络模型。2.数据支持类型Redis:key-value数据类型还支持list,set,zset,hash等数据结构的存储。Memcached:key-value形式存储和访问数据。3.数据持久化Redis:支持数据持久化。Memcached:不支持数据持久化。4.数据一致性Redis:提供了事务的功能,保证命令的原子性,中间不会被任何操作打断。Memcached:提供了cas命令,保证多个并发访问操作同一份数据的一致性。5.集群管理Redis:服务器端构建分布式存储。Memcached:只能采用客户端实现分布式存储。6.性能Redis:单核 数据量<100k(高) 数据量>100k(低)。Memcached:多核 数据量<100k(低) 数据量>100k(高)。7.内存使用效率Redis:采用key-value存储结构利用率低,采用hash结构来做key-value存储(组合式的压缩方式)利用率高。Memcached:采用key-value存储结构利用率高。