memcache

一、什么是memcached

1.1、概述

官网:http://www.memcached.org/

  • 免费和开源,高性能,分布式内存对象缓存系统,旨在通过减轻数据库负载来加速动态Web应用程序
  • Memcached是一个在内存中以键值(key=>value)形式进行存储数据(字符串,对象)
  • Memcached简单而强大。其简单的设计促进了快速部署,易于开发,并解决了大型数据缓存面临的许多问题。其API适用于大多数流行语言

缺点

  • 数据没有永久保存,不能宕机或断电,也不能重启服务,它的信息全部在内存当中。一旦完成上述操作,数据将全部丢失

使用的场景

  • 不重要且还很小很碎的数据,如登录成功后的session信息就可以存放memcached

memcached服务,作为缓存使用,所以一般在项目中读取数据可以使用它,而写入或者修改数据,几乎不用它

1.2、应用图解

  • 减少数据库访问,提高Web速度
  • 实质:不用去请求读取mysql,检索mysql的并发量和读写量

在这里插入图片描述

第一次会读取数据库,进行缓存。还有一种可能就是缓存失效,也会从数据库调取数据。他的作用就是缓存数据

1.3、与mysql进行比较

  • 与mysql一样是一个软件服务,需要启动服务
  • mysql里面的数据,是存储到磁盘里面的,memcached里面的数据是存储到内存里面的
  • mysql使用表结构来存储数据,而memcached里面数据的存储是键值对(key=>value)

1.4、memcached中的一些参数限制

key原则

memcached的key的长不超过250字节,value大小限制为1M(小而碎的数据),默认端口号为11211

二、服务安装与启动

Memcached的安装比较简单,支持Memcached的平台常见的有Linux、Windows、FreeBSD、Mac等

2.1、Linux安装与启动

2.1.1、安装

yum和源代码安装两者选一个安装就可以

  • 源代码安装
//编译工作要提前安装好
yum -y install gcc gcc-c++ automake autoconf make cmake libevent-devel.x86_64
//下载源码
wget http://www.memcached.org/files/memcached-1.6.9.tar.gz
//源码安装memcache
tar zxf memcached.tar.gz
cd memcached
./configure --prefix=/usr/local/memcached
make && make install
  • yum安装
[root@server ~]# yum search memcached | grep ^memcached
memcached-devel.i686 : Files needed for development using memcached protocol
memcached-devel.x86_64 : Files needed for development using memcached protocol
memcached.x86_64 : High Performance, Distributed Memory Object Cache

//装下面两个
[root@server ~]# yum -y install memcached.x86_64  memcached-devel.x86_64

2.1.2、启动

memcached -m 16m -p 11211 -d -u root

-m 启动16兆内存,一个原则,指定的内存大小比物理内存小
-p 默认端口11211
-d 启动守护进程(后台运行)
-u 指定用户
-c 指定连接数(并发数),并非越大越好,根据生产去调
-l 是监听的服务器IP地址 127.0.0.1     0.0.0.0谁都可以访问
注:memcached的默认端口号是11211

启动,查看,关闭

看到有11211端口存在,表示已经启动了memcached服务

在这里插入图片描述

在这里插入图片描述

三、常用命令

3.1、连接服务

3.1.1、telnet

使用telnet来连接memcached服务,因telnet默认没有在windows上安装好,所以需要手动来安装一下

在这里插入图片描述

搜索控制面板,打开卸载程序

在这里插入图片描述

点击右侧的启动或关闭Windows功能

在这里插入图片描述

勾选Telnet Client,点击确认

在这里插入图片描述

安装完成后,一定要把所以的cmd窗口关闭,然后重新打开,就可以使用了

检查是否安装成功

在命令行中输入telnet,如下,使用quit即可

在这里插入图片描述

  • Linux下安装telnet客户端
//搜索
yum search telnet|grep ^telnet
//安装
yum -y install telnet.x86_64

检查是否安装成功,在命令行中输入telnet,出现如下界面,标识成功

在这里插入图片描述

退出quit

3.1.2、使用telnet连接memcached

在Linux中执行telnet命令连接memcached服务

语法

telnet ip port 回车

连接成功按下crtl+]

在这里插入图片描述

telnet+连接服务主机地址+连接通信的端口号,后使用quit退出

3.2、获取数据

//获取存储在key(键)中的value(数据值),如果key不存在,则返回空
get key

在这里插入图片描述

3.3、添加设置数据

//添加add只能添加不存在的key或过期了的key,存在的key添加则报错
add key flags exptime bytes\n
value\n
//设置set key存在则修改,不存在则添加
set key flags exptime bytes\n
value\n

参数说明如下:
key:结构中的key,用于查找缓存值
flags:客户机使用它存储关于键值对的额外信息(0|1|2)
exptime:在缓存中保存键值对的时间长度(以秒为单位,0表示永远)[时间长度(最长30天),时间戳(时间戳可以设置很久的时间)]
bytes:在缓存中存储的字节数
value:存储的值长度和bytes长度设置的一样的

输出信息说明:
STORED:保存成功后输出
ERROR:在保存失败后输出

在这里插入图片描述

set添加数据,key存在则修改,不存在则添加

3.4、自增和自减

  • incr与decr命令用于对已存在的key(键)的数字进行自增或自减操作
  • incr与decr命令操作的数据必须是十进制的32位无符号整数
  • 自增
  • 统计
set key 0 3600 1
value
incr key increment_value(可以想写多少就写多少,且必须是正数)

自增和自减,一般用于统计

注:使用自增或自减第1步,要用set或add创建一个key值,后才可以使用incr或decr

使用场景:用在聊天中的在线人数,文章记录浏览量,后台在线人员

3.5、删除数据

了解一下如果删除已存在的key或清空所有,此操作可能会触发缓存穿透和雪崩

//delete 命令用于删除已存在的key(键)
delete key
//清除所有 尽量不要使用
flush_all

输出信息说明:
DELETED:删除成功
ERROR:语法错误或删除失败
NOT_FOUND:key 不存在

3.6、查看状态

//用于返回统计信息例如PID(进程号)、版本号、连接数等
stats

pid:memcache服务器进程ID
uptime:服务器已运行秒数
curr_connections:当前连接数量
cmd_get:get命令请求次数
cmd_set:set命令请求次数
get_hits:get命令命中次数
get_misses:get命令未命中次数

命中率 get_hits/cmd_get 60%-90%

3.6、查看状态

//用于返回统计信息例如PID(进程号)、版本号、连接数等
stats

pid:memcache服务器进程ID
uptime:服务器已运行秒数
curr_connections:当前连接数量
cmd_get:get命令请求次数
cmd_set:set命令请求次数
get_hits:get命令命中次数
get_misses:get命令未命中次数

命中率 get_hits/cmd_get 60%-90%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值