Memcache介绍及安装部署

2023-10-30

Memcache 官网:http://memcached.org/

1、Memcache 的特性:

(1)可以通过做集群同步的方式,让各 memcache 服务器的数据进行同步,从而实现数据的一致性
(2)memcached使用libevent库,能在 Linux、BSD、Solaris 等操作系统上发挥其高性能。
(3)Memcache 支持最大的内存存储对象为 1M,memcache 最适合报错用户的session实现session 共享。Memcached 存储数据时, Memcached 会去申请 1MB 的内存, 把该块内存称为一个slab, 也称为一个 page。
(4)memcached 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/

2、redis 对比 memcached的优势

(1)支持数据的持久化:重启后可以从磁盘备份文件中恢复至内存继续使用。
(2)支持更多的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
(3)支持数据的备份:可以实现类似于数据的master-slave模式的数据备份,另外也支持使用快照+AOF。
(4)支持更大的 value 数据:memcache 单个key value最大只支持 1MB,而 redis 最大支持 512MB。
(5)支持分布式集群以实现更高并发:Redis 是单线程,memcache是多线程,所以单机情况下没memcache 并发高,但 redis 支持分布式集群以实现更高的并发,单 Redis 实例可以实现数万并发。
(6)支持集群横向扩展:基于redis cluster的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。
(7)都是基于C语言开发。

3、Memcache 的安装与部署
(1)yum安装与部署
# yum install memcached -y
# vim /etc/sysconfig/memcached
PORT="11211" #监听端口
USER="memcached" #启动用户
MAXCONN="1024" #最大连接数
CACHESIZE="1024" #最大使用内存
OPTIONS="" #其他选项
# ps -ef | grep memcached
# ss -ntl(11211)
(2)python 操作 memcache:
#!/usr/bin/env python
#coding:utf-8
#Author:Zhang ShiJie
import memcache
m = memcache.Client(['172.18.200.106:11211'], debug=True)
for i in range(100):
 	m.set("key%d" % i,"v%d" % i)
 	ret = m.get('key%d' % i)
 	print ret
(3)编译安装与启动
# yum install libevent libevent-devel –y
# pwd
/usr/local/src
# tar xvf memcached-1.5.12.tar.gz
# ./configure --prefix=/usr/local/memcache
# make && make install
#启动 memcached
# /usr/local/memcache/bin/memcached -u memcached -p 11211 -m 2048 -c 65536 &
4、memcached 集群部署架构
(1)基于 magent 的部署架构:

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

(2)基于 repcached 的双主数据同步:双机master-master方案
(3)简化后的部署架构:

不再使用 magent,直接通过负载均衡连接memcached

5、部署 repcached

repcached官网:http://repcached.sourceforge.net/

[root@s6 src]# yum install libevent libevent-devel
[root@s6 src]# wget https://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-
1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# tar xvf memcached-1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# cd memcached-1.2.8-repcached-2.2.1
[root@s6 memcached-1.2.8-repcached-2.2.1]# ./configure --prefix=/usr/local/repcached --enablereplication
[root@s6 memcached-1.2.8-repcached-2.2.1]# make 
#报错的解决办法:
[root@s6 memcached-1.2.8-repcached-2.2.1]# vim memcached.c
 56 #ifndef IOV_MAX
 57 #if defined(__FreeBSD__) || defined(__APPLE__)
 58 # define IOV_MAX 1024
 59 #endif
 60 #endif
#改为如下内容:
 55 /* FreeBSD 4.x doesnt have IOV_MAX exposed. */
 56 #ifndef IOV_MAX 
 57 # define IOV_MAX 1024 
 58 #endif
#再次编译安装:
[root@s6 memcached-1.2.8-repcached-2.2.1]# make && make install
#验证是否可执行:
[root@s5 memcached-1.2.8-repcached-2.2.1]# /usr/local/repcached/bin/memcached -h

启动 memcache:
通过 repcached 安装的 memcached 命令启动 memcache 服务并实现 memcache 主备结构,其中-x 为对方即主 memcache 的 IP,-X 为本地启动的用数据同步的端口:

#1、server 1 相关操作:
[root@s5 ~]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 
172.18.200.106 -X 16000
#2、server 2 相关操作:
[root@s6 src]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 
172.18.200.105 -X 16000
#3、连接到 memcache 验证数据:
#(1)shell 命令: 
[root@s6 src]# telnet 172.18.200.106 11211
[root@s6 src]# telnet 172.18.200.105 11211
#(2)python 脚本: 
#!/usr/bin/env python
#coding:utf-8
#Author:Zhang ShiJie
import memcache
m = memcache.Client(['172.18.200.106:11211'], debug=True)
for i in range(100):
	m.set("key%d" % i,"v%d" % i)
	ret = m.get('key%d' % i)
	print ret
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Memcache介绍及安装部署 的相关文章

  • 【计算机毕业设计】二手家电管理平台

    时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 二手家电管理平台当然不能排除在外 二手家电管理平台是在实际应用和软件工程的开发原理之上 运用java语言以及前台VUE框架 后台SpringBoot
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

    目录 一 MongoDB 1 1 简介 a MongoDB 是什么 为什么要使用 MongoDB b 应用场景 c MongoDB 这么强大 是不是可以直接代替 MySQL d MongoDB 中的一些概念 e Docker 下载 1 2
  • Memcached 最佳实践 - 小对象和大量键还是大对象和少量键?

    I use memcached http www danga com memcached 存储复杂计算的整数结果 我有数百个可以缓存的整数对象 我应该将它们缓存在更复杂的对象中的单个键下 还是应该为对象使用数百个不同的键 我正在缓存的对象不
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据
  • memcached数据缓存的设计模式

    可以轻松地将可选的 memcached 缓存封装到现有的数据库查询中 例如 旧 仅限数据库 function getX x get from db return x end 新 带有内存缓存的数据库 function getX x get
  • 为什么memcached不能跨节点同步

    在memcached概述中here http code google com p memcached wiki NewOverview It says Memcached servers are generally unaware of e
  • Magento Memcached 会话

    我目前正在尝试使用以下设置为 Magento 设置生产环境 2 个 Web 服务器 1 个数据库服务器 负载均衡器 因此 负载均衡器将在 Web 服务器之间分配流量 但不会使用粘性会话 为了解决服务器之间共享会话的问题 我选择使用 Memc
  • memcached 中的最大密钥长度和最大值大小是多少?

    我正在使用最新的 memcached 我可以知道最大密钥长度是多少 以及我们可以存储在 memcached 中的值的最大大小吗 如何将memcached与spring集成 有什么想法吗 如果你看一下source https github c
  • 如何开始使用 memcached

    目前我正在做一个项目 需要使用memcached 我研究了很多网络链接 但我不明白如何开始使用 memcached 我已经使用过 mongodb 但希望获得有关 memcached 配置的帮助 我使用的是 Windows 7 操作系统 到目
  • 从本地开发环境访问ElastiCache memcache实例

    有没有办法从本地开发环境访问缓存节点 尽管可以从 EC2 实例访问相同的缓存节点 我正在使用带有 C 的 Enyim memcache 客户端库 我发现很少有文章说这是不可能的 那么最好的方法应该是什么 我是否需要在本地设置内存缓存以进行开
  • 如何返回 Google App Engine 中的所有 memcached 值?

    我想使用我的 python 应用程序引擎内存缓存中的所有数据 我事先不知道钥匙 我如何获取所有数据 唯一读过的功能 http code google com appengine docs python memcache functions
  • 启动 Memcached 时出错:无法监听 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经在我的服务器上运行 Memca
  • Jbuilder Rails 缓存速度较慢

    我尝试将缓存与集合一起使用 使用多种解决方案 问题是每当我尝试缓存时 响应都会变慢 考虑以下集合示例 该集合为其中的每个项目 大约 25 个项目 呈现 2 个部分 json data do json array organizations
  • 使用 MYsql 5.6 内存缓存

    我想我一定错过了一些非常明显的东西 但我想做的是使用 MySQL 5 6 并通过 memcache 返回值 所以我已经设置MYSQL来使用memcache插件 在innodb memcache containers表中设置详细信息 我现在该
  • 从 Django 缓存中删除特定项目?

    我正在使用站点范围的缓存内存缓存 http en wikipedia org wiki Memcached作为后端 当底层数据库对象更改时 我想使缓存中的页面无效 如果页面名称发生更改 那么我将使整个缓存无效 因为它会影响每个页面上的导航
  • 文件系统和 Memcached 哪个缓存更快/更好?

    我认为我还不清楚 从文件或从 memcached 读取内容更快吗 为什么 Memcached 速度更快 但内存有限 HDD 很大 但 I O 速度比内存慢 你应该把memcached 最热门的东西 and 所有其他人 can go 缓存文件
  • 反序列化时出现 Protobuf-net memcache 提供程序 null 类型错误

    我正在使用最新的 protobuf net lib 和 protobuf net memcache 提供程序 我需要序列化自定义类型 MyClass 的列表 ProtoContract public class MyClass ProtoM

随机推荐

  • Python 基础教程——语法

    前言 Python 语言与 Perl C 和 Java 等语言有许多相似之处 但是 也存在一些差异 这次我们将来学习 Python 的基础语法 让你快速学会 Python 编程 第一个 Python 程序 交互式编程 交互式编程不需要创建脚
  • RocketMQ第四节(部署模式、监控面板等)

    1 mq的部署模式 部署方式 RocketMQ 参考官网 单机模式 抗风险能力差 单机挂机没服务 单机硬盘损坏 丢失数据 多机 多master没有Slave副本 多个master采用RAID10磁盘 不会丢失数据 但是某一个master关闭
  • Unity - BRP - PP后效导致 Camera.targetTexture 被换掉,graphicsFormat 不对问题

    文章目录 环境 目的 原因 问题 解决方法 环境 Unity 国际版2020 3 37f1 Pipeline BRP Packages Post Processing 3 0 3 目的 BRP 虽然是 官方放弃更新的 渲染管线 但是有些项目
  • java--基础--17.8--线程--wait方法与sleep方法区别

    java 基础 17 8 线程 wait方法与sleep方法区别 1 介绍 wait 线程间的通讯的问题 需要等待别的线程唤醒 sleep 自己控制线程的运行状态 隔了一段时间自动醒过来 wait 方法释放了锁 sleep 方法没有释放锁
  • 高斯分布(正态分布)详解

    高斯分布 一 概念 二 详解和例子说明 三 判断数据是否服从高斯分布 四 高斯分布实际应用 一 概念 定义 随机变量X服从一个数学期望 mu 方差为 sigma 的高斯分布 又名正态分布 当 0 1时的正
  • c, cs, vala 性能简单测试

    分别用c cs 和 vala 完成同样的运算 Code include
  • matlab sum函数_Matlab: 如何对矩阵的部分行/列求和

    Matlab里的sum函数可以用于求和 先简单来介绍一下sum函数 对一个矩阵A而言 1 sum A all 对矩阵A的所有元素进行求和 返回的是一个标量 2 sum A 1 对矩阵A的每一列进行求和 返回的是一个行向量 3 sum A 2
  • 哈工大2020软件构造Lab4实验报告

    为了鄙视代写 抄袭 伸手党 删除了一些 容易抄袭 的部分 有问题 询问省略部分 欢迎QQ交流 本项目于5 19日实验课完成 该更新的 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院 软件构
  • Python安装教程

    本文主要介绍Windows下Python的安装步骤 1 打开官网www python org 选择Downloads 进入下载界面 2 选择需要下载的Python版本号 点击Download 我选择的Python版本为3 9 6 3 点击D
  • 计算机考研复试操作系统题库

    文章目录 1 什么是操作系统 操作系统的主要功能是 它的主要特征是什么 重点 2 进程与线程的关系以及区别 重点 3 Windows下的内存是如何管理的 简单了解即可 4 中断和轮询的特点 5 什么是临界区 如何解决冲突 什么叫临界资源 6
  • JDBC基础

    1 JDBC概述 在开发中我们使用的是java语言 那么势必要通过java语言操作数据库中的数据 1 1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称 Java DataBase Connectivity
  • 踏浪点神:新手该如何避免频繁重仓交易?

    期货市场中最忌讳的就是让情绪影响交易 但很多人却又很难避免这一点 其中表现最为突出的就是频繁操作了 自信地以为 多劳多得 近乎疯狂地买卖 满脑子的愤怒都急切地想要通过 自杀 的方式得以宣泄 这就是所谓的 交易失控 大多数人在事后冷静下来了都
  • K8S内容分发网络之集群,nginx,负载均衡,防火墙

    目录 第一章 实验架构需求 第二章 实验环境准备 2 1 节点准备 2 2 环境准备 2 3 在master node01 node02上操作安装docker 2 4 所有节点安装kubeadm kubelet和kubectl 2 5 部署
  • 使用dplyr包中的rename函数重命名R语言数据框中的指定列

    使用dplyr包中的rename函数重命名R语言数据框中的指定列 在R语言中 dplyr包提供了一组功能强大且易于使用的函数 用于对数据进行操作和转换 其中 rename函数可以用于重命名数据框中的指定列 本文将介绍如何使用dplyr包中的
  • DVWA(七) - 使用python脚本实现SQL盲注

    SQL Injection Blind sql盲注其实就是sql注入的一种 但是不会根据sql注入的攻击语句返回你想要知道的信息 盲注分为两种 布尔盲注以及时间盲注 布尔盲注 根据你的注入信息返回True和Fales 而返回的True和Fa
  • 【Java入门学习笔记】——第六天 import语句,类的访问控制权限问题,对象数组

    Q 怎样使用import语句 A import语句的作用如下 1 引入类库中的类 2 引入自定义包中的类 需要把程序使用的自定义的包名所形成的目录都放在同一文件夹中 Example01 所有包名形成的目录都要放在Example01中 stu
  • 职业素质学习心得

    名言 1 古之立大事者 不惟有超世之才 必有坚韧不拔之志 2 摒弃侥幸之念 必取百炼成刚 厚积分秒之功 始得一鸣惊人 一 心态决定一切 如果你有一个梦想 维护她 坚守她 实现她 企业招聘看重两个方面 心态 积极 能力 强大 公司待遇衡量标准
  • iOS反编译修改ipa的启动图

    启动图制作脚本点击此获取 步骤一 先创建一个iOS项目 并制作启动图 点击获取教程链接 步骤二 运行上述创建的项目 将会在Products目录得到一个xx app 右键选择 Show in Finder 再右键选择 显示包内容 取出Laun
  • C++11 之列表初始化

    在 c 98 03 中的对象初始化方法有很多种 请看下面的代码 初始化列表 int i arr 3 1 2 3 普通数组 struct A int x struct B int i int j b a 1 2 3 POD 类型即 plain
  • Memcache介绍及安装部署

    Memcache 官网 http memcached org 1 Memcache 的特性 1 可以通过做集群同步的方式 让各 memcache 服务器的数据进行同步 从而实现数据的一致性 2 memcached使用libevent库 能在