kizz 2015-05-04 08:35 采纳率: 0%
浏览 1462

Xmemcached touch命令

这个csdn的问题模块,也太坑爹了,写了半天,我就点了一下Delete下面的方向键左键就
刷没了,害的我又得重新写,我去!行吧。
memcached版本是VERSION 1.4.4-14-g9c660c0
我用的是java客户端,使用的是xmemcached-1.4.3版本的jar包
1.memcachedClient.touch("key", 3000);
2.memcachedClient.getAndTouch("key",4000);

以上是我的方法

一下是报错信息:

1.Caused by: net.rubyeye.xmemcached.exception.UnknownCommandException: Response error,error message:Unknow command TOUCH,key=key

2.Exception in thread "main" net.rubyeye.xmemcached.exception.MemcachedException: net.rubyeye.xmemcached.exception.UnknownCommandException: Response error,error message:Unknow command TOUCH,key=key

google了一下,说是当前memcached版本不支持,但是我这个是最近的了,还是不行。请君赐教

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 19:24
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    touch() 方法在 Memcached 的 1.5 版本中被移除,因为它的行为与预期不符。在 1.5 中,touch() 方法会立即修改计时器值,而不是延迟它到指定时间。这导致一些错误的行为,例如在某些情况下,如果一个键已经设置了计时器,并且没有在等待时间内收到请求,则计时器会被重置为零,而不会继续等待直到超时。

    如果你想要在 Memcached 中设置和更新计时器,请考虑以下替代方案:

    1. 使用 set()inc() 方法来设置计时器。
    MemcachedClient client = new MemcachedClient(new DefaultMemcachedClientConfig.Builder().build());
    client.set("key", "value", 3000);
    
    1. 如果你不需要立即更新计时器值,可以使用 addtimeout() 方法来添加一个超时时间:
    MemcachedClient client = new MemcachedClient(new DefaultMemcachedClientConfig.Builder().build());
    client.addTimeout("key", 3000, TimeUnit.SECONDS);
    

    请注意,这些方法可能会影响其他正在运行的服务或应用程序。在更改 Memcached 计时器之前,请确保进行适当的测试以避免潜在问题。

    评论

报告相同问题?