如何使用.net enyim增加memcached值?

本文关键字:memcached 增加 enyim 何使用 net | 更新日期: 2023-09-27 18:17:34

互联网上似乎缺乏关于Enyim增量方法的信息或文档。我不太明白它在做什么。文档说明:

 Increment(string key, ulong defaultValue, ulong delta);

"将指定键的值按给定的量递增。操作在服务器上自动发生。"

如果我能让它工作起来,这听起来很好。

虽然没有人有明确的答案,但共识似乎是,如果键不存在于memcached中,该方法应该将值设置为给定的默认值。但是,我无论如何也不能得到一个键来存储为默认值。

我不想使用(store + increment)组合,因为它需要在多服务器架构中使用,而且我不能保证操作是原子的。

关于如何成功地增加memcached键的值有什么想法或指针吗?一个额外的好处是,默认值也有一个生存时间。

编辑:我在"文本"answers"二进制"协议中都试过了,似乎无法让它在任何一种设置中设置默认值。

提前感谢您的帮助!

如何使用.net enyim增加memcached值?

这篇文章可能有点老了,但这里是使用Enyim memcacheD处理增量命令的代码片段。

        client.Store(StoreMode.Set, "mykey", "5");
        var incrementedValue = client.Increment("mykey", 2, 1);

在上面的例子中,键的初始值mykey被设置为5。请注意,该值必须是字符串格式的整数("5"不是5)。

第二行将值增加1。如果键不存在,则将值设置为2,而不加1。

下面的代码片段使用TTL重载。

            //initial set, considering that the key did not exist before, the value will be 5
            //and it will be valid for 6 seconds
            var initialValue = client.Increment("mykey", 5, 1, TimeSpan.FromSeconds(6));
            Console.WriteLine(initialValue); //5
            //this will increament the value by 1, keeps it in cache for 10 seconds
            var incremented = client.Increment("mykey", 5, 1, TimeSpan.FromSeconds(10));
            var cachedData = client.Get("mykey");
            Console.WriteLine(cachedData); //6
            Thread.Sleep(11*1000);
            var cachedData_afterExpiry = client.Get("mykey");
            Console.WriteLine(cachedData_afterExpiry??"NULL");//this should be null