Memcached缓存服务介绍及搭建

文章目录

  • 1 Memcached是什么/li>
    • 1.1 Memcached的作用
    • 1.2 常见缓存服务软件对比
    • 1.3 Memcached的特性
  • 2 Memcached安装配置
    • 2.1 memcached命令参数
    • 2.2 管理MySQL和Memcached常见命令对比
    • 2.3 memcached服务存取数据
    • 2.4 停止memcached服务

1 Memcached是什么/h2>
  • Memcached是一个开源的,支持高性能、高并发的分布式缓存系统,由C语言写成,共计2000多行代码。
  • Memcached服务分为服务端和客户端两部分,其中,服务端软件的名字形如Memcached-1.4.24.tar.gz,客户端软件的名字形如Memcache-2.25.tar.gz。
  • Memcached官方网址:http://memcached.org/

1.1 Memcached的作用

  • 传统场景,多数Web应用都将数据保存到关系型数据库中(例如:MySQL),Web服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,关系型数据库的负担就会出现加重、响应缓慢、导致网站打开延迟等问题,影响用户体验。
  • 这时就需要Memcached软件出马了。使用Memcached的主要目的是,通过在自身缓存中缓存关系型数据库的查询结果,减少数据库自身被访问的次数,以提高动态Web应用的速度、提高网站架构的并发能力和可扩展性。
  • Memcached服务的运行原理是通过在事先规划好的系统内存空间中临时缓存数据库的各类数据,以达到减少前端业务服务对数据库的直接高并发访问,从而达到提升大规模网站集群中动态服务的并发访问能力。

1.2 常见缓存服务软件对比

软件 类型 主要作用 缓存的数据
Memcached 纯内存型 常用语缓存网站后端的各类数据,例如数据库中的数据 主要缓存用户重复请求的动态内容,例如:blog的博文、bbs的帖子等内容及用户的Session会话信息
Redis、Memcachedb 持久化存储,即使用内存,也会使用磁盘存储 1、缓存后端数据库的查询数据2、作为关系数据库的重要补充 1、作为缓存:主要缓存用户重复请求的动态内容;例如:blog的博文、bbs的帖子等内容。
Squid、Nginx 内存或内存加磁盘缓存 主要用于缓存web前端的服务内容 主要用于静态数据缓存,例如:图片,附件(压缩包),js、css、html等,此部分功能大多数企业会选择专业的CDN公司,如:网宿、蓝讯

1.3 Memcached的特性

  1. 协议简单
  2. 支持epoll/kqueue异步I/O模型,使用libevent作为事件处理通知机制。
  3. key/value键值数据类型
  4. 全内存缓存,效率高(全部的数据都存放于Memcached服务事先分配好的内存中,无持久化存储的设计,和系统的物理内存一样,当重启系统或Memcached服务时,Memcached内存中的数据会丢失。若希望重启后,数据依然能保留,那么就可以采用redis这样的持久性内存缓存系统)
  5. 当内存中缓存的数据容量达到服务启动时设定的内存值时,就自动使用LRU算法删除过期的缓存数据。也可以在存放数据时对存储的数据设置过期时间,这样过期后数据就自动被清除,Memcached服务本身不会监控数据过期,而是在访问的时候查看key的时间戳判断是否过期。

2 Memcached安装配置

1、查看系统版本

2、安装依赖libevent

3、安装memcached

4、查看指定参数

5、启动实例

6、加入开机自启

编译安装: 由于yum安装的memcached的版本略低,但是不影响使用,如果想安装更高版本的则需要编译安装,命令集合如下:

这里建议用yum或rpm安装,比较简单、易用

2.1 memcached命令参数

参数 作用
-l 指定进程监听的IP地址,可以不设置此参数
-d 以守护进程(daemon)方式运行服务
-u 指定运行Memcached的用户,如果当前用户为root,需要使用此参数指定用户。
-p(小写) 指定Memcached服务监听TCP端口号。默认为11211
-P(大写) 设置保存Memcached的pid文件($$),保存PID到指定文件

内存相关设置

参数 作用
-m 指定Memcached服务可以缓存数据的最大内存。默认为64M
-M Memcached服务内存不够时禁止LRU,如果内存满了会 报错
-n 为key+value+flags分配的最小内存空间,默认48字节
-f chunk size增长因子,默认1.25
-L 启用大内存页,可以降低内存浪费,改进性能

并发连接设置

参数 作用
-c 最大的并发连接数,默认是1024
-t 线程数,默认4.由于memcached采用NIO,所以太多线程作用不大。
-R 每个event最大请求数,默认20
-C 金庸CAS(可以禁止版本计数,减少开销)

调试参数

参数 作用
-v 打印较少的errors/warnings
-vv 打印非常多调试信息和错误输出到控制台,也打印客户端命令及响应
-vvv 打印极多的调试信息和错误输出,打印内部状态转变

其它选项可以通过“memcached -h”命令可以显示所有可用选项。

2.2 管理MySQL和Memcached常见命令对比

MySQL数据库管理 Memcached管理
MySQL的insert语句 Memcached的set命令
MySQL的select与语句 Memcached的get命令
MySQL的delete语句 Memcached的delete命令
MySQL的update语句 Memcached的replace命令

操作memcached的相关命令基本语法

操作memcached的相关命令详细说明

command name 作用
set 无论如何进行写入数据,会覆盖老数据
add 只有对应数据不存在时才添加数据
replace 只有数据存在时进行替换数据
append 往后追加:append datablock
prepend 往前追加:prepend datablock
cas 按版本号更改
其它参数 作用
key 普通字符串,要求小于250个字符,不包含空格和控制字符
flags 客户端用来标识数据格式的数值,如json,xml,压缩等
exptime 存活时间s,0为永远,小于30天,606024*30为秒数,大于30天为unixtime
bytes byte字节数,不包含rn,根据长度截取存/取的字符串,可以是0,即存空串
datablock 文本行,以rn结尾,当然可以包含r或n
status STORED/NOT_STORED/EXISTS/NOT_FOUND ERROR/CLIENT_ERROR/SERVER_ERROR服务端会关闭连接以修复。

2.3 memcached服务存取数据

简单插入数据及查看数据

在查询或删除数据的时候一定要指定键值来操作

nc测试添加查找或删除数据

替换测试

2.4 停止memcached服务

最好启动memcached服务的参数中创建一个pid文件,这样方便停止服务

来源:RSQ博客

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年8月13日
下一篇 2018年8月13日

相关推荐