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

MemCache 安装
Windows 下安装 MemCache
- 点击下载 安装包
- 解压下载后的文件

- 使用管理员身份运行cmd 并切换到上一步解压后的目录下, 运行命令
memcached -d install来把memcache安装为系统服务, 运行命令memcached -d start来启动服务


- 如果成功,则可以在系统服务上看到 memcache 服务, memcache默认在localhost的11211端口上启动了一个实例

- 在cmd 下输入命令
telnet localhost 11211来连接 memcache 实例

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

- 使用命令
telnet localhost 11211来连接memcache实例

MemCache 常用命令
add
添加数据,将 value(数据值) 存储在指定的 key(键) 中
命令格式
1add key flag expiretime bytes 2value
- key : 给这个值设置一个名字
- flag : 标志,是一个整数
- expiretime : 有效期,以秒为单位,0表示没有延迟
- bytes : 这是一个需要存储在memcached的数据的长度
- value : 是一个需要存储的数据。数据需要将通过在新的一行后输入
范例
1# 添加数据 2add name 0 1000 8 3kangvcar 4STORED 5# 如果bytes设置的长度和输入的value长度不符则出现一下错误 6add name 0 1000 8 7kangvcarrr 8CLIENT_ERROR bad data chunk
set
为一个新的或现有的键(key)设置一个值
命令格式
1set key flag expiretime bytes 2value
参数含义与 add 命令相同
范例
1为已存在的key(name)设置一个新的值tom 2set name 0 1000 3 3tom 4STORED
replace
替换已存在的 key(键) 的 value(数据值)
命令格式
1replace key flag expiretime bytes 2value
参数含义与 add 命令相同
范例
1replace name 0 1000 8 2memcache 3STORED
append
向已存在 key(键) 的 value(数据值) 后面追加数据
命令格式
1append key flag expiretime bytes 2value
参数含义与 add 命令相同
范例
1# 添加数据123到现有键name的后面 2append name 0 1000 3 3123 4STORED 5# 查看键name的值 6get name 7VALUE name 0 11 8memcache123 9END
prepend
向已存在 key(键) 的 value(数据值) 前面追加数据
命令格式
1prepend key flag expiretime bytes 2value
参数含义与 add 命令相同
范例
1prepend name 0 1000 3 2456 3STORED 4get name 5VALUE name 0 14 6456memcache123 7END
gets / cas
gets 获取带有 CAS 令牌的 value(数据值) cas 执行一个"检查并设置"的操作
命令格式
1gets key 2 3 4cas key flags exptime bytes unique_cas_token [noreply] 5value
- unique_cas_token : 通过 gets 命令获取的一个唯一的64位值
范例
1# 缺少一个参数 unique_cas_token 2cas name 0 1000 3 3ERROR 4# unique_cas_token 不正确 5cas name 0 1000 3 2 6sam 7NOT_FOUND 8# 通过 gets 命令获取唯一令牌 ==> 12 9gets name 10VALUE name 0 8 12 11kangvcar 12END 13# 使用 cas 命令更新数据 14cas name 0 1000 3 12 15sam 16STORED 17# 使用 get 命令查看数据是否更新 18get name 19VALUE name 0 3 20sam 21END
get
获取存储在 key(键) 中的 value(数据值)
命令格式
get key
范例
1# 获取存储在键name的值 2get name 3VALUE name 0 14 4456memcache123 5END
delete
删除已存在的 key(键)
命令格式
delete key
范例
1delete age 2DELETED
incr / decr
incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作
命令格式
incr key increment_value decr key increment_value
范例
1# 添加数据 2add age 0 1000 2 315 4STORED 5# 对已存在的键(age)数字值进行自增 6incr age 5 720 8# 获取键age的值 9get age 10VALUE age 0 2 1120 12END 13 14 15# 添加数据 16add age 0 1000 2 1715 18STORED 19# 对已存在的键(age)数字值进行自减 20incr age 5 2110 22# 获取键age的值 23get age 24VALUE age 0 2 2510 26END
flush_all
清理缓存中的所有数据
命令格式
flush_all [time]
- time : (可选) 在指定时间后执行清理缓存操作
范例
1flush_all 2OK
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
范例
1stats 2STAT pid 19700 3STAT uptime 3054540758 4STAT time 269361355 5STAT version 1.4.4-14-g9c660c0 6STAT pointer_size 64 7... 8 9 10stats slabs 11STAT 1:chunk_size 96 12STAT 1:chunks_per_page 10922 13STAT 1:total_pages 1 14STAT 1:total_chunks 10922 15... 16 17 18stats sizes 19STAT 96 2 20END 21 22 23stats items 24STAT items:1:number 2 25STAT items:1:age 3054540037 26STAT items:1:evicted 0 27STAT items:1:evicted_nonzero 0 28STAT items:1:evicted_time 0 29STAT items:1:outofmemory 0 30STAT items:1:tailrepairs 0 31END