首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Memcache-基本介绍和入门

Memcache-基本介绍和入门

作者头像
运维小路
发布2026-02-03 14:39:48
发布2026-02-03 14:39:48
1400
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB

Redis(本章节)

Etcd

前进介绍Redis的各种特性,其实在内存数据库里面还有一个出现时间比他更早的缓存数据库:Memcached,他发布于2003年,比Redis发布时间更早。

一、Memcached 概述

1.1 什么是 Memcached

Memcached 是一个高性能、分布式的内存对象缓存系统,最初由 Brad Fitzpatrick 为 LiveJournal 开发,主要用于加速动态 Web 应用程序,通过减轻数据库负载来提高性能。

1.2 核心特性

内存存储:所有数据都存储在内存中,读写速度极快(毫秒级),但重启 Memcached 服务或服务器宕机后,数据会全部丢失(非持久化)。

键值对存储:数据以 Key-Value 形式存储,Key 是字符串(最大 250 字节),Value 可以是任意类型的数据(如字符串、数字、序列化的对象,最大 1MB)。

分布式:支持多服务器集群部署,客户端会根据哈希算法自动将数据分发到不同的 Memcached 节点,实现负载均衡。

过期策略:可以为每个 Key 设置过期时间(TTL),到期后自动删除;当内存满时,会按 LRU(最近最少使用) 策略淘汰旧数据。

无数据备份 / 同步:节点之间不共享数据,也不会同步数据,客户端负责数据的分发和查找。

多线程模型:Memcached采用多线程模型,通过精细的锁设计减少竞争,在处理简单键值读写时能充分利用多核CPU,达到极高的吞吐量。

二、与 Redis 的关键区别

特性

Memcached

Redis

数据类型

只支持字符串和整数

字符串、列表、集合、哈希等

持久化

不支持

支持 RDB/AOF

集群模式

客户端分片

原生集群支持

内存管理

Slab Allocator

多种策略

线程模型

多线程

单线程(6.0+多线程IO)

适用场景

简单缓存

缓存、消息队列、数据库等

三、架构与工作原理

3.1 系统架构

代码语言:javascript
复制
客户端
   │
   ├─ 一致性哈希算法选择服务器
   │
服务器集群(节点间不通信)
   ├─ 节点1: Slab Class 1, 2, 3...
   ├─ 节点2: Slab Class 1, 2, 3...
   └─ 节点3: Slab Class 1, 2, 3...

3.2 Slab Allocator 内存管理

代码语言:javascript
复制
内存池
   │
   ├─ Slab Class 1: 96字节 chunks
   ├─ Slab Class 2: 120字节 chunks  
   ├─ Slab Class 3: 152字节 chunks
   └─ ... (预定义的大小等级)

如果只是做缓存,无论是Redis还是Memcache其实区别不大,但是目前主流的应用基本都会选择Redis。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
  • 一、Memcached 概述
    • 1.1 什么是 Memcached
    • 1.2 核心特性
  • 二、与 Redis 的关键区别
  • 三、架构与工作原理
    • 3.1 系统架构
    • 3.2 Slab Allocator 内存管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档