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 服务并将其集成到应用程序中,实现了数据的缓存功能。

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

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

相关文章

2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局

2. 盒模型/布局模块 - 响应式产品展示页 案例&#xff1a;电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…

Go基于plugin的热更新初体验

背景 对于一个部署在生产环境的项目来说&#xff0c;我们希望当代码出现bug的时候&#xff0c;可以不用重启进程而达到动态修改代码的目的—— 这就是代码热部署&#xff01; 使用java做游戏服务器&#xff0c;最大的好处是&#xff0c;当代码出现bug&#xff0c;可以直接热…

【RabbitMQ】工作队列和发布/订阅模式的具体实现

文章目录 建立连接工作队列模式实现创建队列和交换机生产者代码消费者代码运行程序启动消费者启动生产者 发布/订阅模式实现创建队列和交换机生产者代码创建交换机声明两个队列绑定队列和交换机发送消息完整代码 消费者代码完整代码 运行程序启动生产者启动消费者 建立连接 我…

Codeforces Round 998 (Div. 3)

A. Fibonacciness 题目大意 给你四个数字abde&#xff0c;让你找到一个中间值c&#xff0c;问 a b c a b c abc &#xff0c; b c d b c d bcd &#xff0c; c d e c d e cde 最多能有几个式子成立 解题思路 显然最多就六种情况&#xff0c;暴力枚举即可 代…

火山引擎发展初始

火山引擎是字节跳动旗下的云计算服务品牌&#xff0c;其云服务业务的启动和正式商业化时间线如下&#xff1a; 1. **初期探索&#xff08;2020年之前&#xff09;** 字节跳动在早期为支持自身业务&#xff08;如抖音、今日头条等&#xff09;构建了强大的基础设施和技术中…

【认知思维】光环效应:第一印象的持久力量

什么是光环效应 光环效应&#xff08;Halo Effect&#xff09;是指人们倾向于让对某人或某物的一个显著特质的印象影响对其他特质的评价的认知偏差。简单来说&#xff0c;当我们对某人的一个特质&#xff08;如外表、智力或某项技能&#xff09;形成积极印象时&#xff0c;我们…

Java Solon v3.3.0 发布(国产优秀应用开发基座)

Solon 框架&#xff01; Solon 是新一代&#xff0c;Java 企业级应用开发框架。从零开始构建&#xff08;No Java-EE&#xff09;&#xff0c;有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议&#xff0c;是“杭州无耳科技有限公司”开源的根级项目&#xff…

力扣-104.二叉树的最大深度

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 class Solution { public:int maxDepth(TreeNode* root) {if(!root){return 0;}return max(maxDepth(root->left), maxDepth(root->…

单反和无反(私人笔记)

① 单反相机&#xff1a; 定义&#xff1a; 单反相机&#xff08;Single-Lens Reflex&#xff0c;SLR&#xff09;是一种带有反光镜结构的数码相机。光线通过镜头进入后&#xff0c;先被反光镜反射到五棱镜/五面镜&#xff0c;再通过取景器进入人眼。按下快门时&#xff0c;反…

超详细讲解C语言转义字符\a \b \r \t \? \n等等

转义字符 C语言有一组字符很特殊&#xff0c;叫做转义字符&#xff0c;顾名思义&#xff0c;改变原来的意思的字符。 1 \? ??)是一个三字母词&#xff0c;在以前的编译器它会被编译为] (??会被编译为[ 因此在以前输入(are you ok ??)就会被编译为are you ok ] 解决这个…

Java Spring MVC -01

SpringMVC 是一种基于 的实现 MVC 设计模式的请求驱动类型的轻量级 Web 框架&#xff0c;属于 Spring FrameWork 的后续产品&#xff0c;已经融合在 Spring Web Flow 中。 First:SpringMVC-01-SpringMVC 概述 SpringMVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应…

Spring MessageSource 详解:如何在国际化消息中传递参数

在开发多语言应用程序时,Spring 的 MessageSource 是处理国际化(i18n)文本的核心组件。它允许我们根据用户的 Locale (区域设置) 显示不同的消息。然而,很多时候我们的消息并不是静态的,而是需要包含动态数据,比如用户名、数量、文件名等。这时,我们就需要在获取国际化消…

Datawhale 5月llm-universe 第1次笔记

课程地址&#xff1a;GitHub - datawhalechina/llm-universe: 本项目是一个面向小白开发者的大模型应用开发教程&#xff0c;在线阅读地址&#xff1a;https://datawhalechina.github.io/llm-universe/ 难点&#xff1a;配置conda环境变量 我用的vscode github方法 目录 重要…

基于Java的家政服务平台设计与实现(代码+数据库+LW)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本家政服务平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

Android中LinearLayout线性布局使用详解

Android中LinearLayout线性布局使用详解 LinearLayout&#xff08;线性布局&#xff09;是Android中最基础、最常用的布局之一&#xff0c;它按照水平或垂直方向依次排列子视图。 基本特性 方向性&#xff1a;可以设置为水平(horizontal)或垂直(vertical)排列权重&#xff1…

LVS+keepalived实战案例

目录 部署LVS 安装软件 创建VIP 创建保存规则文件 给RS添加规则 验证规则 部署RS端 安装软件 页面内容 添加VIP 配置系统ARP 传输到rs-2 客户端测试 查看规则文件 实现keepalived 编辑配置文件 传输文件给backup 修改backup的配置文件 开启keepalived服务 …

(C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)

目录 前言&#xff1a; 源代码&#xff1a; product.h product.c fileio.h fileio.c main.c 代码解析&#xff1a; fileio模块&#xff08;文件&#xff08;二进制&#xff09;&#xff09; 写文件&#xff08;保存&#xff09; 函数功能 代码逐行解析 关键知识点 读文…

ubuntu----100,常用命令2

目录 文件与目录管理系统信息与管理用户与权限管理网络配置与管理软件包管理打包与压缩系统服务与任务调度硬件信息查看系统操作高级工具开发相关其他实用命令 在 Ubuntu 系统中&#xff0c;掌握常用命令可以大幅提升操作效率。以下是一些常用的命令&#xff0c;涵盖了文件管理…

WiFi密码查看器打开软件自动获取数据

相信有很大一部分人都不知道怎么看已经连过的WiFi密码。 你还在手动查询自己的电脑连接过得WiFi密码吗&#xff1f; —————【下 载 地 址】——————— 【本章单下载】&#xff1a;https://drive.uc.cn/s/dbbedf933dad4 【百款黑科技】&#xff1a;https://ucnygalh6…

开目新一代MOM:AI赋能高端制造的破局之道

导读 INTRODUCTION 在高端制造业智能化转型的深水区&#xff0c;企业正面临着个性化定制、多工艺场景、动态生产需求的敏捷响应以及传统MES柔性不足的考验……在此背景下&#xff0c;武汉开目信息技术股份有限公司&#xff08;简称“开目软件”&#xff09;正式发布新一代开目…