memcache的demo代码(java实现)

news/2024/11/8 23:03:36/

以下是一个详细的Java示例代码,用于使用Memcached进行缓存操作:

首先,您需要在Java项目中添加对spymemcached库的依赖项。您可以使用Maven或Gradle等构建工具添加以下依赖项:

Maven依赖项(将以下代码添加到pom.xml文件中):

<dependencies><dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.3</version></dependency>
</dependencies>

Gradle依赖项(将以下代码添加到build.gradle文件中):

dependencies {implementation 'net.spy:spymemcached:2.12.3'
}

接下来,您可以使用以下示例代码来连接到Memcached服务器并进行缓存操作:

import net.spy.memcached.MemcachedClient;
import net.spy.memcached.AddrUtil;public class MemcachedDemo {public static void main(String[] args) {try {// 创建MemcachedClient实例,连接到Memcached服务器MemcachedClient memcachedClient = new MemcachedClient(AddrUtil.getAddresses("localhost:11211"));// 设置缓存项memcachedClient.set("key1", 3600, "value1");memcachedClient.set("key2", 3600, "value2");memcachedClient.set("key3", 3600, "value3");// 获取缓存项String value1 = (String) memcachedClient.get("key1");String value2 = (String) memcachedClient.get("key2");String value3 = (String) memcachedClient.get("key3");System.out.println("Value1: " + value1);System.out.println("Value2: " + value2);System.out.println("Value3: " + value3);// 删除缓存项memcachedClient.delete("key1");memcachedClient.delete("key2");memcachedClient.delete("key3");// 关闭连接memcachedClient.shutdown();} catch (Exception e) {e.printStackTrace();}}
}

在上述示例代码中,我们使用MemcachedClient类连接到本地Memcached服务器(默认端口为11211)。您可以根据实际情况更改服务器地址和端口。

我们使用set方法设置缓存项,并指定过期时间为3600秒(1小时)。然后,使用get方法获取缓存项的值,并将其打印到控制台。

最后,我们使用delete方法删除缓存项,并调用shutdown方法关闭与Memcached服务器的连接。

请确保您的Java项目已正确配置依赖项,并根据需要更改服务器地址和端口。执行示例代码时,确保Memcached服务器正在运行并处于可访问状态。



以下是更多使用Java实现的Memcached示例代码:

  1. 添加多个缓存项和批量获取:
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.AddrUtil;
import java.util.Map;public class MemcachedDemo {public static void main(String[] args) {try {MemcachedClient memcachedClient = new MemcachedClient(AddrUtil.getAddresses("localhost:11211"));// 添加多个缓存项memcachedClient.set("key1", 3600, "value1");memcachedClient.set("key2", 3600, "value2");memcachedClient.set("key3", 3600, "value3");// 批量获取缓存项Map<String, Object> values = memcachedClient.getBulk("key1", "key2", "key3");for (Map.Entry<String, Object> entry : values.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());}memcachedClient.shutdown();} catch (Exception e) {e.printStackTrace();}}
}
  1. 使用CAS(Compare-and-Swap)操作更新缓存项:
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.AddrUtil;
import net.spy.memcached.CASValue;
import net.spy.memcached.CASResponse;public class MemcachedDemo {public static void main(String[] args) {try {MemcachedClient memcachedClient = new MemcachedClient(AddrUtil.getAddresses("localhost:11211"));// 设置初始缓存项memcachedClient.set("key", 3600, "value");// 使用CAS操作更新缓存项CASValue<Object> casValue = memcachedClient.gets("key");CASResponse casResponse = memcachedClient.cas("key", casValue.getCas(), "new value");System.out.println("CAS Response: " + casResponse);memcachedClient.shutdown();} catch (Exception e) {e.printStackTrace();}}
}

这些示例展示了更多Memcached的用法。您可以根据需求进行适当的修改和扩展。请确保在运行示例代码之前,已正确配置Memcached服务器和相关依赖项,并确保服务器正在运行。


http://www.ppmy.cn/news/109964.html

相关文章

【2023】华为OD机试真题全语言-题目0242-天然蓄水库

题目0242-天然蓄水库 题目描述 公元2919年,人类终于发现了一颗宜居星球——X星。 现想在X星一片连绵起伏的山脉间建一个天热蓄水库,如何选取水库边界,使蓄水量最大? 要求: 山脉用正整数数组s表示,每个元素代表山脉的高度。选取山脉上两个点作为蓄水库的边界,则边界内…

在vue中集成高德地图amap-jsapi-loader

前往高德地图开发平台高德开放平台 | 高德地图API 一&#xff1a;申请高德key 去高德官网去创建一个属于自己的地图应用 &#xff08;得到key和秘钥&#xff09; 。 首先&#xff0c;我们要注册一个开发者账号&#xff0c;根据实际情况填写&#xff0c;身份写个人&#xff1a;…

【SpringCloud——Elasticsearch(上)】

一、什么是Elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 二、倒排索引 1、正向索引 2、倒排索引 3、总结 三、ES和MySQL的区别 四、操作索引库 1、基于Kibana&#xff08;WEB界面&#xff09; 以下操作…

[GXYCTF2019]Ping Ping Ping解题过程

1、来看看靶场 发现就只有这个提示&#xff0c;尝试一下在url输入框进行测试 页面返回ping的结果&#xff0c;然后我之前也做过另外一道类似的题 链接&#xff1a;[ACTF2020 新生赛]Exec1命令注入_[actf2020 新生赛]exec 1_旺仔Sec的博客-CSDN博客 尝试用管道符 果然是可以的…

进步之魂:致敬科技工作者!

在科技的舞台上&#xff0c;技术人员如同一束明亮的光芒&#xff0c;照亮着人类前进的道路。他们是创造者&#xff0c;是传递者&#xff0c;默默无闻地工作在科技的前线&#xff0c;将智慧和汗水交织成一道奇迹般的桥梁&#xff0c;将人与人、人与世界紧密地连接在一起。时代的…

项目文件模板-项目建议书

文章目录 第一章 项目简介第二章 项目建设单位概况第三章 项目建设的必要性第四章 业务分析第五章 总体建设方案第六章 本期项目建设方案第七章 环保 消防 职业安全第八章 项目实施进度第九章 投资估算和资金筹措第十章 效益与风险分析 第一章 项目简介 项目名称 项目建设单位…

【C++】函数高级 - 默认参数,占位参数,函数重载基本语法,函数重载注意事项

No.Contents1【C】基础知识 - HelloWorld&#xff0c;注释&#xff0c;变量&#xff0c;常量&#xff0c;关键字&#xff0c;标识符2【C】数据类型 - 整型&#xff0c;sizeof&#xff0c;实型&#xff0c;字符型&#xff0c;转义字符&#xff0c;字符串类型&#xff0c;布尔类型…

Jimmer VS MyBatisPlus查询自关联表

首发于Enaium的个人博客 本文是对Jimmer文档中对象抓取器-自关联递归抓取部分的介绍,之后会对比MyBatisPlus的查询自关联表的能力。 对象抓取器是 jimmer-sql 一个非常强大的特征&#xff0c;具备可媲美 GraphQL 的能力。 即使用户不采用任何 GraphQL 相关的技术栈&#xff0c;…