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 OLTP
[MySQL FAQ]系列 — 为什么要关闭query cache,如何关闭
[MySQL FAQ]系列 — 为什么要关闭query cache,如何关闭
119 0
|
SQL 存储 缓存
[MySQL FAQ]系列 — 线上环境到底要不要开启query cache
[MySQL FAQ]系列 — 线上环境到底要不要开启query cache
|
关系型数据库 MySQL 程序员
FAQ系列 | InnoDB Monitor被自动打开
FAQ系列 | InnoDB Monitor被自动打开
|
8月前
|
存储 监控 Linux
百度搜索:蓝易云【Linux系统Memcached性能优化详细教程。】
请注意,Memcached性能优化是一个综合性的过程,需要根据具体的应用程序和服务器环境进行调整。建议在进行任何更改之前,备份配置文件并进行性能测试。
233 0
|
SQL Oracle 关系型数据库
Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
907 0
Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
Lambda 实战-两个不同的集合合并成一个新的集合
Lambda 实战-两个不同的集合合并成一个新的集合
359 0
|
域名解析 存储 供应链
MongoDB 4.2 内核解析 - Change Stream
本文将为大家讲解 MongoDB 4.2 的 Change Stream 功能,接下来将分别从其功能、使用以及内部实现进行详细介绍。
933 0
MongoDB 4.2 内核解析 - Change Stream
visualsvn server 提交修改日志
修改日志时遇到以下错误: Repository has not been enabled to accept revision propchanges;ask the administrator to create a pre-revprop-change hook 解决办法如下: 同一,在某个库的属性页面的Hooks选项卡下找到Pre-revision property change hook,双击修改其内容。
1809 0
|
监控 Linux 网络安全
远程文件同步详解(Remote File Sync)
1. 远程文件同步的常见方式: 1、cron + rsync 优点: 简单 缺点:定时执行,实时性比较差;另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。
3055 0