jsp电商网站开发流程图,网站对联广告素材,网站建设咨询费用,广东省建设厅官方网站电话memcached 有一个很大的缺陷不能持久化#xff0c;不能存储在硬盘里
1.NoSQL介绍
NoSQL是对 Not Only SQL、非传统关系型数据库的统称。
NoSQL一词诞生于1998年#xff0c;2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。
随着互联网时代的到…memcached 有一个很大的缺陷不能持久化不能存储在硬盘里
1.NoSQL介绍
NoSQL是对 Not Only SQL、非传统关系型数据库的统称。
NoSQL一词诞生于1998年2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。
随着互联网时代的到来数据爆发式增长数据库技术发展日新月异要适应新的业务需求。
而随着移动互联网、物联网的到来大数据的技术中NoSQL也同样重要。
数据库排名DB-Engines Ranking - popularity ranking of database management systems NoSQL 分类
nosql表示的是不仅仅是数据库的意思
Key-value Store k/v数据库性能好 O(1) , 如: redis、memcachedDocument Store 文档数据库mongodb、CouchDBColumn Store 列存数据库Column-Oriented DBHBase、Cassandra大数据领域应用广泛Graph DB 图数据库Neo4jTime Series 时序数据库InfluxDB、Prometheus
2.Memcached
Memcached 只支持能序列化的数据类型不支持持久化基于Key-Value的内存缓存系统memcached 虽然没有像redis所具备的数据持久化功能比如RDB和AOF都没有
但memcached可以通过做集群同步的方式实现各服务器的数据同步集群中只要有一台还活着数据就不会丢失并且当有新服务器加入时会自动同步数据★★★
Memcached 借助了操作系统的 libevent 工具做高效的读写。libevent是个程序库它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加也能发挥高性能。memcached使用这个libevent库因此能在Linux、BSD、Solaris等操作系统上发挥其高性能
Memcached 支持最大的内存存储对象为1M超过1M的数据可以使用客户端压缩或拆分报包放到多个key中比较大的数据在进行读取的时候需要消耗的时间比较长memcached 最适合保存用户的session实现session共享
Memcached存储数据时, Memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page
Memcached 支持多种开发语言包括JAVA,C,Python,PHP,C#,Ruby,Perl等
Memcached 官网memcached - a distributed memory object caching system
3.Memcached 和 Redis 比较
比较类别RedisMemcached支持的数据结构哈希、列表、集合、有序集合纯kev-value持久化支持有无高可用支持redis支持集群功能可以实现主从复制读写分离官方也提供了sentinel集群管理工具能够实现主从服务监控故障自动转移这一切对于客户端都是透明的无需程序改动也无需人工介入需要二次开发存储value容量最大512M最大1M内存分配临时申请空间可能导致碎片预分配内存池的方式管理内存能够省去内存分配时间虚拟内存使用有自己的VM机制理论上能够存储比物理内存更多的数据当数据超量时会引发swap把冷数据刷到磁盘上所有的数据存储在物理内存里网络类型非阻塞IO复用模型,提供一些非KV存储之外的排序聚合功能在执行这些功能时复杂的CPU计算会阻塞整个IO调度非阻塞IO复用模型水平扩展支持redis cluster 可以横向扩展暂无多线程Redis6.0之前是只支持单线程Memcached支持多线程,CPU利用方面Memcache优于redis 单机QPS 约10W (QPS每秒查询率指服务器单位时间处理多少流量) 约60W源代码可读性代码清爽简洁可能是考虑了太多的扩展性多系统的兼容性代码不清爽适用场景复杂数据结构、有持久化、高可用需求、value存储内容较大纯KV数据量非常大并发量非常大的业务
4.Memcached 工作机制
4.1 内存分配机制
应用程序运行需要使用内存存储数据但对于一个缓存系统来说申请内存、释放内存将十分频繁非常容易导致存在大量内存碎片最后导致无连续可用内存可用。
tomcat通过分代memcached通过分格
Memcached采用了Slab Allocator机制来分配、管理内存。
- Page分配给Slab的内存空间默认为1MB分配后就得到一个Slab。 Slab分配之后内存按照固定字节大小等分成chunk。
- Chunk用于缓存记录k/v值的内存空间。 Memcached会根据数据大小选择存到哪一个chunk中假设chunk有128bytes、64bytes等多种数据只有100bytes存储在128bytes中存在少许浪费。
- Chunk最大就是Page的大小(1Mb)即一个Page中就一个Chunk
- Slab ClassSlab按照Chunk的大小分组就组成不同的Slab Class, 第一个Chunk大小为 96B的Slab为Class1,Chunk 120B为Class 2,如果有100bytes要存那么Memcached会选择下图中Slab Class 2 存储因为它是120bytes的Chunk。Slab之间的差异可以使用Growth Factor 控制默认1.25。 查看Slab Class
#-f, --slab-growth-factornum chunk size growth factor (default: 1.25)
#-f 指定增长因子-f 2 增长2倍默认为1.25
memcached -u memcached -f 2 -vv
4.2 懒过期 Lazy Expiration
memcached不会监视数据是否过期而是在取数据时才看是否过期如果过期会把数据有效期限标识为0但并不清除该数据。在以后可以覆盖该位置存储其它数据
4.3 LRU 最近最少使用算法
当内存不足时memcached会使用LRULeast Recently Used机制来查找可用空间分配给新记录使用
4.4 集群
Memcached集群称为基于客户端的分布式集群即由客户端实现集群功能即Memcached本身不支持集群
Memcached集群内部并不互相通信一切都需要客户端连接到Memcached服务器后自行组织这些节点并决定数据存储的节点。
5.安装和启动
官方安装说明https://github.com/memcached/memcached/wiki/Install
5.1 yum 安装
查看memcached包的基本信息
[roottest1 ~]# yum info memcached
BDB2053 Freeing read locks for locker 0xe68: 6254/139875865057088
BDB2053 Freeing read locks for locker 0xe6a: 6254/139875865057088
BDB2053 Freeing read locks for locker 0xe6b: 6254/139875865057088
BDB2053 Freeing read locks for locker 0xe6c: 6254/139875865057088
BDB2053 Freeing read locks for locker 0xe6d: 6254/139875865057088
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* extras: mirrors.nju.edu.cn* updates: mirrors.nju.edu.cn
Available Packages
Name : memcached
Arch : x86_64
Version : 1.4.15
Release : 10.el7_3.1
Size : 85 k
Repo : base/7/x86_64
Summary : High Performance, Distributed Memory Object Cache
URL : http://www.memcached.org/
License : BSD
Description : memcached is a high-performance, distributed memory: object caching system, generic in nature, but intended: for use in speeding up dynamic web applications by: alleviating database load.安装
[roottest1 ~]# yum -y install memcached
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* extras: mirrors.nju.edu.cn* updates: mirrors.nju.edu.cn
Resolving Dependencies
-- Running transaction check
--- Package memcached.x86_64 0:1.4.15-10.el7_3.1 will be installed
-- Finished Dependency ResolutionDependencies ResolvedPackage Arch Version RepositorySizeInstalling:memcached x86_64 1.4.15-10.el7_3.1 base 85 kTransaction SummaryInstall 1 PackageTotal download size: 85 k
Installed size: 176 k
Downloading packages:
memcached-1.4.15-10.el7_3.1.x86_64.rpm | 85 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : memcached-1.4.15-10.el7_3.1.x86_64 1/1 Verifying : memcached-1.4.15-10.el7_3.1.x86_64 1/1 Installed:memcached.x86_64 0:1.4.15-10.el7_3.1 Complete!
[roottest1 ~]# vim /etc/sysconfig/memcached
[roottest1 ~]# cat /etc/sysconfig/memcached
PORT11211
USERmemcached
MAXCONN1024
CACHESIZE64
OPTIONS配置文件
[roottest1 ~]# cat /etc/sysconfig/memcached
PORT11211 #监听端口
USERmemcached #启动用户
MAXCONN1024 #最大连接数
CACHESIZE64 #最大使用内存
OPTIONS #其他选项例
OPTIONSlisten 127.0.0.1 #只监听本机
OPTIONSlisten #监听所有#用户id
[roottest1 ~]# id memcached
uid990(memcached) gid985(memcached) groups985(memcached)[roottest1 ~]# rpm -ql memcached
/etc/sysconfig/memcached
/usr/bin/memcached
/usr/bin/memcached-tool
/usr/lib/systemd/system/memcached.service
/usr/share/doc/memcached-1.4.15
/usr/share/doc/memcached-1.4.15/AUTHORS
/usr/share/doc/memcached-1.4.15/CONTRIBUTORS
/usr/share/doc/memcached-1.4.15/COPYING
/usr/share/doc/memcached-1.4.15/ChangeLog
/usr/share/doc/memcached-1.4.15/NEWS
/usr/share/doc/memcached-1.4.15/README.md
/usr/share/doc/memcached-1.4.15/protocol.txt
/usr/share/doc/memcached-1.4.15/readme.txt
/usr/share/doc/memcached-1.4.15/threads.txt
/usr/share/man/man1/memcached-tool.1.gz
/usr/share/man/man1/memcached.1.gz监听
#开启服务
[roottest1 ~]# systemctl status memcached.service#看一下11211使用的什么协议
[roottest1 ~]# ss -natul
tcp LISTEN 0 128 :::11211 :::*#关闭memcached机的防火墙和安全机制
[roottest1 opt]# systemctl stop firewalld
[roottest1 opt]# setenforce 0#在客户机上安装telnet
[roottest2 ~]# yum -y install telnet
#
[roottest2 opt]# telnet 192.168.67.11 11211
Trying 192.168.67.11...
Connected to 192.168.67.11.
Escape character is ^].#写一个set命令玩玩
#set name 描述 超时时间 字节 #0为永不超时
set name 1 10 4
fang
STORED
get name
VALUE name 1 4
fang
END
#quit退出telnet
quit
Connection closed by foreign host.5.2 编译安装
#安装环境
[roottest2 ~]# yum -y install gcc libevent-devel
#下载安装包
[roottest2 ~]# cd /opt/
[roottest2 opt]# wget http://memcached.org/files/memcached-1.6.6.tar.gz
--2024-03-13 22:57:13-- http://memcached.org/files/memcached-1.6.6.tar.gz
Resolving memcached.org (memcached.org)... 107.170.231.145
Connecting to memcached.org (memcached.org)|107.170.231.145|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 543661 (531K) [application/octet-stream]
Saving to: ‘memcached-1.6.6.tar.gz’100%[] 543,661 584KB/s in 0.9s 2024-03-13 22:57:20 (584 KB/s) - ‘memcached-1.6.6.tar.gz’ saved [543661/543661][roottest2 opt]# ls
memcached-1.6.6.tar.gz rh
#解压
[roottest2 opt]# tar xf memcached-1.6.6.tar.gz
[roottest2 opt]# ls
memcached-1.6.6 memcached-1.6.6.tar.gz rh[roottest2 memcached-1.6.6]# cd memcached-1.6.6/
[roottest2 memcached-1.6.6]# ./configure --prefix/apps/memcached
[roottest2 memcached-1.6.6]# make make install#做个软连接或者使用环境变量二选一
1.
[roottest2 opt]# ln -s /apps/memcached/bin/memcached /usr/bin/2.
[roottest2 opt]# echo PATH/apps/memcached/bin:$PATH /etc/profile.d/memcached.sh
[roottest2 opt]# . /etc/profile.d/memcached.sh#创建一个普通用户-r表示随机生成一个用户
[roottest2 opt]# useradd -r -s /sbin/nologin memcached#重定向一个memcached文件
[roottest2 opt]# cat /etc/sysconfig/memcached eofPORT11211USERmemcachedMAXCONN1024CACHESIZE64OPTIONSeof
[roottest2 opt]# cat /etc/sysconfig/memcached
PORT11211
USERmemcached
MAXCONN1024
CACHESIZE64
OPTIONS#准备service文件因为bash环境中没有下面这些变量${USER}有识别不了所以变量前要加\
[roottest2 opt]# cat /lib/systemd/system/memcached.service eof[Unit]Descriptionmemcached daemonBeforehttpd.serviceAfternetwork.target[Service]EnvironmentFile/etc/sysconfig/memcachedExecStart/apps/memcached/bin/memcached -p \${PORT} -u \${USER} -m \${CACHESIZE} -c \${MAXCONN} \$OPTIONS[Install]WantedBymulti-user.targeteof[roottest2 opt]# systemctl daemon-reload
[roottest2 opt]#
[roottest2 opt]# systemctl enable --now memcached.service
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[roottest2 opt]#
[roottest2 opt]# memcached --version
memcached 1.6.6
[roottest2 opt]#
[roottest2 opt]# systemctl start memcached
[roottest2 opt]# systemctl status memcached增长因子的改变
#默认前台执行默认从96开始默认1.25倍-f 2 表示指定两倍
[roottest1 ~]# memcached -u memcached -m 1024 -c 65536 -f 2 -vv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 192 perslab 5461
slab class 3: chunk size 384 perslab 2730
slab class 4: chunk size 768 perslab 1365
slab class 5: chunk size 1536 perslab 682
slab class 6: chunk size 3072 perslab 341
slab class 7: chunk size 6144 perslab 170
slab class 8: chunk size 12288 perslab 85
slab class 9: chunk size 24576 perslab 42
slab class 10: chunk size 49152 perslab 21
slab class 11: chunk size 98304 perslab 10
slab class 12: chunk size 196608 perslab 5
slab class 13: chunk size 393216 perslab 2
slab class 14: chunk size 1048576 perslab 1
failed to listen on TCP port 11211: Address already in use#以台方式执行
[roottest1 ~]# memcached -u memcached -m 1024 -c 65536 -d
[roottest1 ~]# #注意要确保自己内存够用
[roottest1 ~]# free -htotal used free shared buff/cache available
Mem: 1.8G 668M 150M 9M 1.0G 913M
Swap: 2.0G 16K 2.0G#清空缓存命令
[roottest1 ~]# echo 3 /proc/sys/vm/drop_caches
[roottest1 ~]# free -htotal used free shared buff/cache available
Mem: 1.8G 614M 996M 9M 212M 1.0G
Swap: 2.0G 16K 2.0G5.3 memcached 启动程序说明
修改memcached 运行参数可以使用下面的选项修改/etc/sysconfig/memcached文件
memcached 常见选项 -u username memcached运行的用户身份必须普通用户
-p 绑定的端口默认11211
-m num 最大内存单位MB默认64MB
-c num 最大连接数缺省1024
-d 守护进程方式运行
-f 增长因子Growth Factor默认1.25
-v 详细信息-vv能看到详细信息
-M 使用内存直到耗尽不许LRU
-U 设置UDP监听端口0表示禁用UDP
6.使用 memcached
6.1 memcached 开发库和工具
与memcached通信的不同语言的连接器。libmemcached提供了C库和命令行工具。
安装工具包
[roottest1 ~]# yum -y install libmemcachedmemping 检测连接服务器
[roottest1 ~]# memping --help
memping v1.0
...省略[roottest1 ~]# memping --servers 192.168.67.12
[roottest1 ~]# echo $?
0[roottest2 opt]# systemctl stop memcached
Failed to ping 192.168.67.12:11211 CONNECTION FAILURE
[roottest1 ~]# echo $?
1memstat
[roottest2 opt]# systemctl start memcached
#查看基本信息
[roottest1 ~]# memstat --servers192.168.67.12
Server: 192.168.67.12 (11211)pid: 14409uptime: 90time: 1710404685version: 1.6.6libevent: 2.0.21-stablepointer_size: 64
...省略
6.2 memcached 操作
memcached 操作命令
[roottest1 ~]# cat /usr/share/doc/memcached-1.4.15/protocol.txt
五种基本操作命令
- set #重新设置
- add #新加一个数据
- flush #清空数据慎用
- get #调用数据
- delete #删除数据 #前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法
command key flags expiration time bytes
value#参数说明如下
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度以秒为单位0 表示永远
bytes 在缓存中存储的字节数
value 存储的值始终位于第二行
#增加key过期时间为秒bytes为存储数据的字节数
add key flags exptime bytes
显示服务状态
[roottest1 ~]# telnet 192.168.67.12 11211
Trying 192.168.67.12...
Connected to 192.168.67.12.
Escape character is ^].
stats
STAT pid 14409
STAT uptime 938
STAT time 1710405533
STAT version 1.6.6
...省略
END#显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。
stats items
END#显示各个slab的信息包括chunk的大小、数目、使用情况等
stats slabs
STAT active_slabs 0
STAT total_malloced 0
END
添加数据
add name 1 30 4
zhao
STORED##########
add 添加
name 键的名字
1 flages标志 描述信息
30 超时时间 默认秒 0 代表永久有效
4 字节数 数据的大小、
zhao 具体的值
###########字节数要按设置的个数输入多/少都不行
CLIENT_ERROR bad data chunk
ERROR
add name 1 10 4
abcde
CLIENT_ERROR bad data chunk
ERROR
add name 1 10 4
abcCLIENT_ERROR bad data chunk
ERROR修改数据、调用数据
#添加数据
add name 1 30 4
zhao
STORED
#修改数据
set name 1 60 4
test
STORED
#调用数据
get name
VALUE name 1 4
test
#60秒后就没了
get name
END删除数据
#添加
add name 1 0 4
zhao
STORED
#调用
get name
VALUE name 1 4
zhao
END
#删除数据
delete name
DELETED
get name
END清空数据
add name 1 0 4
zhao
STORED
get name
VALUE name 1 4
zhao
END
flush_all
OK
get name
END7.memcached集群部署架构
7.1 基于 magent 的部署架构
Magent是google开发的项目,应用端通过负载均衡服务器连接到magent然后再由magent代理用户应用请求到memcached处理底层的memcached为双主结构会自动同步数据本部署方式存在magent单点问题,因此需要两个magent做高可用。
项目站点https://code.google.com/archive/p/memagent/ 7.2 Repcached 实现原理
项目站点repcached - add data replication feature to memcached 在 master上可以通过 -X 选项指定 replication port(默认为11212/tcp)在 slave上通过 -x 指定复制的master并连接事实上如果同时指定了 -x/-X repcached先会尝试连接对端的master但如果连接失败它就会用 -X参数来自己 listen成为master如果 master坏掉 slave侦测到连接断了它会自动 listen而成为 master而如果 slave坏掉master也会侦测到连接断开它就会重新 listen等待新的 slave加入。
从这方案的技术实现来看其实它是一个单 master单 slave的方案但它的 master/slave都是可读写的而且可以相互同步所以从功能上看也可以认为它是双机 master-master方案
7.3 简化后的部署架构
magent已经有很长时间没有更新因此可以不再使用magent直接通过负载均衡连接到memcached仍然有两台memcached做高可用repcached版本的memcached之间会自动同步数据以保持数据一致性即使其中的一台memcached故障也不影响业务正常运行故障的memcached修复上线后再自动从另外一台同步数据即可保持数据一致性。 7.4 部署repcached
[roottest1 opt]# yum -y install gcc libevent libevent-devel[roottest1 opt]# wget https://jaist.dl.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
[roottest1 opt]# ls
memcached-1.2.8-repcached-2.2.1.tar.gz rh
[roottest1 opt]# tar xf memcached-1.2.8-repcached-2.2.1.tar.gz
[roottest1 opt]# ls
fdisk.sh memcached-1.2.8-repcached-2.2.1 memcached-1.2.8-repcached-2.2.1.tar.gz rh
[roottest1 opt]# cd memcached-1.2.8-repcached-2.2.1/
[roottest1 memcached-1.2.8-repcached-2.2.1]#
[roottest1 memcached-1.2.8-repcached-2.2.1]# ./configure --prefix/apps/repcached --enable-replication#报错如下内核版本过高
[roottest1 memcached-1.2.8-repcached-2.2.1]# make
make all-recursive
make[1]: Entering directory /opt/memcached-1.2.8-repcached-2.2.1
Making all in doc
make[2]: Entering directory /opt/memcached-1.2.8-repcached-2.2.1/doc
make[2]: Nothing to be done for all.
make[2]: Leaving directory /opt/memcached-1.2.8-repcached-2.2.1/doc
make[2]: Entering directory /opt/memcached-1.2.8-repcached-2.2.1
gcc -DHAVE_CONFIG_H -I. -DNDEBUG -g -O2 -MT memcached-memcached.o -MD -MP -MF .deps/memcached-memcached.Tpo -c -o memcached-memcached.o test -f memcached.c || echo ./memcached.c
memcached.c: In function ‘add_iov’:
memcached.c:697:30: error: ‘IOV_MAX’ undeclared (first use in this function)if (m-msg_iovlen IOV_MAX ||^
memcached.c:697:30: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [memcached-memcached.o] Error 1
make[2]: Leaving directory /opt/memcached-1.2.8-repcached-2.2.1
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory /opt/memcached-1.2.8-repcached-2.2.1
make: *** [all] Error 2解决办法
[roottest1 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删除原57、59行55 /* FreeBSD 4.x doesnt have IOV_MAX exposed. */56 #ifndef IOV_MAX57 # define IOV_MAX 102458 #endif再次编译安装
[roottest1 memcached-1.2.8-repcached-2.2.1]# make make install[roottest1 memcached-1.2.8-repcached-2.2.1]# yum -y install tree[roottest1 memcached-1.2.8-repcached-2.2.1]# tree /apps/repcached/
/apps/repcached/
├── bin
│ ├── memcached
│ └── memcached-debug
└── share└── man└── man1└── memcached.14 directories, 3 files做软连接
[roottest1 memcached-1.2.8-repcached-2.2.1]# ln -s /apps/repcached/bin/memcached /usr/bin/
ln: failed to create symbolic link ‘/usr/bin/memcached’: File exists
#前面你如果选的做软连接这里会提示已存在使用帮助
[roottest1 memcached-1.2.8-repcached-2.2.1]# memcached -h
memcached 1.4.157.6 启动 memcached
7.6.1 server1 相关操作
#创建用户
[roottest1 opt]# useradd -r -s /sbin/nologin memcached
useradd: user memcached already exists
#这里你如果前面创建过这个用户也会提示已存在#这里如果显示报错
[roottest1 opt]# memcached -d -m 1024 -p 11211 -u memcached -c 2048 -x 192.168.67.12
memcached: invalid option -- x
Illegal argument ?
#就用这个
[roottest1 opt]# cd /apps/repcached/bin/
[roottest1 bin]# ls
memcached memcached-debug
[roottest1 bin]# ./memcached -d -m 1024 -p 11211 -u memcached -c 2048 -x 192.168.67.12##########
-d 后台运行
-m 内存最大为
-p 指定端口号
-u 指定用户
-c 最大
-x 指定同步对象
########### 查看是否启动
[roottest1 bin]# ss -natl
LISTEN 0 128 :::11211 :::*
server2 操作
最好先将server2上的memcached卸干净再做 在server1 上 将整个目录拷贝到 server2上
# apps注意不要加/
[roottest1 bin]# rsync -a /apps 192.168.67.12:/
The authenticity of host 192.168.67.12 (192.168.67.12) cant be established.
ECDSA key fingerprint is SHA256:mwNwnMnbw9oMuRs2NVosCtypIPz0OpkBfpirlpqKSP0.
ECDSA key fingerprint is MD5:8a:42:bd:b4:91:3c:39:64:5d:79:c7:2b:b5:5c:0b:97.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.67.12 (ECDSA) to the list of known hosts.
root192.168.67.12s password: 在server2上操作注意两台机器memcached版本要相同
#创建用户有了跳过
[roottest2 ~]# useradd -r -s /sbin/nologin memcached
useradd: user memcached already exists#安装库否则起不来装过了跳过
[roottest2 ~]# yum -y install gcc libevent libevent-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package libevent-2.0.21-4.el7.x86_64 already installed and latest version
Package libevent-devel-2.0.21-4.el7.x86_64 already installed and latest version
Nothing to do# 做软连接有了跳过
[roottest2 ~]# ln -s /apps/repcached/bin/memcached /usr/bin/
ln: failed to create symbolic link ‘/usr/bin/memcached’: File exists#报错
[roottest2 ~]# memcached -d -m 1024 -p 11211 -u memcached -c 2048 -x 192.168.67.11
memcached: invalid option -- x
Illegal argument ?
#就用这个
[roottest2 ~]# cd /apps/repcached/bin/
[roottest2 bin]# ls
memcached memcached-debug
[roottest2 bin]# ./memcached -d -m 1024 -p 11211 -u memcached -c 2048 -x 192.168.67.11#查看是否启动
[roottest2 /]# ss -ntl | grep 11211
[roottest2 bin]# ss -ntl | grep 11211
LISTEN 0 128 *:11211 *:*
LISTEN 0 128 :::11211 :::*
客户机访问
[roottest3 ~]# telnet 192.168.67.11 11211
Trying 192.168.67.11...
Connected to 192.168.67.11.
Escape character is ^].
add test 1 0 4
fang
STORED
get test
VALUE test 1 4
fang
END
quit
Connection closed by foreign host.
[roottest3 ~]# telnet 192.168.67.12 11211
Trying 192.168.67.12...
Connected to 192.168.67.12.
Escape character is ^].
get test
VALUE test 1 4
fang
END