memcache 学习笔记

在网上找了一份比较好的日本人写的memcache教程,花一下午的时间熟悉了一下,记录一下,以后也许会有用。


memcached 是指高性能的分布式缓存服务器,通过缓存数据,减少数据库的访问字数,提高相应速度。

它的几个特点:

1.协议简单

2.基于libevent事件处理

3.内置内存存储方式

4.memcached不相互通信


linux 下memcache安装

安装memcached需要先安装libevent,启动memcached 的方式
 bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d 创建守护进程 
-m 占用内存大小(m) 
-u 用户 
-l 连接ip
-p 端口号
-c 最大连接数
-P pid创建位置
-vv 用very verbose 模式启动,调试信息和错误直接输出到控制台

客户端支持用perl,php,python,c++等多种方式进行连接
可直接telnet ip地址 端口号进行连接
set foo 0 0 3
bar
即可保存key值为 foo, value 为bar 的键值对

查看php memcached 提供的访问接口,直接通过getMulti 检索多个元素
http://jp1.php.net/manual/zh/book.memcached.php

memcached 内存存储
数据保存在内存中,重启即会消失,内存满后将会基于LRU(最近最少使用)算法进行删除, (-M 禁止使用LRU,满后则出错)

slab allocation机制 
按照预先规定的大小,将分配的内存分割为特定长度的块(chunk)
将会根据收到的数据大小,选择适合的slab (特定大小的chunk组)
缺点:无法有效的利用空间

grown factor 调优
在启动时制定参数 -f 2  (default 值为 1.25), 设置不同chunk之间的差异大小

查看memcached 的内部状态 stats

memcached 的删除机制
lazy expiration(惰性) 在get时查看时间戳,检查是否过期 


memcached的分布式算法
1. 根据余数计算分散 
求key的CRC值,除以memcached机器台数进行分配。缺点:添加或者移除机器时,缓存重组代价较大

2.consistent hashing
求memcached的服务器以及key的hash值,映射到圆上,以抑制key的重新分配 (php库中的libketama已经实现该算法)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值