当前位置: 首页 > news >正文

高性能内存对象缓存

Memcached概述

        一套开源的高性能分布式内存对象缓存系统

        所有的数据都存储在内存中

        支持任意存储类型的数据

        提高网站的访问速度

        

数据存储方式与数据过期方式

        数据存储方式:Slab Allocation

                按组分配内存,每次先分配一个Slab,相当于一个大小为1M的页,然后在1M的空间里根据数据划分大小的Chunk 

        数据过期方式

                LRU:数据空间不足时,会根据LRU的情况淘汰最近最少使用的记录

                Laxzy Expiration :惰性过期,是指使用get时查看记录时间,从而检查记录是否已经过期

部署Memcached实验

        1.修改主机名

        2.在memcache01节点上

                1.上传软件包(libevent-2.1.8-stable.tar.gz,memcached-1.5.1.tar.gz)

                2.下载依赖包

yum -y install gcc gcc-*
tar -zxvf libevent-2.1.8-stable.tar.gz -C /usr/src/
cd /usr/src/libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
cd
tar -zxvf 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
cd
/usr/local/memcached/bin/memcached -d -m 128 -u root

                单节点部署成功 

        3.在memcache02节点上

                1.上传软件包(libevent-2.1.8-stable.tar.gz)

                2.下载依赖

yum -y install gcc gcc-*
tar -zxvf libevent-2.1.8-stable.tar.gz -C /usr/src/
cd /usr/src/libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install

        4.操作使用

               1.切换第三台机器(充当客户端)

                2.安装telnet

#类似ssh,主要用于远程登录服务。然而,在某些情况下,这个命令可能只会安装telnet客户端或同时包含客户端和服务器的软件包(如果存在这样的包)
yum -y install telnet

                3.使用telnet管理数据库 

#连接的第一台的IP地址,memcache的端口号
telnet 192.168.27.140 11211

                         添加一个数据,查询数据(第一个0 ,定义的是标记信息,第二个0是过期时间,0是永不过期。第三位数是数据内容长度必须是这个,否则不生效,或者报错)

                         修改一个数据(不仅可以修改数据,还能充当add添加的功能)

                                删除数据

                                清空数据

                                退出(ctrl+} 回车输入quit即可退出telnet)

                4.使用php软件管理

                        1.安装软件包

yum install httpd php php-devel zlib-devel -yecho '<?php phpinfo(); ?>' > /var/www/html/info.php
systemctl start httpd

                         2.安装完成后,浏览器访问测试安装

http://192.168.27.139/info.php

                                 3.安装引入模块

                                        1.上传依赖包(libmemcached-1.0.18.tar.gz  被 memcached-2.2.0.tgz依赖,所以需要两个包)

                                        2.安装

yum -y install gcc gcc-*
tar -xzvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18/
./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached
make && make install
cd

                                        3.安装memcache

tar zxf memcached-2.2.0.tgz
cd memcached-2.2.0#使用phpize生成./config命令
phpize
#拷贝php支持文件
cp -r /usr/include/php/ext/ ./# 配置时使用--disable-memcached-sasl 选项,关闭 Memcached 的 SASL 认证功能,否则会报错
# --with-php-config获取php的信息
./configure \
--enable-memcached \
--with-php-config=/usr/bin/php-config \
--with-libmemcached-dir=/usr/local/libmemcached \
--disable-memcached-saslmake
make test
make install

                                        4.执行完毕后,在执行一次make install 生成一下php存放的路径

#执行完上诉操作后,会有一个发送邮件的提示,输入n拒绝make install
#打开配置文件,调整内容
vi /etc/php.ini
extension_dir = "/usr/lib64/php/modules/"
extension=memcached.so

                                        重启服务 

systemctl restart httpd

                刷新网页,查看是否有下图内容,有则memcache即可使用

                        验证memcache是否可用

                                打开网页验证

vi /var/www/html/test.php
<?php$memcache = new Memcached();$memcache->addServer('192.168.27.140', 11211);$memcache->set('key', 'Memcache test successful!', 0, 60);$result = $memcache->get('key');unset($memcache);echo $result;
?>

                                 网页验证(IP为第三台IP)

        部署 带有复制功能的memcache

                1.在第一台机器上关闭冲突启动

pkill memcached

                2.在两台memcache节点上上传软件包(memcached-1.2.8-repcached-2.2.tar.gz) 

                3. 安装

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

                        1.安装之前要调整代码

vi memcached.c

                        2.删除标记两行

                        3.编译安装

make && make install

                 4.在memcache01节点上

ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/
#IP指向memcache02的IP
/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.27.130

                 5.在memcache02节点上

ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/
#IP指向memcache01的IP
/usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.27.140

                6.在第三台机器验证。

#连接第一台机器
telnet 192.168.27.140 11211

                7.高可用

                        1.在memcache01 memcache02节点安装 keepalived

cd
yum -y install keepalived

                        2.在memcache01节点

#打开配置文件
vi /etc/keepalived/keepalived.conf
#删除所有内容

                        3.删除所有内容,替换一下内容,按图修改内容

! Configuration File for keepalivedglobal_defs {router_id LB01
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.27.200}
}virtual_server 192.168.27.200 11211 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP
#对向节点的IP,即memcache02的IPsorry_server 192.168.27.129 11211
#本节点的IPreal_server 192.168.27.128 11211 {weight 1notify_down /root/memcached.shTCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 11211}}
}

                                4.保存退出,切换memcache02节点 

                                5.在memcache01节点

#打开配置文件
vi /etc/keepalived/keepalived.conf
#删除所有内容

                                6.删除所有内容,替换一下内容,按图修改内容

! Configuration File for keepalivedglobal_defs {router_id LB02
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.27.200}
}virtual_server 192.168.27.200 11211 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP
#对向节点的IP,即memcache02的IPsorry_server 192.168.27.128 11211
#本节点的IPreal_server 192.168.27.129 11211 {weight 1notify_down /root/memcached.shTCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 11211}}
}

                                7.在两台memcache节点操作

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

                                验证其中一台是否出现了VIP地址

                                验证

                                停掉vip所在机器的memcached服务

pkill memcached

                                会在另一台机器出现vip地址,实现了故障切换,即高可用

相关文章:

高性能内存对象缓存

Memcached概述 一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 数据存储方式与数据过期方式 数据存储方式:Slab Allocation 按组分配内存&#xff0c;每次先分配一个Slab&#xff0c;相当于一个大小为1M的页&…...

文件上传-CMS文件上传分析

黑盒思路&#xff1a; 上传点抓包测试 个人用户中心是否存在文件上传功能后台管理系统是否存在文件上传功能字典目录扫描探针文件&#xff08;eg&#xff1a;upload.php&#xff09;构造地址字典目录扫描探针编辑器目录构造地址&#xff08;编辑器目录一般是默认的&#xff09…...

云原生日志Loki

1. Loki简介 1.1 Loki介绍 Loki是 Grafana Labs 团队最新的开源项目&#xff0c;是一个水平可扩展&#xff0c;高可用性&#xff0c;多租户的日志聚合系统。它的设计非常经济高效且易于操作&#xff0c;因为它不会为日志内容编制索引&#xff0c;而是为每个日志流编制一组标签…...

初阶数据结构之直接选择排序和快速排序

直接选择排序 1.在元素集合 array[i]–array[n-1] 中选择关键码最⼤(⼩)的数据元素 2.若它不是这组元素中的最后⼀个(第⼀个)元素&#xff0c;则将它与这组元素中的最后⼀个&#xff08;第⼀个&#xff09;元素 交换 3.在剩余的 array[i]–array[n-2]&#xff08;array[i1]–…...

Java语言程序设计——篇十三(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…...

低代码: 组件库测试之渲染和元素获取,触发事件,更新表单,验证事件以及异步请求

组件库测试步骤 渲染组件(怎样将一个组件渲染到测试用例里面) mount 和 shallowMount传递属性元素是否成功的显示 查找元素的不同写法get, getAllfind, findAllfindComponent 和 getComponent触发事件(是click也好,是input也好,让它触发对应的事件) trigger 方法观察测试界面…...

银河麒麟服务器操作系统Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤

银河麒麟服务器操作系统 Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤 一、准备工作1. 下载ISO镜像2. 制作安装介质3. 设置BIOS 二、安装过程1. 启动系统2. 选择安装语言3. 选择安装配置4. 配置root密码与创建用户5. 开始安装6. 重启系统7. 同意许可协议 三、系…...

2024年电赛H题全开源

当题目出来的的那一刻&#xff0c;看到了M0芯片&#xff0c;我们实验室只有一块板子&#xff0c;并且我没有接触过M0&#xff0c;电赛只准备了TI的MSP430f5529。但是我并没有放弃&#xff0c;决然的选择了H题。基本上将四问全做出来&#xff0c;可是测试由于使用了感为科技的寻…...

Docker:宿主机可以ping通外网,docker容器内无法ping通外网之解决方法

问题描述 1、宿主机可以ping外网&#xff0c;docker容器内无法ping外网 ping www.baidu.com 提示&#xff1a;unknown host baidu.com 2、宿主机可以wget下载&#xff0c;docker容器内无法wget下载 wget www.baidu.com 提示&#xff1a;unknown host baidu.com 解决方法 1、…...

bootchart抓Android系统启动各阶段性能数据

最近在做Android系统启动优化&#xff0c;首要任务是找到启动过程中各阶段耗时点&#xff0c;进而有针对性地进行优化。主要用bootchart抓开机数据&#xff0c;本文主要记录下工具的使用方法。 1.抓开机数据 adb root adb shell ‘touch /data/bootchart/enabled’ adb rebo…...

使用 Node.js 和 Express 框架通过网页访问GPIO和嵌入式 Linux 系统中使用 GSM/3G/4G 模块

点击上方"蓝字"关注我们 01、前言 想要快速开发嵌入式 Linux 网络应用,控制硬件 GPIO,从而使得用户能够远程控制和监控系统。 主要目的是向读者展示开发使用文件系统控制 GPIO 的 Node 代码、创建用户有好的界面、以及运行基于 Express 框架使用 AJAX 通客户端进…...

IT 行业的就业情况

当前&#xff0c;IT 行业的就业情况呈现出以下特点&#xff1a; 1. 需求持续增长&#xff1a;随着数字化转型的加速&#xff0c;各个行业对信息技术的依赖程度不断提高&#xff0c;推动了对 IT 人才的持续需求。特别是在云计算、大数据、人工智能、物联网等新兴领域&#xff…...

如何快速获取麒麟操作系统版本信息

如何快速获取麒麟操作系统版本信息 一、桌面版系统1. 使用 /etc/kylin-build 文件2. 使用 /etc/.kyinfo 文件 二、服务器版系统1. 使用 /etc/.productinfo 文件2. 使用 nkvers 命令3. 使用 /etc/kylin-release 文件 三、总结 &#x1f496;The Begin&#x1f496;点点关注&…...

git提交规范检查husky

一、Eslint 尤雨溪推荐的 prettierrc 配置&#xff0c;句尾不带分号 单引号。 尤雨溪推荐配置&#xff1a;vue-next/.prettierrc lint lint 是最著名的 C 语言工具之一&#xff0c;是由贝尔实验室 SteveJohnson 于 1979 在 PCC(PortableC Compiler) 基础上开发的静态代码分…...

LeetCode 919. 完全二叉树插入器

完全二叉树是每一层&#xff08;除最后一层外&#xff09;都是完全填充&#xff08;即&#xff0c;节点数达到最大&#xff09;的&#xff0c;并且所有的节点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter&#xff0c;它支持以下几种操作&#xf…...

C++密码管理器

先问一句 最近有几个关注我的原力等级为0或-1&#xff0c;文章全是转载&#xff0c;转载时间基本都在2021年&#xff0c;而且关注了很多人&#xff0c;这些是僵尸粉吗&#xff1f; 文末有投票&#xff0c;麻烦参与一下谢谢 实现功能列表 暂时还没做加密功能 打算用openssl/a…...

算法【Java】 —— 滑动窗口

滑动窗口 在上一篇文章中&#xff0c;我们了解到了双指针算法&#xff0c;在双指针算法中我们知道了前后指针法&#xff0c;这篇文章就要提到前后指针法的一个经典的使用 —— 滑动窗口&#xff0c;在前后指针法中&#xff0c;我们知道一个指针在前&#xff0c;一个指针在后&a…...

Spring Aware接口执行时机

一. 介绍 Spring Aware 接口的执行时机有两处&#xff0c;都在 getBean() 中的 initializeBean() 中&#xff1b; 下面我们分析这两处时机&#xff1b; // ----------------------- AbstractAutowireCapableBeanFactory --------------------- protected Object initializeB…...

android FD_SET_chk问题定位

android FD_SET_chk问题定位 一、FD报错二、问题定位2.1 APM定位2.2 adb定位2.3. 代码获取FD数 三、FD优化 一、FD报错 App在运行中记录报错如下&#xff0c;FD_SET&#xff0c;这个问题大概是文件描述符&#xff08;File Descriptor&#xff0c;简称FD&#xff09;超过了最大…...

Chapter 39 Python多线程编程

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、并行执行二、threading模块 前言 现代操作系统如 macOS、UNIX、Linux 和 Windows 等&#xff0c;均支持多任务处理。本篇文章详细讲解了并行执行的概念以及如何在 …...

用 IDENTITY 数据销毁对象处理个人数据销毁,SAP ILM 场景下的信息检索与合规闭环

做 SAP 系统里的个人数据治理,最怕的不是删除动作本身,而是删除之前没有把数据的来源、用途、保留规则、可检索性和审计链路讲清楚。一个系统里只要出现客户、联系人、消费者、会员、订阅人、业务伙伴、技术访问账号等身份相关对象,围绕这些对象产生的姓名、邮箱、手机号、登…...

Page Assist终极指南:在浏览器侧边栏中运行本地AI助手的完整教程

Page Assist终极指南&#xff1a;在浏览器侧边栏中运行本地AI助手的完整教程 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist Page Assist是一款革…...

基于RAG与本地LLM的智能代码库管理工具部署与优化指南

1. 项目概述&#xff1a;一个为开发者打造的智能代码库管理工具最近在整理自己过去几年的项目代码时&#xff0c;我遇到了一个几乎所有开发者都会头疼的问题&#xff1a;代码库越来越多&#xff0c;但想快速找到某个特定功能的实现、或者想复用一段之前写过的优质代码时&#x…...

AI代码助手与Django全栈开发:人机协同编程新范式实践

1. 项目概述&#xff1a;当AI代码助手遇上Django全栈开发如果你是一名独立开发者、初创公司的技术负责人&#xff0c;或者正在学习全栈开发&#xff0c;那么“Cursor-Django”这个项目绝对值得你花时间研究。这不是一个简单的Django教程&#xff0c;而是一个由Coding for Entre…...

3 万粉丝公众号变现实录:技术社区如何做到月入 5 万 +

摘要&#xff1a;从 0 到 3 万 粉丝&#xff0c;3 万 社群成员&#xff0c;一个技术类公众号的完整运营路径。本文拆解内容定位、合作模式、变现策略&#xff0c;全是实操经验&#xff0c;没有虚的。 封面文案&#xff1a;技术公众号变现全攻略 开篇&#xff1a;说实话&…...

用TensorFlow 2.0复现Mask R-CNN:从ResNet主干到ROI Align的保姆级代码解读

TensorFlow 2.0实现Mask R-CNN核心技术解析&#xff1a;从ResNet到ROI Align的工程实践 在计算机视觉领域&#xff0c;实例分割一直是最具挑战性的任务之一。它不仅需要精确地定位物体&#xff0c;还要在像素级别上区分不同实例。本文将深入探讨如何用TensorFlow 2.0实现Mask R…...

Windows下用Python调用CDS API下载ERA5数据,报错Missing/incomplete configuration?手把手教你创建.cdsapirc配置文件

Windows下Python调用CDS API下载ERA5数据报错排查指南&#xff1a;从配置文件创建到隐藏文件陷阱全解析 当你在Windows系统上首次尝试使用Python调用CDS API下载ERA5气象数据时&#xff0c;可能会遇到一个令人困惑的报错&#xff1a;"Missing/incomplete configuration f…...

信号处理库mattbaconz/signal:实现优雅停机与进程通信的跨平台解决方案

1. 项目概述&#xff1a;一个信号处理与通信的瑞士军刀最近在GitHub上看到一个挺有意思的项目&#xff0c;mattbaconz/signal。光看名字&#xff0c;你可能会联想到那个知名的加密通讯应用&#xff0c;但点进去你会发现&#xff0c;这是一个完全不同的技术世界。这是一个由开发…...

从命令行到自动化:用xrandr和Bash脚本打造你的Linux多屏工作流(附常用场景脚本)

从命令行到自动化&#xff1a;用xrandr和Bash脚本打造你的Linux多屏工作流 在Linux系统中管理多显示器配置&#xff0c;xrandr无疑是最强大的命令行工具之一。但每次手动输入复杂的xrandr命令来调整显示器布局&#xff0c;对于追求效率的高级用户来说&#xff0c;无疑是一种时间…...

《身体健康最重要》的内容入口:朴素标题如何连接听众

从内容传播角度看&#xff0c;《身体健康最重要》的入口非常朴素&#xff0c;也因此有记忆点。它不像复杂概念&#xff0c;而像日常里常被忽略的一句提醒。这类标题如果写成说教&#xff0c;很容易失去听众。更好的方式&#xff0c;是把它放回真实生活&#xff1a;熬夜后、忙到…...