Memcached学习笔记
1、memcached原理
memcached是一种缓存技术,可以将数据放入内存,主要目的是提速。
memcached服务维护了一张内存表(hashtable) key value,存放更新频繁且丢了也无所谓的数据
memcached 的key一般是字符串,不能重复 ;value可以放入(字符串、数值、数组、对象、布尔、二进制数据【图片/视频,用的比较少】,null)
2、memcached命令
安装memcached.exe -d -install
起服务memcached.exe -d start 或者用memcached.exe -p 11211 不能关闭控制台,关闭后服务就停了
端口号范围(0-65535,一般0-1024都被占用)
Apache 80 mysql3306 ftp21 ssh 22 oracle1521
停服务memcached.exe -d end
查看是否成功 netstat -an 查看是否有11211端口监听
netstat -anb 查看具体是哪个程序在监听,这个指令还可以看到,那些用户连接到我们的服务器
netstat -a 查看具体主机
memcached telnet增删改查
telnet 127.0.0.1 11211
add key 名 0 存放时间(秒) 数据大小(字符)
举例add key1 0 30 5
获取get key1
修改
set key名 0 存放时间 数据大小
replace key名 0 存放时间 数据大小
delete key名
flush_all
stats查看命中率 cmd_hits/cmd_get
Java中关于memcached常用命令的详解
http://www.php.cn/java-article-380219.html
3、memcached其他细节
mem服务的数据不是同步的,数据是分布的
把什么数据放入到哪个memcached是由客户端的mem对象决定
当执行addServer的时候,并不是立即去连接mem服务,而是通过计算,hash后才决定连接哪个mem服务,因此当大量加入服务器到连接池时,并没有多余的开销。
memcache的生命周期,从数据放入mem开始计时,直到时间到了,就销毁,如果时间为0,则表示不过期。
memcache的数据被销毁:时间到,重启memcached服务,重启机器,delete,flush
将session数据放入到memcached,session一般是放到文件中,现在流行把session放到memcached中。
将session存入memcache是以sessionid为key值,具体值存放成序列化格式:name:s:6:"suchao";city:6:"hangzhou"
http://www.php.cn/code/6921.html
4、memcached 和session比较
memcached主要的目的是提速,因此它是一种无状态的数据,即数据不和用户绑定,只要知道键值即可取到。
session数据是和用户绑定的,因此是一种有状态数据
5、memcached安全问题
如何使用memcached服务才是安全的。memcached本身没有安全机制,要把memcached放到内网。
在windows下通过启用防火墙来保护memcached,在linux iptables命令
6、什么数据放在Memcached中?
变化频繁,具有不稳定性的数据,不需要实时入库(比如用户在线状态、在线人数......)
门户网站的新闻等
用户名密码金额等重要的数据不能放到memcached中。
7、与Redis比较
Redis(Key/value型数据库),将数据保存在内存中,并定时像硬盘中同步。