Memcached概述
概述 memcached
2023-09-11 14:14:44 时间
Memcached
Memcached是一套分布式的内存对象缓存系统。使用C语言编写。作为数据库的前端cache,缓存数据库查询结果能够减轻数据库负载。
类似一张巨大的hash表。缓存的对象以key-value对的形式存在。
工作流程
- 检查client请求的数据是否在Memcached中存在,若存在直接返回结果
- 若不存在,查询数据库,返回结果并把结果缓存
- 每次改动数据库时要同一时候更新Memcached数据
- 内存空间用完之后使用LRU算法替换缓存
特点
- 基于文本行的协议,能够直接通过telnet管理
- 基于libevent,异步io,高性能。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。
- 对被缓存的数据没有备份,重新启动后对数据库产生较大的压力
- memcached不互相通信的分布式,分布式由client完毕
工作原理
服务守护进程执行后,client连接到服务进程进行操作。眼下支持python,c,php等多种client。服务进程基于事件的单进程单线程实现。
- 内存管理
内存使用slab分配器分配。这样的方案能够降低内存碎片和内存分配释放次数。加快处理速度。服务进程把分配的内存切割成各种固定尺寸的块,依据待缓存数据的大小选择一个最合适大小的块存入。分配的内存不会释放,而是反复利用。
数据大小和块的大小不匹配时会造成内存利用率低下。默认情况下不同大小的块的尺寸以2的增长因子扩大。能够使用'-f'选项调整增长因子。 - 分布式
分布式由client实现。client依据key来选择不同的memcachedserver。
一般使用hash值modserver台数来选择。这样当server台数发生变化时会造成大量key相应的server改变,短时间内数据库server负载很大。一致性hash能够解决问题。- 一致性hash使用普通的hash将每一个key映射到圆环上的一个点。而每一个server节点也映射到圆环上的一个点。
依据key相应的圆环上的点顺时针行进找到的第一个节点即为应保存的位置。
- 对server节点hash时非常难做到server节点在圆环上的均匀分布。能够採用虚拟节点的思想,为每一个server在圆环上分配100~200个点,做到更均匀的hash。
- 当移除或添加一个server节点时,仅仅有此节点相应的key的缓存受到影响。
转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk。原文链接为点我
- 一致性hash使用普通的hash将每一个key映射到圆环上的一个点。而每一个server节点也映射到圆环上的一个点。
相关文章
- HCIE-Security Day1:防火墙概述、实验环境搭建、三种方式管理防火墙
- 打造SharePoint之在线开发神器SPOnlineDevelopTool(一)——概述
- FasterRCNN与RCNN概述
- 干货 | RDBMS 索引类型概述
- Ceph分布式存储实战 1.1 Ceph概述
- Apache Spark机器学习.1.1 Spark概述和技术优势
- 带着问题学 Spring MVC 源码: 一、概述
- 《异构信息网络挖掘: 原理和方法》—— 第2章 基于排名的聚类 2.1 概述
- 《ActionScript 3.0基础教程》——2.2 显示队列概述
- android Graphics(一):概述及基本几何图形绘制
- tcpdump概述
- 为 Python 和数据工程师提供 FPGA 功能的 PYNQ 项目概述
- ArkTS概述【系列1】
- 【Verilog基础】逻辑综合(1)概述与基本知识入门
- java SE基础(Collection接口概述)
- JMS 概述
- HMM的概述(五个基本元素、两个假设、三个解决的问题)
- Java学习路线:day1 Java语言概述