memcached

高性能的key/value数据缓存,key是url 哈希过的结果,value是key所对应的数据。

软件系统:

结构化数据:RDBMS
半结构化数据:JSON(Documentation)-----> NoSQL
非结构化数据:文件系统(分布式文件系统存储)

如果数据变化频率不大。可以使用memcached。多用于缓存mysql的查询结果。
memcache于其他的缓存不同的地方在于:memcache可以支持数据的修改。
默认同时监听tcp和udp的11211端口。

memcached的特点:

协议简单
基于libevent事件处理
基于内存完成数据存储:LRU
memcached互不通信的集群:分布式

memcache是基于惰性缓存管理的,简单来说就是缓存到期里不会被清理出去,仅仅是将其标记为不可以,当要用到这块内存时将其覆盖掉即可。

memcache属于旁挂式缓存,只是存储,其他都不管
varnish属于代理式缓存,自己本地没有数据,则varnish主机会自行去后端主机取数据

安装memcache
在centos的base源中有memcached包,直接yum安装即可
开启服务后,可以看到memcache在udp和tcp的11211端口都监听了

使用telnet连到memcached上面
stats用来显示当前的统计状态数据
在这里插入图片描述

设定一个缓存 key名为mykey ,标识符为0 ,缓存时长为60s,大小为11个字符
在这里插入图片描述
使用get查看缓存
在这里插入图片描述
使用append往value后面追加值 ,1表示符加的字符长度为1
在这里插入图片描述

使用prepend往value前面附加值
在这里插入图片描述
使用delete删除一个缓存
在这里插入图片描述
使用incr 增加缓存值 ,decr减少缓存的值
在这里插入图片描述
flush_all表示清理所有缓存。

如果php想连向memcache,需要安装php的一些扩展模块
php extensions:memcache ,memcached

内存存储:

slab allocation:整理内存以进行复用,slab allocation

page:分配给slab的用于再次分割成chunk地内存空间
chunk:用于缓存缓存对象地空间
slab class:特定大小的chunk组成的组

我们停掉memcached服务,然后查看chunk大小
在这里插入图片描述
memcached的 -f 选项就是用来指定增长因子(factor),默认为1.25
在这里插入图片描述

使用-f 指定factor大小
在这里插入图片描述

如果想永久有效,在option项加上要指定的内容即可

memcached-too查看stats:
在这里插入图片描述
#:slab class的编号
Item_Size:chunk大小
Max_age:缓存对象的生存时间
Pages:分配给slab的内存页数
count:slab内的记录数
Full?:slab内是否仍有空闲的chunk

清理缓存:
(1)根据缓存对象的ttl进行清理;
(2)根据LRU算法进行清理。
生产环境中根据自己的需求定义清理方法,因为最近最少访问的东西以后也可能会被访问到。

memcached的分布式机制

互不通信的分布式集群:
取模法和以一致性hash计算。

lnmmt:nginx memcached musql tomcat
tomcat容器将自己的会话保存在memcached服务器中
当有两个tomcat服务器,让其使用两个memcached节点,任何一个tomcat节点需要保持会话会先保存在一个memcached节点,然后备份一份到另一个memcached节点上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值