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无法取得该数据。这种情况需要在程序中注意避免。

 

相关文章
|
存储 应用服务中间件 调度
在StatefulSet中使用LocalVolume存储卷保持节点一致
StatefulSet是一种有状态服务,其存储卷的使用有多种方式: 使用共享存储,这时在模板中定义一个volume卷,可以给多个pod共享; 每个pod配置独立的存储卷,使用非共享存储(块存储)时需要这样配置,通过配置volumeClaimTemplates实现; 对于StatefulSet使...
4914 0
|
6月前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
127 2
|
7月前
|
人工智能 搜索推荐 区块链
元宇宙:虚拟现实的新纪元
在科技飞速发展的今天,元宇宙(Metaverse)正从科幻走向现实,成为连接物理与数字世界的桥梁。本文将探讨元宇宙的定义、关键技术、现有形态及未来展望,带您领略这一虚拟空间的无限可能。元宇宙利用VR、AR、区块链等技术,构建了一个沉浸式的虚拟世界,用户可通过数字化身自由探索、社交、娱乐、学习和工作。尽管仍处初级阶段,但虚拟会议、数字艺术、游戏娱乐等领域已初现端倪。未来,元宇宙有望成为第二人生、数字商务、创新教育和远程协作的重要平台,同时也面临数据安全、隐私保护等挑战。
|
监控 安全 网络协议
|
机器学习/深度学习 自然语言处理
解析GPT-3、GPT-4和ChatGPT关系-迈向自然语言处理的新高度“
解析GPT-3、GPT-4和ChatGPT关系-迈向自然语言处理的新高度“
458 1
|
芯片
关于JTAG的TRST信号的四则问题?
关于JTAG的TRST信号的四则问题?
521 0
|
IDE 物联网 开发工具
Aurora8B10B IP使用 -02- IP功能设计技巧
Aurora8B10B IP使用 -02- IP功能设计技巧
1187 0
Aurora8B10B IP使用 -02- IP功能设计技巧
|
运维 Kubernetes 网络协议
二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈
1602 0
|
存储 安全 数据处理
阿里云注册商标分类表45类明细表
阿里云商标注册,商标45类明细表解析
1994 0
阿里云注册商标分类表45类明细表
|
弹性计算 云计算
阿里云服务器活动中的计算型c5、c6、c6a、c6e实例有何区别?如何选择?
本文从价格、网络带宽、网络收发包PPS等方面介绍了阿里云计算型c5、c6、c6a、c6e实例的区别及选择建议,可以供新手用户参考选择。
923 0
阿里云服务器活动中的计算型c5、c6、c6a、c6e实例有何区别?如何选择?