memcached基本概念

来源:互联网 发布:js中等于符号 编辑:程序博客网 时间:2024/06/06 15:31
1.什么是memcache
1.高性能 的 分布式内存对象 缓存系统
2.用于减轻数据库的负担,因为读取数据的时候,内存响应的速度远比到数据库中查找要快。
所以,memcache可以通过在内存中缓存数据和对象来减少对数据库读取的次数,从而提高网站的速度
3.memory内存 + cached储藏 
4.属于老牌的nosql应用。
not + only + sql = nosql 不仅仅是关系型数据库
关系型数据库的特点是 ....
nosql数据库的特点是 key-value 键值对储存。 有 memcache redis mongodb


2.使用方法
1.cmd窗口中查看命令 -help 。memcache.exe -help


2.win下找到相应文件夹(d:/wamp/memcache/memcache.exe)
1.启动memcached
memcache.exe -m 64 -p 11211 -vvv
-m 64 分配缓存内存64M
-p 11211 分配端口号11211
-vvv 打印全部信息
2.连接memcache
memcached客户端和服务器通信是文本协议,不是通过二进制。所以,可以使用telnet窗口连接(类似于http协议)
//打开telnet窗口
telnet 127.0.0.1 11211
//打开回显功能
ctrl+]



3.操作memcache
方法有 
add add key 0 0 5添加,键为key,flag为0,有效期为0, 长度为5 。键是唯一的,不能重复
get get key获取key的内容
set set key 1 20 2  设置 键为key, flag为1, 有限期为20秒, 长度为2
delete delete key删除key
replace replace key 1 20 2和set差不多,是替换的意思。如果key不存在不能替换
incr/decr incr key 2键对应的值自增长。自增长 非常有用
stats stats统计缓存中的数据。可以用来计算缓存命中率
flush_all flush_all 冲刷缓存。把内容销掉,由于有惰性机制的存在,暂时可以看见。很危险的动作。


1.通过自增长实现秒杀功能
自动增长 incr  //incr dong 2   显示7  
自动减少 decr  //decr dong 3  显示2
这两个命令非常有用。其中 incr、decr操作 值是32位无符号来进行+-操作的, 也就是最小为0 。值在[0 --- 2^32-1]
应用场景
秒杀功能(一个人下单,要牵涉到数据库读取,更改库存以及事务要求。对于传统的数据库来说,数据库压力很大)
可以利用memcached的 incr/decr 功能,在内存中储存count 库存量,秒杀1000台
抢单主要在内存中操作,速度非常快。
抢到count<1000 的人,得到一个号码,然后拿着号码到另一个页面支付
利用memcache的缓存功能,可以减少mysql的瞬间压力
2.详细参数解释
add key flag expire length 
value 


flag: 标志,比如 1表示数组 2表示对象 3表示json 等等.防止数组序列化之后,反序列化成对象之类的
expire 缓存的生命周期。有三种用法
1.在点击的时候之后几秒后过期 
add www 1 10 5 //表示10秒之后缓存失效
2.在具体的某个时间之后失效(做团购的时候)
set www 1 1478020312 5  //1478020302 + 10 当前时间戳
当然可以设置某个时候之间失效(某个时间的时间戳用 mktime() 获取)
3.设为0 表示不会自动失效。。并不是永久有效
编译memcatched的时候。默认长度是30天。也有可能数据被挤出去了
3.参数的显示
1. key的长度 最大为 250 字节 (二进制协议支持65535个字节)
2. value的长度,最大为 1M, 一般是存文本,所以也是足够了
3. 内存的限制,32位下最大为2G,64位很大很大, 一般都是64位的
如果有30G数据需要缓存。一般不会单实例装 30G。鸡蛋不能装在一个篮子里
建议。开启多个实例(可以在不同机器或者一台机器的多个端口进行)
LINUX下开启memcached
./bin/memcached -m 64 -p 11211 -u nobody -d
其中 端口号11211 可以是 11212  11213 这样可以开启多个端口进行缓存
# ps aux|grep memcached  //可以查看跑了几个进程

















0 0
原创粉丝点击