Memcached他来了你走吧

本文介绍了Memcached,一个高性能、分布式内存缓存系统,包括其原理、内存管理、场景应用(如session缓存、频繁访问文件等)、分布式算法以及Java实现(XMemcached),以及如何在SpringBoot中集成。
摘要由CSDN通过智能技术生成

哈哈哈 什么鬼的标题

基础的传送门 Memcached 教程 | 菜鸟教程 拿走不送 好好学习

自由、源码开放、高性能、分布式的内存对象缓存系统

  • 最大30天过期时间 REALTIME_MAXDELTA  最大键长250字节 KEY_MAX_LENGTH
  • 应对多个连接pthread 非阻塞网络IO 无阻塞的socket通信 libevent库
  • 存储键值对的HashMap key默认最大不能超过128字节 value默认大小是1M
  • 最大同时连接数是200 最大软连接数是1024 settings.maxconns

优点

    Memcached 利用多核优势,单实例吞吐量极高,可以达到几十万 QPS(取决于 key/value 的字节大小以及服务器硬件性能,日常环境中 QPS 高峰大约在 4-6w 左右)。适用于最大程度扛量

原理

守护程序,C/S模式 单进程 单线程 异步IO 基于事件:libevent事件通知

多个server协同工作但是没有联系,只对自己的数据负责 key进行hash定位server

LRU+到期失效 自动删除不使用的缓存,获取key时查看记录时间戳 key/value是否过期

    删除对象做标记,指针放入slot回收槽,下次分配直接使用

内存算法:slab allocation,分配内存分割成特定大小内存块 尺寸相同的内存块分成组 

     动态内存分配,slab存放空闲chunk列表 【分布式缓存】一文详解 Memcached-CSDN博客

     数据存放 键值大小 匹配slab大小 就近slab存放 :浪费空间   产生内存碎片   降低操作系统对内存的管理效率,注重value设计

    预先统计存入数据大小,同一业务的数据存入服务器

    启动指定-f 默认值 1.25 指定大小间隔

    规划 slab 大小 = chunk 大小 * n 整数倍

场景

       1、可以缓存 session 数据 、临时数据以减少对他们的数据库写操作

        2、缓存一些很小但是被频繁访问的文件

        3、经常被读取且实时性要求不强可等到自动过期的数据

        4、变化频繁,查询频繁,但是不需要入库的场景读多写少的场景中用于页面缓存

分布式算法

  • 余数算法,键的整数散列值,再除以服务器台数,据余数确定存取服务器,简单,高效,在memcached服务器增加或减少时,几乎所有的缓存都会失效
  • 散列算法:算出memcached服务器的散列值,将其分布到0到2^32次方的上,用同样的方法算出存储数据的键的散列值并映射至圆上,从数据映射到的位置开始顺时针查找,将数据保存到查找到的第一个服务器上,如超过2^32次方,找不到服务器,数据保存到第一台服务器上。如添加了一台,在圆上增加服务器的逆时针方向的第一台服务器上的键会受到影响

java实现

   XMemcached 客户端基于 NIO 实现,减少线程创建和切换的开销

springBoot 集成 memcached_springboot memcached-CSDN博客

MemCache详细解读_memcached根据value获取key-CSDN博客

【分布式缓存】一文详解 Memcached-CSDN博客

https://www.cnblogs.com/davidwang456/p/5064145.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值