一: 前言
许多Web应用都将数据保存到 RDBMS(RDBMS即关系数据库管理系统(Relational Database Management System))中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。Memcached/redis是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、 提高可扩展性。
二: 简介
缓存服务器的作用:
- 加快访问速度 缓解数据库压力
NOSQL名词解释:
- Not Only SQL
- 为弥补关系型数据库的不足,各种各样的NoSQL数据库应运而生
- 以键值对的方式存储数据
- 缓存数据库
NOSQL产品:
- redis
- memcached
- mongoDB
三: Memcached
1.0 特点
- 内置内存存储方式: 重启操作系统会导致全部数据消失
- 简单key/value存储: 服务器不关心数据本身的意义及结构,只要是可序列化数据即可。 存储项由"键、过期时间、可选的标志及数据"四个部分组成
- 不互相通信的分布式: memcached尽管是"分布式"缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。

2.0 支持的平台
- Linux
- FreeBSD
- Solaris (memcached 1.2.5以上版本)
- Mac OS X
- Windows
3.0 服务框架

原理:
- 1.检查用户请求的数据是缓存中是否有存在,如果有存在的话,只需要直接把请求的数据返回,无需查询数据库。
- 2.如果请求的数据在缓存中找不到,这时候再去查询数据库。返回请求数据的同时,把数据存储到缓存中一份。
- 3.保持缓存的"新鲜性",每当数据发生变化的时候(比如,数据有被修改,或被删除的情况下),要同步的更新缓存信息,确保用户不会在缓存取到旧的数据。
4.0 实施
(1) 安装
- 采用yum安装
bash
[root@localhost ~]# yum -y install memcached
(2) 修改配置文件
bash
#vim /etc/sysconfig/memcached
PORT="11211" //同台机编译安装多个memcached,多实例
USER="memcached"
MAXCONN="1024"
CACHESIZE="1500" //单位是 MB
OPTIONS="" //监听的网络地址
(3) 启动
bash
[root@localhost ~]# systemctl start memcached.service
[root@localhost ~]# ps aux | grep memca
memcach+ 1662 0.0 0.0 344096 1668 ? Ssl 13:45 0:00 /usr/bin/memcached -u memcached -p 11211 -m 1500 -c 1024
root 1669 0.0 0.0 112728 968 pts/0 S+ 13:45 0:00 grep --color=auto memca
[root@localhost ~]#
(4) 测试
- 1.使用memcached的原始命令
bash
# 连接
[root@localhost ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'. # 表示已经连接成功了,按下ctrl + ] 可以退出
# set 语法
set <key> <flags> <过期秒数> <数据长度>
<值内容>
# 设置一个变量
set name 1 900 3
pzx
STORED
get name
VALUE name 1 3
pzx
END
- 2.使用各个编程语言的API接口
这里就不过多介绍了