关于memcached:Memcached-1512-移植指南openEuler-2003-LTS-SP1

Memcached 1.5.12 移植指南介绍简要介绍Memcached是LiveJournal旗下Danga Interactive公司以Brad Fitzpatric为首开发的一款高性能分布式内存对象缓存零碎,通过缓存数据库查问后果,缩小数据库拜访次数,来进步动静Web利用的访问速度、进步可扩展性。 Memcached的官网链接:https://memcached.org/ 开发语言:C 一句话形容:分布式内存对象缓存零碎 环境要求硬件要求硬件要求如下表所示。 我的项目阐明服务器TaiShan 200服务器(型号2280)CPU鲲鹏920 5250处理器磁盘分区对磁盘分区无要求操作系统要求操作系统要求如下表所示。 我的项目版本openEuler20.03 LTS SP1 aarch64Kernel4.19查问以后零碎版本信息 cat /etc/os-release 装置openEuler操作系统,请参考https://openeuler.org/zh/docs... 阐明:装置形式倡议抉择“Server with GUI”装置形式。 配置编译环境编译Memcached须要筹备C编译器、GNU、make、automake、libevent和libevent-devel。 装置gcc,已装置则跳过 yum -y install gcc gcc-c++ kernel-devel 装置GNU make和automake、unzip、telnet,已装置则跳过 yum -y install make automake unzip telnet装置libevent和libevent-devel yum -y install libevent libevent-devel获取源码若您的服务器能够拜访网络,执行 wget https://github.com/memcached/... 命令下载源码。否则,请拜访 https://github.com/memcached/... 下载源码并复制到服务器“/home”目录。 编译和装置以本地下载源码并上传到服务器为例阐明编译和安装操作 解压源码包 cd /homeunzip 1.5.12.zip进入“memcached-1.5.12”目录 cd memcached-1.5.12配置Memcached sh autogen.sh./configure --prefix=/opt/memcached可在该步骤指定Memcached装置目录,例如本文指定装置在“/opt/memcached”目录下。 执行编译 make -j60-j60参数充分利用多核CPU劣势,放慢编译速度。 执行装置 make install进入指定的Memcached装置目录“/opt/memcached”,若生成的“bin”目录中呈现“memcached”可执行文件,阐明编译装置实现配置环境变量 a. 将以下命令增加至“/etc/profile”文件中 export PATH=/opt/memcached/bin/:$PATHb. 使环境变量失效 ...

November 7, 2022 · 1 min · jiezi

关于memcached:网络协议之memcached-binary-protocol详解

简介后面讲到了memcached的文本协定,尽管文本协定看起来非常简单,然而对于客户端来说个别还是会抉择效率更高的二进制协定。 二进制协定的实质和文本协定是一样的,只是他们的体现形式不同而已。本文将会具体介绍memcached中二进制协定的实现细节。 memcached的协定包对于memcached的申请包和响应包来说,除了申请头有所区别之外,其余的格局都是一样的。 所以对memcached的申请和响应都能够用同一个包的格局来示意: 后面的24个byte是包头局部,接下来的是命令行的额定数据extra,memcached中的key和value。 下面也提到了,申请包和响应包的区别就是header,上面是申请包头和响应包头的定义: 申请包头: 响应包头: 包头中各个字段的含意如下: Magic: 魔法数字,用来辨别包头是申请包头还是响应包头如果是申请,那么对应的Magic= 0x80,如果是响应,那么对应的Magic= 0x81。 在最后的设计中,Magic应该和协定的版本绝对应的,当版本升级之后,对应的Magic也要进行相应的调整。然而到目前为止,binary协定的magic值还没有变动过。 Opcode: 操作符,也就是对应的命令memcached协定中有上面这些操作符: 其中带星号的示意该命令未定,将来可能会有批改。 以Q结尾的命令,示意这个命令是一个quiet的版本,它会疏忽不感兴趣的返回数据。 Key length: key的长度Status: 申请响应response的状态response的值有上面几种: Extras length: command extras的长度Data type:保留字段data type是一个保留字段,目前只有一个固定的值:0x00。 vbucket id: 命令对应的virtual bucketTotal body length:extra + key + value的总长度Opaque: 申请生成的一个数据,会被一成不变在对应的响应中返回CAS:数据的一个惟一标记memcached命令举例为了更好的了解memcached的二进制协定,咱们以几个罕用的命令为例,来看一下memcached具体的申请和响应流程。 最罕用的就是get申请,用于向服务器端请某个key对应的值。 如果当初客户端要向服务器端get一个key=hello的数据,那么申请的包如下所示: 其中Magic=0x80, Opcode=0x00,Key length=0x0005,Total body=0x00000005,Key="Hello" 如果服务器端存在对应的key的值,那么将会返回如下的数据包: 咱们要留神上面几个跟request值不同的字段: 其中Magic=0x81示意这个是一个response, 因为这是一个response,所以对应的Key length=0x0000。 另外response中蕴含了get申请中并不存在的Extra length和Extras Flags,这里他们的值别离是0x04和0xdeadbeef,示意Extra length是4个bytes,它的值是0xdeadbeef。 那么这个Extras Flags值是哪里来的呢?如果比照之前讲到的text协定,就能够晓得,Extras Flags是在set key value的时候传入的,这个Flags会寄存到服务器端,并在get申请中返回。 最初,response中蕴含了要返回的值"World"。 如果服务器端并没有这个key的值,那么对应的返回包可能是这样的: ...

June 13, 2022 · 1 min · jiezi

关于memcached:网络协议之memcached-text-protocol详解

简介用过缓存零碎的必定都听过memcached的小名,memcached是一个十分优良的分布式内存缓存零碎,利用十分的宽泛。Memcached不仅仅是Web缓存,它更是一个通用的数据缓存,基本上你能够将任何货色存入memcached中,它的分布式设计具备很好的可扩展性和灵活性。 Memcached是一个客户端-服务器端的架构模式。一般来说,在服务器上搭建好Memcached的服务器端,接下来就能够应用Memcached的客户端和服务器端进行替换了。 作为客户端和服务器端的模型,两者的通信必定是有特定的协定的,实用于memcached的协定就叫做memcached protocol。 memcached的协定有两种,别离是text协定和binary协定。本文将会具体解说memcached text protocol的定义。 memcached protocol介绍memcached能够看做是一个简略的key-value的存储系统,客户端通过key来申请服务器端的数据,服务器端通过key的hash值来查找对应的数据,而后返回给客户端。 memcached中的key长度个别不能超过250个字符。key不能蕴含控制字符或空白字符。 为了保障客户端和服务器端的音讯通信顺畅,一般来说都会制订非凡的客户端和服务器端的通信协定,这个协定就叫做protocol。 什么是protocol呢?protocol听起来很浅近很神秘,然而实际上protocol就是约定好的单方交互的音讯格局。 对于memcached来说,memcached同时反对UDP和TCP协定,并且提供了两种协定形式,别离是“文本协定”和“二进制协定”。 其中文本协定是在第一个版本就反对的协定,而二进制协定是在v1.4之后才反对的。 文本协定和二进制协定都反对同样的命令,两者的惟一区别就是二进制协定具备更低的性能提早和更好的可扩展性,而文本协定的有点就是它的可调试性能更好。 memcached text协定蕴含两局部数据,文本行和非结构化数据。前者是来自客户端的命令或来自服务器的响应,后者代表客户端拜访的数据。命令以\r\n结尾,数据能够用\r、\n或\r\n,示意数据局部的完结。 memcached反对的命令memcached反对三种命令,别离是存储命令,读取命令和其余命令。 存储命令memcached中的存储命令总共有6个,别离是“set”、“add”、“replace”、“append”、"prepend" 和 "cas"。 首先,客户端发送如下所示的命令行: command key [flags] [exptime] length [noreply]另外cas命令的格局和其余几个不太一样: cas key [flags] [exptime] length [casunique] [noreply]下面的命令中,command代表的是命令的名字,也就是下面的“set”、“add”、“replace”、“append”和"prepend"。 set示意给key设置一个值。 Add示意如果key不存在的话,就增加。 replace用来替换已知key的value。 append示意将提供的值附加到现有key的value之后,是一个附加操作。 prepend将以后key对应的value增加到提供的值前面。 cas是一个原子操作,只有当casunique匹配的时候,才会设置对应的值。 flags是一个十分乏味的参数,这个参数对于memcached server来说是通明的,这个参数只是用来标记客户端命令的类型,并不会被服务器端辨认。另外flags的长度在不同的memcached版本中也有所不同,在memcached 1.2.0或者依据低级的版本中,flags是一个16-bit的整数。在memcached 1.2.1或以上的版本,flags是一个32-bit的整数。 exptime是过期工夫,0示意不会过期。 length是以byte示意的value的长度,这个值并不蕴含value中的结束符"\r\n"。 casunique是一个64-bit的现有entry的惟一值。 noreply通知服务器端,这是个不须要reply的命令。 在发送完命令行之后,客户端还须要发送数据块: <data block>\r\n举个例子,咱们想要将jack这个值设置到student这个key上,那么对应的命令应该如下所示: set student 0 0 4\r\njack\r\n对应的客户端收到的服务器端的返回可能有这些值: "STORED\r\n",示意存储胜利。"NOT_STORED\r\n" 示意数据因为某些谬误未存储胜利。这通常意味着不满足“add”或“replace”命令的条件。"EXISTS\r\n" 示意要设置的值在上次进行cas操作之后曾经被批改了。"NOT_FOUND\r\n" 示意要设置的值用在cas。读取命令memcached的读取命令有4个,别离是“get”、“gets”、“gat”和“gats,这些命令的格局如下: get <key>*\r\ngets <key>*\r\ngat <exptime> <key>*\r\ngats <exptime> <key>*\r\nmemcached中的读取命令前面不须要跟额定的数据块。 服务器端会依据接管到的key进行查问,每个key返回一条数据,格局如下: ...

May 30, 2022 · 1 min · jiezi

关于memcached:Memcached一键安装入门教程

Memcached一键装置入门教程Memcached 是一个自在开源的、高性能的分布式内存对象缓存零碎,用于动静Web利用以加重数据库负载。 Memcached是一套分布式的快取零碎,与redis类似,当初是Danga Interactive为了LiveJournal所倒退的,但被许多软件(如MediaWiki)所应用。这是一套凋谢源代码软件,以BSD license受权协定公布。Memcached的API应用32位元的循环冗余校验(CRC-32)计算键值后,将材料扩散在不同的机器上。当表格满了当前,接下来新增的材料会以LRU机制替换掉。因为Memcached通常只是当作快取零碎应用,所以应用Memcached的应用程式在写回较慢的零碎时(像是后端的数据库)须要额定的程式码更新Memcached内的材料。Memcached 的守护过程(daemon )是用C写的,然而客户端能够用任何语言来编写,并通过Memcached协定与守护过程通信。然而它并不提供冗余(例如,复制其hashmap条目);当某个服务器S进行运行或解体了,所有寄存在S上的键/值对都将失落。Memcached由Danga Interactive开发,其最新版本公布于2010年,作者为Anatoly Vorobey和Brad Fitzpatrick。用于晋升LiveJournal . com访问速度的。LJ每秒动静页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。上面咱们就来学习一下如何简略疾速的装置部署好Memcached服务。1.找到Memcached 的装置服务可点击试用。 2.装置部署,点击增加节点-抉择版本-填写参数-部署胜利 装置部署过程简略又疾速,具体的装置教程如下: 如何增加节点?https://www.bilibili.com/vide... 如何装置部署Memcached?https://www.bilibili.com/vide...

October 18, 2021 · 1 min · jiezi

关于memcached:如何安装部署Memcached

Memcached 是一个自在开源的、高性能的分布式内存对象缓存零碎,用于动静Web利用以加重数据库负载。 它是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。当初已成为mixi、hatena、Facebook、Vox、LiveJournal等泛滥服务中进步Web利用扩展性的重要因素。 Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据能够是数据库调用、API调用或者是页面渲染的后果。通过在内存中缓存数据和对象来缩小读取数据库的次数,从而进步动静、数据库驱动网站的速度。 基于一个存储键/值对的hashmap。其守护过程(daemon )是用C写的,然而客户端能够用任何语言来编写,并通过Memcached 协定与守护过程通信。 Memcached简洁而弱小。它的简洁设计便于疾速开发,加重开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分风行的开发语言。个别的应用目标是,通过缓存数据库查问后果,缩小数据库拜访次数,以进步动静Web利用的速度、进步可扩展性。 上面咱们就来学习一下如何简略疾速的装置部署好Memcached服务 1.找到Memcached 的装置服务可点击试用。 2.装置部署,点击增加节点-抉择版本-填写参数-部署胜利 装置部署过程简略又疾速,具体的装置教程如下: 如何增加节点?https://www.bilibili.com/vide... 如何装置部署Memcached?https://www.bilibili.com/vide...

August 23, 2021 · 1 min · jiezi

关于memcached:使用-Memcached-实现-Session-共享

应用 Memcached 实现 Session 共享 利用场景当有很多用户的时候,这些用户的登录地位在各个不同的服务器上,因为 session 是生成在服务器上的,当用户互访的时候,有的时候发现自己有权限,有时候发现自己没有权限。因为缓存是集中式的,所有的缓存都在一起,那么就能够把 session 放到 memcached 缓存中。所有服务器都能够在专用的服务器下面来取 session,这样无论用户在哪一台服务器下面登录,都有正确的 session。这样的话,有两个长处,第一,解决了 session 共享的问题。第二,当用户量很大的时候,session 是寄存在服务器下面的,因而就会减少了磁盘的 IO,然而如果放在缓存中,性质则齐全不一样。实现形式设置 php.ini 配置文件vim /etc/php/7.2/fpm/php.ini 将 seesion 存储形式改为 memcached默认 php 是以文件的模式寄存 session 的 1337 session.save_handler = files因而须要批改成 memcached session.save_handler = "memcached"批改 session 寄存地位默认 php 正文掉了 1366 ;session.save_path = "/var/lib/php/sessions"批改为 留神:192.168.174.128 是我虚拟机的 ip 地址,这里须要批改成你 memcached 服务器的 ip 地址# 对于 php 5.6 及以下,须要写成如下session.save_path = "tcp://192.168.174.128:11211"# 对于 php 7 以上能够间接写成session.save_path = "192.168.174.128:11211"如果只想单个 php 文件,取 session 的时候间接取缓存中取的话,能够如下设置vim test.php ...

July 19, 2021 · 1 min · jiezi

关于memcached:手电筒nrcan注册在线

NRcan涵盖产品范畴 涵盖简直所有含可充电电池的产品(多数产品可豁免,如:UPS,医疗类产品,电动汽车) 公布日期和失效日期 公布日期:2018-10-30 失效日期:2019-06-13 能效认证分为测试和注册两局部,具体步骤如下: 1.测试 执行测试方法可二选1 (1)CSAC381.2-17 (2)10C.F.R.AppendixY 2.测试实现后拿报告去网上注册 实现注册后即可打上NRcan标识,产品可进入加拿大市场。 深圳九方检测有限公司

March 10, 2021 · 1 min · jiezi