memcache:
介绍
最新版本v1.5.16
老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,数据存放在内存中,不支持持久化
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度, MemCaChe是一个存储键值对的HashMap
存储一般的K-V键值对, 基于LruCache做缓存
redis:支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G
它是由什么组成的?
客户端软件,提供可用的memcached服务器列表。
基于客户端的散列算法,根据“密钥”选择服务器。查询成本几乎为O(1)
服务器软件,将值及其密钥存储到内部哈希表中。
LRU,确定何时丢弃旧数据(如果内存不足),或重用内存。
失效超时机制:
超过有效期:具体是通过“懒惰”机制删除该过期数据,与过期session的删除类似。
过期session删除机制:session是以文件形式保存的硬盘中,如果有的session文件已经过期了,则该session文件不会立即被删除,而是后期其他用户访问网站使用session的同时会有一定的几率触发删除过期的session文件。也就是被访问的时候删除, 另外因为内存大小有限lru也会让一部分缓存失效
memcache的过期数据删除也是懒惰机制实现,如果有一个key过期了,其本身不会马上被删除,而是我们调用get方法获取数据的同时会删除该过期的数据
缓存空间耗尽
如果存储的数据超过memcache最大的存储限制(默认是64M),此时还继续存入数据,则会把最近不常使用的key就删除了。该机制名称为LRU(least recently use)优先删除最近很好使用的key
采用一致性哈希
,一致性哈希是一种模型,它允许在添加或删除服务器时更稳定地分发密钥
压缩大值是一种很好的方式来获得更多的内存降压。压缩可以为某些值节省大量内存,并且还可以减少延迟,因为较小的值可以更快地通过网络获取, 但会带来一定的性能损失,小型网站可以不用压缩数据
协议简单
· 基于libevent的事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能
· 内置内存存储方式
· memcached不互相通信的分布式
协议
memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。
因此,通过telnet也能在memcached上保存数据、取得数据
安装:
yum install memcached
编译安装
wget http://memcached.org/latest 下载最新版本
tar -zxvf memcached-1.x.x.tar.gz 解压源码
cd memcached-1.x.x 进入目录
./configure --prefix=/usr/local/memcached 配置
make && make test 编译
make install 安装
启动
如果是root启动则需要加上-u root
/