MemCache 入门极简教程

MemCache 概述

MemCache虽然被称为”分布式缓存”,但是MemCache本身完全不具备分布式的功能

Memcache 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。

MemCache作用流程图

MemCache 安装

Windows 下安装 MemCache

  1. 点击下载 安装包
  2. 解压下载后的文件
解压后的文件内容
  1. 使用管理员身份运行cmd 并切换到上一步解压后的目录下, 运行命令 memcached -d install 来把memcache安装为系统服务, 运行命令 memcached -d start 来启动服务
把memcache安装为系统服务
启动服务
  1. 如果成功,则可以在系统服务上看到 memcache 服务, memcache默认在localhost的11211端口上启动了一个实例
在系统服务上查看 memcache 服务
  1. 在cmd 下输入命令 telnet localhost 11211 来连接 memcache 实例
输入命令 telnet localhost 11211 来连接 memcache 实例

Ubuntu 下安装 MemCache

  1. 使用命令 sudo apt-get install -y memcached 来安装memcache
  2. 安装完成后默认会在 localhost:11211 上启动一个默认实例
  3. 使用命令 ps aux | grep memcached 来查看是否正常运行
使用命令 ps aux | grep memcached 来查看是否正常运行
  1. 使用命令 telnet localhost 11211 来连接memcache实例
使用命令 `telnet localhost 11211` 来连接memcache实例

MemCache 常用命令

add

添加数据,将 value(数据值) 存储在指定的 key(键) 中

命令格式
add key flag expiretime bytes
value
  • key : 给这个值设置一个名字
  • flag : 标志,是一个整数
  • expiretime : 有效期,以秒为单位,0表示没有延迟
  • bytes : 这是一个需要存储在memcached的数据的长度
  • value : 是一个需要存储的数据。数据需要将通过在新的一行后输入
范例
# 添加数据
add name 0 1000 8
kangvcar
STORED
# 如果bytes设置的长度和输入的value长度不符则出现一下错误
add name 0 1000 8
kangvcarrr
CLIENT_ERROR bad data chunk

set

为一个新的或现有的键(key)设置一个值

命令格式
set key flag expiretime bytes
value

参数含义与 add 命令相同

范例
为已存在的key(name)设置一个新的值tom
set name 0 1000 3
tom
STORED

replace

替换已存在的 key(键) 的 value(数据值)

命令格式
replace key flag expiretime bytes
value

参数含义与 add 命令相同

范例
replace name 0 1000 8
memcache
STORED

append

向已存在 key(键) 的 value(数据值) 后面追加数据

命令格式
append key flag expiretime bytes
value

参数含义与 add 命令相同

范例
# 添加数据123到现有键name的后面
append name 0 1000 3
123
STORED
# 查看键name的值
get name
VALUE name 0 11
memcache123
END

prepend

向已存在 key(键) 的 value(数据值) 前面追加数据

命令格式
prepend key flag expiretime bytes
value

参数含义与 add 命令相同

范例
prepend name 0 1000 3
456
STORED
get name
VALUE name 0 14
456memcache123
END

gets / cas

gets 获取带有 CAS 令牌的 value(数据值)
cas 执行一个"检查并设置"的操作

命令格式
gets key
cas key flags exptime bytes unique_cas_token [noreply]
value
  • unique_cas_token : 通过 gets 命令获取的一个唯一的64位值
范例
# 缺少一个参数 unique_cas_token 
cas name 0 1000 3
ERROR
# unique_cas_token 不正确
cas name 0 1000 3 2
sam
NOT_FOUND
# 通过 gets 命令获取唯一令牌 ==> 12
gets name
VALUE name 0 8 12
kangvcar
END
# 使用 cas 命令更新数据
cas name 0 1000 3 12
sam
STORED
# 使用 get 命令查看数据是否更新
get name
VALUE name 0 3
sam
END

get

获取存储在 key(键) 中的 value(数据值)

命令格式

get key

范例
# 获取存储在键name的值
get name
VALUE name 0 14
456memcache123
END

delete

删除已存在的 key(键)

命令格式

delete key

范例
delete age
DELETED

incr / decr

incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作

命令格式

incr key increment_value
decr key increment_value

范例
# 添加数据
add age 0 1000 2
15
STORED
# 对已存在的键(age)数字值进行自增
incr age 5
20
# 获取键age的值
get age
VALUE age 0 2
20
END
# 添加数据
add age 0 1000 2
15
STORED
# 对已存在的键(age)数字值进行自减
incr age 5
10
# 获取键age的值
get age
VALUE age 0 2
10
END

flush_all

清理缓存中的所有数据

命令格式

flush_all [time]

  • time : (可选) 在指定时间后执行清理缓存操作
范例
flush_all
OK

stats / stats slabs / stats sizes / stats items

stats 显示统计信息例如 PID(进程号)、版本号、连接数等
stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等
stats sizes 显示所有item的大小和个数
stats items 显示各个 slab 中 item 的数目和存储时长

命令格式

stats stats slabs stats sizes stats items

范例
stats
STAT pid 19700
STAT uptime 3054540758
STAT time 269361355
STAT version 1.4.4-14-g9c660c0
STAT pointer_size 64
...
stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
...
stats sizes
STAT 96 2
END
stats items
STAT items:1:number 2
STAT items:1:age 3054540037
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
END
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容