Memcached构建缓存服务器

一: 前言

许多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接口

这里就不过多介绍了

相关推荐
Tt有了t12 小时前
Redis的数据结构
数据结构·数据库·redis
爱和冰阔落12 小时前
【Linux网络】UDP 服务器怎么写?从 socket、bind 到 recvfrom/sendto,手写完整回显服务器
linux·运维·服务器·网络
ss27312 小时前
PostgreSQL咨询锁的使用
数据库·postgresql
ycydynq12 小时前
django 添加信息时,对外键设置条件
数据库·python·django
知已难寻12 小时前
00 · OpenStack 总纲——从云计算到 OpenStack 全景
运维·服务器·云原生·云计算·负载均衡·openstack·perl
小白的码BUG之路12 小时前
K8S -- 集群搭建环境基础
java·服务器·kubernetes
m0_6399069412 小时前
MySQL 索引底层原理|B + 树、聚簇索引、非聚簇索引、覆盖索引
数据库·mysql
全栈陈序员12 小时前
【Python】基础语法入门(二十八)—— 数据库操作入门:用 SQLite 持久化数据
数据库·人工智能·python
2301_7807896612 小时前
SSL 卸载 + WAF + 抗 D:高防 CDN 一站式解决 HTTPS 性能与安全
网络·云原生·ddos
七夜zippoe12 小时前
Agent 网关设计:统一入口、智能路由与负载均衡
运维·ai·log4j·负载均衡·agent·网关设计