java memcached教程,memcached经典入门教程

memcached

da8ceb757c3543b7ea1f9629f1c2f001.png

memcached 介绍

Memcache官网:http://memcached.org/

memcache本身没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方

式,让各memcache服务器的数据进行同步,从而实现数据的一致性,即保证各memcache的数据是一样的,即使有任何一台memcache发生故障,只要集群种有一台memcache可用就不会出现数据丢失,当其他memcache重新加入到集群的时候可以自动从有数据的memcache当中自动获取数据并提供服务。

Memcache借助了操作系统的libevent工具做高效的读写。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

Memcache支持最大的内存存储对象为1M,超过1M的数据可以使用客户端压缩或拆分报包放到多个key中,比较

大的数据在进行读取的时候需要消耗的时间比较长,memcache最适合保存用户的session实现session共享,

Memcached存储数据时, Memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page。

memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/

Memcache和redis比较

比较类别

Redis

memcached

支持的数据结构

哈希、列表、集合、有序集合

纯kev-value

持久化支持

高可用支持

redis支持集群功能,可以实现主动复制,读写分离。官方也提供了sentinel集群管理工具,能够实现主从服务监控,故障自动转移,这一切,对于客户端都是透明的,无需程序改动,也无需人工介入

需要二次开发

存储value容量

最大512M

最大1M

内存分配

临时申请空间,可能导致碎片

预分配内存池的方式管理内存,能够省去内存分配时间

虚拟内存使用

有自己的VM机制,理论上能够存储比物理内存更多的数据,当数据超量时,会引发swap,把冷数据刷到磁盘上

所有的数据存储在物理内存里

网络模型

非阻塞IO复用模型,提供一些非KV存储之外的排序,聚合功能,在执行这些功能时,复杂的CPU计算,会阻塞整个IO调度

非阻塞IO复用模型

水平扩展的支持

redis cluster 可以横向扩展

暂无

多线程

Redis支持单线程

Memcached支持多线程,CPU利用方面Memcache优于Redis

过期策略

有专门线程,清除缓存数据

懒淘汰机制:每次往缓存放入数据的时候,都会存一个时间,在读取的时候要和设置的时间做TTL比较来判断是否过期

单机QPS

约10W

约60W

源代码可读性

代码清爽简洁

能是考虑了太多的扩展性,多系统的兼容性,代码不清爽

适用场景

复杂数据结构、有持久化、高可用需求、value存储内容较大

纯KV,数据量非常大,并发量非常大的业务

本文链接:http://www.yunweipai.com/35551.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值