OCS支持新命令:GAT(getAndTouch)以及flush

简介:

 

基于用户的反馈和需求,OCS近日新增加了对两个Memcached命令的支持:GAT(getAndTouch)以及flush。

 

首先来看GAT(getAndTouch)命令。它能够在获取数据的同时更新该数据的过期时间,其用法为:getAndTouch(String key, int newExpTime)

 

这个命令不属于标准Memcached协议中定义的操作,但是在用户使用中,却有着一定的实际意义。通过使用该命令,我们可以更合理有效地利用OCS的缓存空间,使缓存里始终存储的都是真正的热点数据。目前JAVA SPY和JAVA XMEMCACHED客户端已经支持此命令。

 

Java程序示例片段如下:

 

         mc.set(“myKey”, 5, “value”);//将数据首次set进OCS

        while (true) {

           //在取回该数据的同时,将其过期时间更新为2秒后

           System.out.println(“GAT:” + mc.getAndTouch(“myKey”, 2));

          //暂停半秒。模拟在实际业务中,此数据每隔半秒被访问一次

          Thread.sleep(500);

     }

在上述代码中可以看见,每次通过getAndTouch读取数据的同时都更新了它的过期时间为2秒后。所以当该数据被频繁访问时(2秒之内被不断访问),它将始终不过期;在实际业务使用中,如果该数据的访问频率降低(2秒之内没有被访问),它将会自动过期被淘汰出OCS缓存。

 

另外一个为flush命令。它属于Memcached标准协议定义的操作,各主流客户端支持此命令。该命令的功能是清除用户当前的OCS缓存实例内所有的数据及统计信息。之前OCS用户是通过在控制台上点击“清空缓存”按钮来实现此功能,现在则可以通过命令方式实现。用法也非常简单:ocs_cache.flush()即可。

 

在实现上,OCS与Memcached一样,flush命令是将所有数据标识为expired,并不会真正的立刻释放已有数据的内存,而是用存入的新数据重用那些内存,逐步清理缓存中原有过期数据。需要指出的是,OCS完成此命令的时间精度约为1秒以内。在使用中需要注意如下情况:

ocs_cache.flush();

ocs_cache.set(“key”, 0, “value”);

ocs_cache.get(“key”); //这里可能返回NOT FOUND

在这个例子中,第二行set命令执行的时间点和第一行flush命令在同一个自然秒内,则该数据可能会被flush清理,以至于第三行的get无法取得该数据。这种情况需要在程序中注意避免。

 

相关文章
|
存储 关系型数据库 MySQL
OceanBase数据库 与 mysql 对比
OceanBase数据库 与 mysql 对比
5435 1
|
3月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
10月前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
202 2
|
11月前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
Java Linux 测试技术
Maven命令大全:从安装到部署,一篇文章带你玩转Maven
本文由木头左介绍Maven,一个用于Java项目管理的工具,涉及Maven的安装配置(Windows和Linux)及核心命令,包括install、package、compile、clean、deploy、test、verify和site。通过这些命令,可以实现构建、打包、编译、测试、部署和生成项目站点等操作。
|
算法 安全 调度
DES加密算法解析
DES加密算法解析
714 0
|
Java Spring
BeanCreationException: Error creating bean with name ‘configurationPropertiesBeans‘ defined in class
BeanCreationException: Error creating bean with name ‘configurationPropertiesBeans‘ defined in class
973 0
|
XML 缓存 Java
理解 Spring 应用上下文生命周期
前言 Spring 应用上下文(ApplicationContext),是 Spring 应用的核心接口,也是我们常说的 Spring 容器,除了扩展了基础容器 BeanFactory 还提供了更多企业级的特性,如资源管理、事件发布、国际化等。
519 0
理解 Spring 应用上下文生命周期
|
数据可视化 Shell C++
VS Code|你知道VS Code的命令行操作吗
VS Code|你知道VS Code的命令行操作吗
1013 0
VS Code|你知道VS Code的命令行操作吗
|
自然语言处理 算法 Python
基于微博评论的文本情感分析与关键词提取的实战案例~
在评论文本情感分析之前,我们需要将语句通过分词使其成为词语,然后优化分词结果,去掉无关的词语和字符。,以提高文本情感分析的准确度。
1336 0
基于微博评论的文本情感分析与关键词提取的实战案例~