高性能内存对象缓存Memcached详细实验操作

news2025/2/22 2:06:40

目录

前提准备:

cache1,2:

客户端cache-api(一定得是LAMP环境)

memcache实现主主复制以及高可用(基于以上完成)

cache1,2:

memcache+keepalived(基于以上完成)

cache1,2:


前提准备:

1. 准备三台centos7,其中一台为cache1:192.168.180.110,一台为cache2:192.168.180.120和一台客户端(LAMP环境):192.168.180.150

2. 分别修改主机名称

hostnamectl set-hostname cache1 && bash

hostnamectl set-hostname cache2 && bash

hostnamectl set-hostname cache-api && bash

3. 关闭所有防火墙

systemctl stop firewalld
setenforce 0

主要步骤开始!!!


cache1,2:

1. 安装libevent

#解压
tar zxf libevent-2.1.8-stable.tar.gz -C /usr/src/
cd /usr/src/libevent-2.1.8-stable/

#安装组件
yum install -y gcc gcc-c++

#编译安装
./configure --prefix=/usr/local/libevent && make && make install

2. 安装memcached

cd
#解压
tar zxf memcached-1.5.1.tar.gz -C /usr/src/
cd /usr/src/memcached-1.5.1/

#编译安装
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install

3. 设置memcached服务脚本

vim /usr/local/memcached/memcached_service.sh

#!/bin/bash
CMD="/usr/local/memcached/bin/memcached"
start() {
        $CMD -d -m 128 -u root
}
stop() {
        killall memcached;
}
ACTION=$1
        case $ACTION in
        'start')
                start;;
        'stop')
                stop;;
        'restart')
                stop
                sleep 2
                start;;
        *)
                echo 'Usage:{start|stop|restart}'
        esac


#退出,设置权限,打开
chmod 755 /usr/local/memcached/memcached_service.sh
/usr/local/memcached/memcached_service.sh start
netstat -antp | grep memcache

客户端cache-api(一定得是LAMP环境)

1. 安装Libmemcached

#解压
tar zxf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18

#安装组件
yum install -y gcc gcc-c++

#编译安装
./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached && make && make install

2. 安装memcached扩展

tar zxf memcached-2.2.0.tgz
cd memcached-2.2.0
/usr/local/php5/bin/phpize


cp -r /usr/local/php5/include/php/ext/ ./

./configure --enable-memcached --with-php-config=/usr/local/php5/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl && make && make test && make install

在这一步时,输入n

获得共享地址

Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-zts-20121212/

3. 配置php添加memcached组件

cd /usr/local/php5/

vim php.ini

#输入刚刚获得的共享地址
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20121212/"
extension=memcached.so

4. 访问并查看是否添加成功

vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

#重启httpd
systemctl restart httpd

🚨有些时候可能访问不到这个页面,但是在本地访问却可以访问到

curl 127.0.0.1/index.php | grep memcached

🚨可以看到是有内容的,有内容就可以直接进行下一步

5. 测试memcached-api功能

vim /usr/local/httpd/htdocs/test02.php
<?php
$memcache = new Memcached();
$memcache->addServer('192.168.180.110', 11211);
$memcache->set('key', 'Memcache test successful!', 0, 60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>

#重启httpd,可以多重启几次
systemctl restart httpd

🚨当访问这个的时候,可能也会访问不到,多重启几次httpd就可以了,上面的模块index.php也可以访问到了

6. 浏览器访问,看到这句话就说明已经被memcache记录了

192.168.180.150/test02.php

7. 在cache1上安装telnet,并远程登录

yum install -y telnet

telnet 127.0.0.1 11211
输入:get key


memcache实现主主复制以及高可用(基于以上完成)

cache1,2:

1. 删除cache1,2上的memcache1.5.1版本

rm -rf /usr/src/memcached-1.5.1/
rm -rf memcached-1.5.1.tar.gz

2. 重新下载支持复制功能的memcache

yum install -y psmisc

#关闭memcache
/usr/local/memcached/memcached_service.sh stop
netstat -nultp | grep memcached

#解压
tar zxf memcached-1.2.8-repcached-2.2.tar.gz
cd memcached-1.2.8-repcached-2.2

#编译
./configure --prefix=/usr/local/memcached_replication --enable-replication --with-libevent=/usr/local/libevent

3. 修改配置文件

vim memcached.c


#将原先的删除,替换成新的
#ifndef IOV_MAX
# define IOV_MAX 1024
#endif

#再进行安装
make && make install

4. 启动memcache服务

ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/

cache1:/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.180.120

cache2:/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.180.110

netstat -nultp | grep memcache

5. 在cache1远程登录并插入数值

telnet 192.168.180.110 11211

set username 0 0 8
20250215
get username

6. 在cache2上安装telnet并登录查看cache1插入的数值

yum install -y telnet
telnet 192.168.180.120 11211
get username


memcache+keepalived(基于以上完成)

cache1,2:

1. 均安装keepalived

yum install -y keepalived

#cache1修改主配置文件,将原先内容删除
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id route
}
vrrp_instance VI_1 {
    state MASTER    //主备都为主
    interface ens33    //网卡类型
    virtual_router_id 51
    priority 100    //优先级
    advert_int 1
    nopreempt    //不主动抢占资源,只在Master或者高优先级服务器上设置
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.180.200    //定义虚拟VIP地址
    }
}
virtual_server 192.168.180.200 11211    //VIP故障检测
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 20
protocol TCP
sorry_server 192.168.180.120 11211    //对端IP,也就是cache2
real_server 192.168.180.110 11211 {    //本机IP
weight 3
notify_down /root/memcached.sh    //当 memcached 宕机,停止keepalived服务
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}


#编写完成退出,将这一份文件复制到cache2上
scp /etc/keepalived/keepalived.conf 192.168.180.120:/etc/keepalived/

echo "/usr/bin/systemctl stop keepalived" > /root/memcached.sh
chmod +x memcached.sh

#在cache2上,修改配置文件的一些内容
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id route
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 99    //优先级修改
    advert_int 1
    nopreempt(删除)    //将这一个删除
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.180.200
    }
}
virtual_server 192.168.180.200 11211
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 20
protocol TCP
sorry_server 192.168.180.110 11211    //对端IP
real_server 192.168.180.120 11211 {    //本机IP
weight 3
notify_down /root/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}

echo "/usr/bin/systemctl stop keepalived" > /root/memcached.sh
chmod +x memcached.sh

2. 均开启

systemctl start keepalived

3. 查看VIP是否生成

ip address show dev ens33 | grep 192.168.180.200

4. 验证高可用性

#关闭seten 0

#cache1杀掉memcache:
killall memcached

在cache2上查看,VIP已转移到cache2上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2302201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css之display:grid布局改块级元素布局

1.问题&#xff1a; div是块级元素&#xff0c;一个div元素占一行&#xff0c;但是&#xff0c;今天测试样式时&#xff0c;总是会有两个div并占一行&#xff0c;很困惑&#xff0c;结果发现是app这个样式 在main.css里 #app样式布局在main.ts里被应用 2.原因以及样式分析 im…

推荐一个github star45k+进阶的java项目及知识的网站

mall是github上star 45k的一个java项目 mall项目是一套电商系统&#xff0c;包括前台商城系统及后台管理系统&#xff0c;基于SpringBootMyBatis实现&#xff0c;采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心…

第2章 深入理解Thread构造函数

Thread的构造函数。 2.1 线程的命名 在构造一个Thread时可以为其命名。 2.1.1 线程的默认命名 下面构造函数中&#xff0c;并没有为线程命名。 Thread() Thread(Runnable target) Thread(ThreadGroup group, Runnable target)打开源码会看到 public Thread(Runnable targe…

node 使用 Redis 缓存

缓存是什么&#xff1f; 高并发下&#xff0c;一个项目最先出问题的&#xff0c;并不是程序本身&#xff0c;而是数据库最先承受不住。 在数据库上我们可以做很多优化&#xff0c;例如优化 SQL 语句&#xff0c;优化索引&#xff0c;如果数据量大了&#xff0c;还可以分库、分表…

PMBOK第7版整体架构全面详解

1. 引言 7月1日对于项目管理从业者和研究者而言&#xff0c;是个非凡意义的一个时间&#xff0c;这一天&#xff0c;翘首以待的《 项 目管理知识体系指南 》&#xff08;PMBOK&#xff09;第七版终于发布了。 总体而言&#xff0c;PMBOK第七版集百家之所长&#xff0c;成一…

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。 引入 我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。 没错…

golang panic信息捕获

背景 我们的日志接入阿里云sls平台&#xff0c;但是&#xff0c;日志是以json的格式存储在阿里云sls平台上&#xff0c;程序中产生的error,info等日志都可以实现以json的格式打印。但是&#xff0c;golang程序中产生的panic信息本身不是以json的格式输出&#xff0c;这就导致p…

一周学会Flask3 Python Web开发-http响应状态码

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 在Flask程序中&#xff0c;客户端发出的请求触发相应的视图函数&#xff0c;获取返回值会作为响应的主体&#xff0c;最后生成…

goland无法debug项目

1、其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.2。Delve是Go语言的一个调试工具&#xff0c;用于提供源码级别的调试功能。Go语言每隔一段时间会发布新版本&#xff0c;而相应的调试器Delve也可能会更新以提供新的特性或修复已知问题…

Python VsCode DeepSeek接入

Python VsCode DeepSeek接入 创建API key 首先进入DeepSeek官网&#xff0c;https://www.deepseek.com/ 点击左侧“API Keys”&#xff0c;创建API key&#xff0c;输出名称为“AI” 点击“创建"&#xff0c;将API key保存&#xff0c;复制在其它地方。 在VsCode中下载…

Ubuntu22.04.6如何固定ip地址

Ubuntu22.04.6如何固定ip地址 主要参见这篇博客 ubuntu 桌面版如何设置固定IP地址_ubuntu桌面版如何修改ip-CSDN博客 1.先查看一下当前的IP是多少

腿足机器人之十- SLAM地图如何用于运动控制

腿足机器人之十- SLAM地图如何用于运动控制 腿足机器人SLAM地图的表示与处理全局路径规划&#xff1a;地形感知的路径搜索基于A*的三维路径规划基于RRT*的可行步态序列生成 局部运动规划&#xff1a;实时步态调整与避障动态窗口法的腿足适配模型预测控制&#xff08;MPC&#x…

毕业项目推荐:基于yolov8/yolov5/yolo11的果蔬检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

pyside6学习专栏(二):程序图像资源的加载方式

pyside6中的QLabel控件可以加载图像和gif动画&#xff0c;可以直接从外部文件加载&#xff0c;也可以从QRC类型的文件(实际是一脚本文件)经编绎生成对应的资源.PY模块文件(就是将qrc文本中指定的资源文件的16制内容写入.py文件)来使用&#xff0c;本文对两种方式作了一简单的示…

如何在 VS Code 中快速使用 Copilot 来辅助开发

在日常开发中&#xff0c;编写代码往往是最耗时的环节之一。而 GitHub Copilot&#xff0c;作为一款 AI 编码助手&#xff0c;可以帮助开发者 自动补全代码、生成代码片段&#xff0c;甚至直接编写完整的函数&#xff0c;大幅提升编码效率。那么&#xff0c;如何在 VS Code 中快…

DeepSeek-R1论文阅读及本地调用

前言 DeepSeek已经火了一段时间了&#xff0c;对于这项“国运级”的技术成果&#xff0c;即便研究的不是这个方向&#xff0c;也不免好奇前来看看。本文将先解析一下DeepSeek-R1这篇论文&#xff0c;再对DeepSeek的本地部署使用进行研究配置。 论文标题&#xff1a;DeepSeek-…

自然语言处理:第九十二章 chatBI 经验(转载)

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#x…

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)&#xff1a;https://www.bilibili.com/video/BV1M6rdYEEog/ 备注&#xff1a; 1.本地离线卡密采用最安全的非对称加解密技术&#xff0c;设备id采用最安全多重混合加密不可逆技术生成&…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…