• Memcached 介绍


    1、Memcached简介

      Memcached是国外社区网站LiveJournal的开发团队开发的高性能分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度,提高可扩展性。

    2、Memcached特点

    • 基于C/S架构,协议简单
    • 基于libevent的事件处理机制
    • 自主内存存储处理
    • 基于客户端的Memcached分布式
    • 自主内存存储方式
    • 数据存储方式:Slab Allocation
    • 数据过期方式:Lazy Expiration + LRU

    说明:

      Slab Allocation

      Slab Allocation 的原理是将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk 的集合),如图

    另外slab allocator 还有重复使用已分配的内存功能。即分配到的内存不会释放,而是重复利用。但这也可能会导致不能有效的使用分配的内存。

      Lazy Expiration
      Memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术成为lazy expiration。Memcached不会在过期监视上浪费CPU时间。
      LRU
      Memcached会优先使用已超时的记录空间,但即使如此,也会发生追加新纪录时空间不足的情况。这时需要使用Least Recently Used(LRU)机制,删除最近最少使用的记录方式来分配空间。
    3、Memcachedz配置
      Memcached服务器在启动时需要对关键的参数进行配置,参数及作用如下:
    1. -p <num> Memcached的TCP监听端口,缺省配置为11211;
    2. -U <num> Memcached的UDP监听端口,缺省配置为11211,为0时表示关闭UDP监听;
    3. -s <file> Memcached监听的UNIX套接字路径;
    4. -a <mask> 访问UNIX套接字的八进制掩码,缺省配置为0700;
    5. -l <addr> 监听的服务器IP地址,默认为所有网卡;
    6. -d 为Memcached服务器启动守护进程;
    7. -r 最大core文件大小;
    8. -u <username> 运行Memcached的用户,如果当前为root的话需要使用此参数指定用户;
    9. -m <num> 分配给Memcached使用的内存数量,单位是MB;
    10. -M 指示Memcached在内存用光的时候返回错误而不是使用LRU算法移除数据记录;
    11. -c <num> 最大并发连数,缺省配置为1024;
    12. -v –vv –vvv 设定服务器端打印的消息的详细程度,其中-v仅打印错误和警告信息,-vv在-v的基础上还会打印客户端的命令和相应,-vvv在-vv的基础上还会打印内存状态转换信息;
    13. -f <factor> 用于设置chunk大小的递增因子;
    14. -n <bytes> 最小的chunk大小,缺省配置为48个字节;
    15. -t <num> Memcached服务器使用的线程数,缺省配置为4个;
    16. -L 尝试使用大内存页;
    17. -R 每个事件的最大请求数,缺省配置为20个;
    18. -C 禁用CAS,CAS模式会带来8个字节的冗余;

    4、Memcached与redis对比

    1. 性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
    2. 内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
    3. Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。

      总之Redis支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。支持数据的备份,即master-slave模式的数据备份。支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

    5、Memcached适用场景

    1. 访问频繁的字典数据
    2. 大量的hot数据(热门数据缓存)
    3. 页面缓存(web站常用)
    4. 搜索的查询条件和结果(热门搜索的内容缓存起来)
    5. 临时处理数据(不需要入库,排重)
  • 相关阅读:
    【图论】第k短路
    【图论】差分约束系统
    【图论】最短路
    【图论】Johnson算法
    HDU5878
    HDU5900
    pow的小事不简单
    math汇总
    Bellman-Ford最短路径
    图的遍历
  • 原文地址:https://www.cnblogs.com/kingsonfu/p/10408238.html
Copyright © 2020-2023  润新知