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

Memcached 服务搭建和集成使用的详细步骤示例

以下是 Memcached 服务搭建和集成使用的详细步骤示例:

一、搭建 Memcached 服务
  1. 安装 Memcached

    • Linux 系统
      • yum 安装:执行命令 yum install -y memcached memcached-devel
      • 源码安装
        • 下载源码:wget http://www.memcached.org/files/memcached-1.5.17.tar.gz
        • 解压:tar zxf memcached-1.5.17.tar.gz
        • 进入目录:cd memcached-1.5.17
        • 配置:./configure --prefix=/usr/local/memcached
        • 编译安装:make && make install
    • Windows 系统
      • 下载安装包:memcached-win64。
      • 解压到指定目录,如 D:\memcached
  2. 启动 Memcached

    • Linux 系统
      • 启动命令:/usr/local/memcached/bin/memcached -d -u root -m 64m -p 11211 -c 1024 -l 0.0.0.0
      • 参数说明:
        • -d:以守护进程方式运行。
        • -u root:指定运行用户。
        • -m 64m:分配 64MB 内存。
        • -p 11211:监听端口。
        • -c 1024:最大并发连接数。
        • -l 0.0.0.0:监听所有 IP 地址。
      • 设置为开机启动:
        • 复制启动脚本:cp /usr/local/memcached/scripts/memcached.sysv /etc/init.d/memcached
        • 修改脚本:sed -i 's/USER=nobody/USER=root/g' /etc/init.d/memcached
        • 设置权限:chmod +x /etc/init.d/memcached
        • 添加开机启动:chkconfig --level 345 memcached on
    • Windows 系统
      • 以管理员身份打开命令行。
      • 安装服务:D:\memcached\memcached.exe -d install
      • 启动服务:net start memcached
二、集成 Memcached 到应用程序
  1. 添加依赖
    • Maven 项目
      • pom.xml 中添加依赖:
<dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.3</version>
</dependency>
  1. 配置 Memcached 连接
    • application.propertiesapplication.yml 中添加配置:
# application.yml
spring:memcached:servers: 127.0.0.1:11211pool:maxTotal: 100maxIdle: 20minIdle: 10
  1. 创建配置类
    • 创建 MemcachedConfig 类:
@Configuration
public class MemcachedConfig {@Value("${spring.memcached.servers}")private String servers;@Beanpublic MemcachedClient memcachedClient() throws IOException {MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses(servers.split(",")));return client;}
}
  1. 使用 Memcached 缓存数据
    • 创建服务类 CacheService
@Service
public class CacheService {@Autowiredprivate MemcachedClient memcachedClient;public void setToCache(String key, Object value, int expire) {try {memcachedClient.set(key, expire, value);} catch (Exception e) {e.printStackTrace();}}public Object getFromCache(String key) {try {return memcachedClient.get(key);} catch (Exception e) {e.printStackTrace();return null;}}
}
  1. 在业务逻辑中使用缓存
    • 在控制器或服务层中注入 CacheService 并使用:
@RestController
public class UserController {@Autowiredprivate CacheService cacheService;@GetMapping("/user/{id}")public User getUser(@PathVariable Long id) {String key = "user_" + id;User user = (User) cacheService.getFromCache(key);if (user == null) {user = userRepository.findById(id).orElse(null);if (user != null) {cacheService.setToCache(key, user, 3600); // 缓存一小时}}return user;}
}
三、测试 Memcached 缓存
  1. 编写测试用例
    • 创建 CacheServiceTest 类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {@Autowiredprivate CacheService cacheService;@Testpublic void testCache() {String key = "test_key";String value = "Hello, Memcached!";cacheService.setToCache(key, value, 60); // 缓存一分钟String result = (String) cacheService.getFromCache(key);assertEquals(value, result);// 等待超过缓存时间try {Thread.sleep(60000);} catch (InterruptedException e) {e.printStackTrace();}result = (String) cacheService.getFromCache(key);assertNull(result);}
}
  1. 运行测试
    • 执行测试用例,验证缓存功能是否正常。

通过以上步骤,您已成功搭建 Memcached 服务并将其集成到应用程序中,实现了数据的缓存功能。

相关文章:

Memcached 服务搭建和集成使用的详细步骤示例

以下是 Memcached 服务搭建和集成使用的详细步骤示例&#xff1a; 一、搭建 Memcached 服务 安装 Memcached Linux 系统 yum 安装&#xff1a;执行命令 yum install -y memcached memcached-devel。源码安装 下载源码&#xff1a;wget http://www.memcached.org/files/memcach…...

国鑫主板bios切换显示模式为独立显卡

# 进入到Platform Miscellaneous Configuration Active Video 切换为PCIE Device保存退出&#xff01; 如果之前有安装过nvidia驱动&#xff0c;记得卸载掉再安装一遍。...

嵌入式硬件篇---CAN

文章目录 前言1. CAN协议基础1.1 物理层特性差分信号线终端电阻通信速率总线拓扑 1.2 帧类型1.3 数据帧格式 2. STM32F103RCT6的CAN硬件配置2.1 硬件连接2.2 CubeMX配置启用CAN1模式波特率引脚分配过滤器配置&#xff08;可选&#xff09; 3. HAL库代码实现3.1 CAN初始化3.2 发…...

【日撸 Java 300行】Day 14(栈)

目录 Day 14&#xff1a;栈 一、栈的基本知识 二、栈的方法 1. 顺序表实现栈 2. 入栈 3. 出栈 三、代码及测试 拓展&#xff1a; 小结 Day 14&#xff1a;栈 Task&#xff1a; push 和 pop 均只能在栈顶操作.没有循环, 时间复杂度为 O(1). 一、栈的基本知识 详细的介…...

2025最新出版 Microsoft Project由入门到精通(七)

目录 优化资源——在资源使用状况视图中查看资源的负荷情况 在资源图表中查看资源的负荷情况 优化资源——资源出现冲突时的原因及处理办法 资源过度分类的处理解决办法 首先检查任务工时的合理性并调整 增加资源供给 回到资源工作表中双击对应的过度分配资源 替换资…...

修改(替换)文件中的指定内容并保留文件修改前的时间(即修改前后文件的最后修改时间保持不变)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 修改&#xff08;替换&#xff09;文件中的指…...

Linux云计算训练营笔记day07(MySQL数据库)

数据库 DataBase 保存数据的仓库 数据库管理系统 DBMS 这是一个可以独立运行&#xff0c;用于维护磁盘上的数据的一套软件 特点: 维护性高&#xff0c;灵活度高&#xff0c;效率高&#xff0c;可扩展性强 常见的DBMS Mysql Mariadb Oracle DB2 SQLServer MySQL是一个关系型…...

应用探析|千眼狼PIV测量系统在职业病防治中的应用

1、职业病防治背景 随着《职业病防治法》及各省市“十四五”职业病防治规划的深入推进&#xff0c;工作场所粉尘危害监测与防控已成为疾控部门的核心任务。以矿山、建材、冶金、化工等行业为例&#xff0c;粉尘浓度、分布及传播特性的精准测量是评估职业病风险的关键。 传统的…...

获取accesstoken时,提示证书解析有问题,导致无法正常获取token

错误&#xff1a; https://qyapi.weixin.qq.com/cgi-bin/gettoken": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targ…...

面试中被问到谈谈你对threadlocal的理解

ThreadLocal 的核心理解 1. 基本概念 ThreadLocal 是 Java 提供的线程局部变量机制&#xff0c;用于在多线程环境中为每个线程维护独立的变量副本&#xff0c;实现线程隔离。其核心思想是空间换时间&#xff0c;通过避免共享变量带来的同步开销&#xff0c;提升并发性能。 2…...

nvidia驱动更新-先卸载再安装-ubuntu

显卡驱动升级前&#xff0c;卸载旧版本&#xff0c;可采用两种方式。 1.命令行 &#xff08;1&#xff09;查找已安装的 NVIDIA 驱动和相关包&#xff1a;dpkg -l | grep nvidia &#xff08;2&#xff09;完全卸载 NVIDIA 驱动&#xff1a;sudo apt remove purge nvidia-*…...

FlashInfer - 安装

FlashInfer - 安装 flyfish 一、JIT 版安装FlashInfer 对于 JIT 版本&#xff08;即每次都从源代码编译每个内核&#xff0c;此过程需要 NVCC&#xff09;&#xff0c;可通过 PyPI 进行安装。 解释 JIT 版本&#xff08;JIT Version&#xff09; JIT 即 Just-In-Time Compi…...

推荐算法工程化:ZKmall模板商城的B2C 商城的用户分层推荐策略

在 B2C 电商竞争激烈的市场环境中&#xff0c;精准推荐已成为提升用户体验、促进商品销售的关键。ZKmall 模板商城通过推荐算法工程化手段&#xff0c;深度挖掘用户数据价值&#xff0c;制定科学的用户分层推荐策略&#xff0c;实现 “千人千面” 的个性化推荐&#xff0c;帮助…...

jackson-dataformat-xml引入使用后,响应体全是xml

解决方案&#xff1a; https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.servlet.config.annotation.Con…...

嵌入式硬件篇---TOF|PID

文章目录 前言1. 硬件准备主控芯片ToF模块1.VL53L0X2.TFmini 执行机构&#xff1a;电机舵机其他 2. 硬件连接(1) VL53L0X&#xff08;IC接口&#xff09;(2) TFmini&#xff08;串口通信&#xff09; 3. ToF模块初始化与数据读取(1) VL53L0X&#xff08;基于HAL库&#xff09;(…...

Realtek 8126驱动分析第四篇——multi queue相关

Realtek 8126是 5G 网卡&#xff0c;因为和 8125 较为接近&#xff0c;第四篇从这里开始也无不可。本篇主要是讲 multi queue 相关&#xff0c;其他的一些内容在之前就已经提过&#xff0c;不加赘述。 1 初始化 1.1 rtl8126_init_one 从第一篇我们可以知道每个 PCI 驱动都注…...

基于Java和PostGIS的AOI面数据球面面积计算实践

目录 前言 一、计算方法简介 二、球面面积计算 1、AOI数据转Polygon 2、Geotools面积计算 3、GeographicLib面积计算 4、PostGIS面积计算 三、结果分析 1、不同算法结果对比 2、与互联网AOI对比 3、与天地图测面对比 四、总结 前言 在现代地理信息系统&#xff08;G…...

Spring Boot之Web服务器的启动流程分析

如何判断创建哪种web容器&#xff1a;servlet&#xff1f;reactive&#xff1f; 我们在启动Spring Boot程序的时候&#xff0c;会使用SpringApplication.run方法来启动&#xff0c;在启动流程中首先要判断的就是需要启动什么类型的服务器&#xff0c;是servlet&#xff1f;或者…...

C# SQLite高级功能示例

目录 1 主要功能 2 程序结构和流程 3 详细实现说明 3.1 基础设置 3.2 事务演示 3.3 索引演示 3.4 视图演示 3.5 触发器演示 3.6 全文搜索演示 3.7 窗口函数演示 3.8 外键约束演示 4 高级功能示例 5 单个方法详细介绍 5.1 SetupExampleData()方法 5.2 UseTransact…...

【周输入】510周阅读推荐-1

本号一年了&#xff0c;有一定的成长&#xff0c;也有很多读者和点赞。自觉更新仍然远远不够&#xff0c;需要继续努力。 但是还是要坚持2点&#xff1a; 在当前这个时代&#xff0c;信息大爆炸&#xff0c;层次不齐&#xff0c;不追加多&#xff0c; 信息输入可以很多&#x…...

基于动态规划的强化学习方法

目录 # 动态规划 # 基于动态规划的强化学习方法 # 求解过程&#xff1a; ## 策略评估 ## 策略提升 # 价值迭代算法 # 参考 # 动态规划 动态规划的基本思想是将待求解问题分解成若干个子问题&#xff0c;先求解子问题&#xff0c;然后从这些子问题的解得到目标问题的解。…...

启动 spyder ModuleNotFoundError: No module named ‘PyQt5.QtWebKitWidgets‘

一、根本原因 Spyder 版本兼容性&#xff1a;Spyder 4.x 依赖 QtWebKitWidgets&#xff0c;但该模块在 PyQt5 5.15 中已被移除。 PyQt5 版本冲突&#xff1a;如果你安装了较新的 PyQt5&#xff08;如 5.15&#xff09;&#xff0c;则会缺少 QtWebKitWidgets。 二、解决方案 方法…...

ChemBlender:科研绘图创新解决方案

一、研究背景与冲突 &#xff08;一&#xff09;研究背景 在科学研究领域&#xff0c;可视化表达对于成果的呈现与交流至关重要。科研绘图作为科学可视化的关键手段&#xff0c;涵盖了从微观分子结构到宏观实验现象等广泛的内容。随着科研的深入发展&#xff0c;研究对象的复杂…...

Uniapp Android/IOS 获取手机通讯录

介绍 最近忙着开发支付宝小程序和app&#xff0c;下面给大家介绍一下 app 获取通讯录的全部过程吧&#xff0c;也是这也是我app开发中的一项需求吧。 效果图如下 勾选配置文件 使用uniapp开发的童鞋都知道有一个配置文件 manifest.json 简单的说一下&#xff0c;就是安卓/ios/…...

设计一个分布式系统:要求全局消息顺序,如何使用Kafka实现?

一、高吞吐低延迟 Kafka 集群设计要点 1. 分区策略优化 // 计算合理分区数公式&#xff08;动态调整&#xff09; int numPartitions max(Tp, Tc) / min(Tp, Tc) // Tp生产者吞吐量 Tc消费者吞吐量建议初始按业务键&#xff08;如订单ID&#xff09;哈希分区单分区吞吐建议…...

2025年RIS SCI2区,改进白鲸优化算法+复杂非线性方程组求解,深度解析+性能实测

目录 1.摘要2.白鲸优化算法BWO原理3.改进策略4.结果展示5.参考文献6.代码获取7.读者交流 1.摘要 本文提出了一种改进白鲸优化算法&#xff08;ABWOA&#xff09;用来解决非线性方程组&#xff08;SNLEs&#xff09;求解问题。ABWOA引入了平衡因子和非线性自适应参数&#xff0…...

Java后端开发day48--反射动态代理

&#xff08;以下内容全部来自上述课程&#xff09; 反射 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 就是获取里面的成员变量、构造方法和成员方法&#xff0c;idea中打代码跳出来的提示就是反射。 1. 获取class对象的三种方式 Class.for…...

十四、继承与组合(Inheritance Composition)

十四、继承与组合&#xff08;Inheritance & Composition&#xff09; 引言 C最引人注目的特性之一是代码复用。组合&#xff1a;在新类中创建已有类的对象。继承&#xff1a;将新类作为已有类的一个类型来创建。 14.1 组合的语法 Useful.h //C14:Useful.h #ifndef US…...

ValueError: Caught ValueError in DataLoader worker process 0.

参考链接&#xff1a; https://stackoverflow.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10 它提示我有个地方值错误空字符 果然因为格式处理没有传进去东西&#xff0c;找下原因&#xff0c;让它正常处理 原来是相对路径的.影响了程序运行 将v…...

【数据结构】——链表OJ(下)

前面我们已经刷了几道单链表的题目&#xff0c;下面我们继续看几道题目。 一、相交链表 这道题题目的要求是很好理解的&#xff0c;就是现在我们有两个链表&#xff0c;然后我们就相办法进行判断&#xff0c;这两个链表是否是相交的&#xff0c;那么链表的相交其实就是有没有共…...