六、企业级架构缓存篇之memcached

一、memcached概述

1、网站架构优化流程:

LNMP架构中网站应用访问流程:

浏览器 (app) → web 服务器 → 后端服务 (php) → 数据库 (mysql)

访问流程越多,访问速度越慢,出现问题的几率也越大。

网站访问流程优化思路:

① 采用高性能的负载均衡设备;

② 页面静态化;

③ 引入缓存层,如使用Redis或Memcached,来缓存频繁访问的数据;

④ 优化数据库本身。

2、mencached介绍:

许多Web应用都将数据保存到 RDBMS (关系型数据库) 中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。

Memcached 是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度, 提高可扩展性。

Web01/Web02 => memcached(内存) => MyCAT => MySQL01/MySQL02

3安装memcached软件:

克隆CentOS7生成一个memcached服务器,修改IP、UUID、主机名、hosts文件,关闭防火墙、selinux和NetworkManager。

(1) 架构图:

(2) 编译与安装:

tar -zxf memcached-1.5.8.tar.gz
cd memcached-1.5.8
yum install libevent-devel -y
yum -y install gcc gcc-c++ autoconf automake make
./configure --prefix=/usr/local/memcached
make && make install

(3) 查看目录:

cd /usr/local/memcahced

bin:memcached 二进制程序文件

include:memcached 依赖库文件

bin/memcached -h:

-p  设置memcached监听的端口,默认为11211

-d  启动一个守护进程deamon(后台运行)

-m 分配给memcached使用的内存数量,单位是MB,默认为64M

-u  运行memcached的用户

-l   监听服务器IP地址,可以有多个地址

-c  最大运行的并发连接数,默认是1024

-P 设置保存memcached的pid文件

(4) 启动memcached软件:

bin/memcached -uroot -d :以root用户启动memcached,后台运行

4、使用Telnet连接memcached:

(1) telnet概述:

Telnet协议是TCP/IP协议族中的一部分,是Internet远程登录服务的标准协议之一。

Telnet协议允许用户通过网络连接到远程主机,并在该主机上执行命令、访问文件、查看系统状态等。

由于Telnet协议的通信内容并未加密,存在安全风险,因此在实际应用中,Telnet通常被SSH(Secure Shell)所取代,SSH提供了加密的通信通道,更安全地实现了远程访问。

(2) 安装telnet并连接memcached

yum install telnet -y

telnet memcachedd服务器IP memcahced服务端口

回车后看到ERROR说明已经连接上memcached,ERROR是memcached对空命令的报错。

二、memcached常用管理命令

memcached操作的是计算机的内存空间,通过内存来缓存数据,其数据结构是一个key:value的键值对。

1、set命令与get命令:

(1) set 命令:

set key flag exptime bytes

set:set命令,用于设置键值对(存储数据)。

key:键名,必须是唯一的,同名会被覆盖。

flag:数据的标识位,0代表没有特殊标识。

exptime:过期时间,0代表不过期,单位为s。

bytes:存储数据的字节数。

(2) get命令:

get key

get:get命令,用于获取键值对信息(获取数据)。

key:键名,根据提供的键名,搜索指定的数据。

如果 key 不存在,则返回空:

get key1 key2

get 命令可一次获取多个键的值:

2、add命令与replace命令:

(1) add命令:

add key flag exptime bytes

add 命令用于将 value 存储在指定的 key 中,如果 add 的 key 已经存在,则不会更新。(修改键)

set 命令则会直接覆盖旧的 key。

出现NOT_STORED代表系统中已经存在了一个键名为name的键值对。

(2) replace命令:

replace key flag exptime bytes

replace 命令用于替换已存在的 key 的 value。(修改值)

如果 key不存在,则替换失败,响应 NOT_STORED。

3、append命令与prepend命令:

(1) append命令:

append key flag exptime bytes

append 命令用于向已存在 key 的 value 尾部追加数据(尾部追加)。

定义一个key=hw,存储数据hello,然后追加一个world:

(2) prepend命令:

prepend key flag exptime bytes

prepend 命令用于向已存在 key 的 value 前面追加数据(头部追加)。

定义一个name=hema,然后追加一个it到hema的前面:

4、delete命令与flush_all命令:

(1) delete命令:

delete key

delete 命令指定用于删除已存在的key。

(2) ush_all清空命令:

flush_all [time]

time:用于在指定时间后执行清空操作

清空memcached中的所有缓存的数据,生产环境下尽量不要使用。

5、计算命令与stats命令:

(1) 计算命令:

incr key value   =>  在原有值的基础上进行自增操作

decr key value  =>  在原有值的基础上进行自减操作

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值