memcached基础与配置详解

一、memcached介绍

Memcache 官网 http://memcached.org/

(1)memcache本身没有像 redis 所具备的数据持久化功能,比如 RDB 和 AOF 都没有,但是可以通过做集群同步的方式,让各 memcache 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcache
的数据是一样的,即使有任何一台 memcache 发生故障,只要集群种有一台 memcache 可用就不会出现数据丢失,当其他 memcache 重新加入到集群的时候可以自动从有数据的 memcache 当中自动获取
数据并提供服务。

(2)Memcache借助了操作系统的 libevent 工具做高效的读写。 libevent 是个程序库,它将 Linux 的 epoll 、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发
挥高性能。 memcached 使用这个 libevent 库,因此能在 Linux 、 BSD 、 Solaris 等操作系统上发挥其高性能 。

(3)Memcache 支持最大的内存存储对象为 1M 超过 1M 的 数据可以使用客户端压缩或拆分报包放到多个key中,比较大的数据在进行读取的时候需要消耗的时间比较长, memcache 最适合 保存 用户的 session
实现 session 共享 Memcached 存储数据时 , Memcached 会去申请 1MB 的内存 , 把该块内存称为一个slab, 也称为一个 page 。

(4)memcached具有多种语言的客户端开发包,包括: Perl/PHP/JAVA/C/P ython/Ruby/C#/

 安装方式:yum安装和源码编译

  yum安装:

yum  install memcached

 修改配置文件及启动memcached服务

[[email protected]~]#vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="4069"  最大连接数
CACHESIZE="1024" 最大缓存数1G
OPTIONS=""

[[email protected]~]#systemctl start memcached

  查看memcached监听的端口,监听的是11211端口。

memcached程序的常用选项:

-m <num>:Use <num> MB memory max to use for object storage; the default is 64 megabytes.
-c <num>:Use <num> max simultaneous connections; the default is 1024.
-u <username>:以指定的用户身份来运行进程;
-l <ip_addr>:监听的IP地址,默认为本机所有地址;
-p <num>:监听的TCP端口, the default is port 11211.
-U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.
-M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空间可用时为止;
-f <factor>:增长因子;默认是1.25;
-t <threads>:启动的用于响应用户请求的线程数;

memcached集群 部署架构:

基于 magent 的部署架构:

该部署方式 依赖于 magent 实现 高可用, 应用端通过 负载 服务器连接到 magent ,然后 再由 magent代理用户应用请求到 memcached 处理,底层的 memcached 为 双主结构会自动同步数据, 本部署方式
存在 magent 单点问题因此需要两个 magent 做高可用 。

Repcached 实现原理

在master 上可以通过 X 指定 replication port ,在 slave 上通过 x/ X 找到 master 并 connect 上去,事实上,如果同时指定了 x/ X repcached 一定会尝试连接,但如果连接失败,它就会用 X 参数来
自己 listen (成为 master );如果 master 坏掉, slave 侦测到连接断了,它会自动 listen 而成为 master而如果 slave 坏掉, master 也会侦测到连接断,它就会重新 listen 等待新的 slave 加入。
从这方案的技术实现来看,其实它是一个单master单slave的方案,但它的master/slave都是可读写的,
而且可以相互同步,所以从功能上看,也可以认为它是双机master master方案。

简化后 的部署架构:

magent已经有很长 时间 没有更新, 因此 可以不再使用 magent ,直接通过负载均衡连接之 memcached任然 有两台 memcached 做高可用, memcache d 会自动同步数据保持数据一致性, 即使 一台 memcached
故障也 不影响业务正常运行 故障的 memcached 修复上线后再自动从另外一台 同步 数据 即可 保持数据一致性。

二、开始源码编译memcached

环境准备:

A主机:192.168.37.17

B主机:192.168.37.27

两个主机同时进行以下编译方式:

 下载包路径:

wget  https://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz/download

1、安装对应的依赖包

[[email protected]]#yum install libevent libevent-devel -y

2、解压安装包,并切换到此目录下开始编译

[[email protected]]#cd /usr/local/src
[[email protected]]#tar -xvf  memcached-1.2.8-repcached-2.2.1.tar.gz
[[email protected]]#cd memcached-1.2.8-repcached-2.2.1/
[[email protected]]#./configure --prefix=/usr/local/repcached  --enable-replication

3、make与make  install安装,此时就会报错

解决方案:

[[email protected]]#pwd
/usr/local/src/memcached-1.2.8-repcached-2.2.1
[[email protected]]#vim memcached.c

 删除以下几行

 添加下面几行

#ifndef IOV_MAX
#define IOV_MAX 1024
#endif

再执行一次make  && make install 就可以安装成功,此时源码编译完成。

[[email protected]]#make && make install

启动memcached 

启动B主机的机器,其中-x后面跟的IP地址,是监听A主机的IP地址,-X监听的是一个端口号 

[[email protected]]#/usr/local/repcached/bin/memcached  -d -m 2048 -p 11211 -u root -c 2048 -x 192.168.37.17 -X 16000

查看启动状态:

启动A源码编译的主机监听B主机IP地址

[[email protected]]#/usr/local/repcached/bin/memcached  -d -m 2048 -p 11211 -u root -c 2048 -x 192.168.37.27 -X 16000

注意:双方都监听了对方的端口后,指定的-X端口16000就会消失,不会被看到 

此时已经实现memcached高可用功能。

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/struggle-1216/p/12128266.html

时间: 2024-08-30 03:49:56

memcached基础与配置详解的相关文章

struts2基础之配置详解

一.struts2工作原理(网友总结,千遍一律) 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果Act

Docker基础 :网络配置详解

本篇文章将讲述 Docker 的网络功能,包括使用端口映射机制来将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间进行快捷的网络通信,有兴趣的可以了解下. 大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合.Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务.接下来我们将讲述 Docker 的网络功能,包括使用端口映射机制来将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间进行快捷的网络通信. 端口映

Tomcat基础配置详解

Tomcat基础配置详解 组件原理图如下: 任何tomcat实例就是一个server,而一个server内部要想能够解析jsp页面转义编译serlet程序,要靠其引擎来实现 而引擎才是真正意义上执行jsp代码的容器,都是tomcat用类来描述这些组件的 同时,为了接受用户的请求,需要基于connector组件,所谓监听的套接字的程序,能够接手用户的请求,被称为连接器 一个server内部可以完全运行N个引擎,无非就是运行多个虚拟机而已 war包的概念 放在网页目录可以直接访问,而部署的时候可以自

Log4J日志配置详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <

keepalived的配置详解(非常详细)

keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报  分类: 运维学习(25)  转载自:http://blog.csdn.net/u010391029/article/details/48311699 1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简化了一些功能. 2. 协议说

spring声明式事务配置详解

spring声明式事务配置详解 君子不器 2013年06月16日 编程世界 5273次阅读 查看评论 理解Spring的声明式事务管理实现 本节的目的是消除与使用声明式事务管理有关的神秘性.简单点儿总是好的,这份参考文档只是告诉你给你的类加上@Transactional注解,在配置文件中添加('<tx:annotation-driven/>')行,然后期望你理解整个过程是怎么工作的.此节讲述Spring的声明式事务管理内部的工作机制,以帮助你在面对事务相关的问题时不至于误入迷途,回朔到上游平静

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

log4j 配置详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <

SpringBoot配置详解

SpringBoot配置详解 SpringBoot自动化配置 在上一节中我们使用Spring Boot实现了一个简单的RESTful API应用,在实现过程中,除了Maven的pom文件的一些配置,我们没有做任何其他的配置,这就是Spring Boot的自动化配置带来的好处,但是,我们还需要了解如何在Spring Boot中修改这些自动化配置的内容,以应对一些特殊的场景需求. 配置文件—Spring Boot支持YAML配置文件和properties配置文件 Spring Boot的默认配置文件