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实例

使用命令  来连接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
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

java memcached client

Memcach什么是MemcacheMemcache集群环境下缓存解决方案Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcache是d

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

MemCache 入门极简教程 - HelloWorld