Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过C给出TTL后Couchbase密钥不导出#_C#_.net_Couchbase - Fatal编程技术网

C# 通过C给出TTL后Couchbase密钥不导出#

C# 通过C给出TTL后Couchbase密钥不导出#,c#,.net,couchbase,C#,.net,Couchbase,我使用的是Couchbase的C#driver提供的原子“Increment”函数,它接受一个参数作为时间跨度传递到期日 我将expiry参数中的值作为TimeSpan.frommins(value)传递,但在刷新couchbase web控制台后,密钥在设置的时间后不会被删除 下面是示例代码 IOperationResult<ulong> incrementResult; incrementResult = myBucket.Increment(strKeyName, 1,

我使用的是Couchbase的C#driver提供的原子“Increment”函数,它接受一个参数作为时间跨度传递到期日

我将expiry参数中的值作为TimeSpan.frommins(value)传递,但在刷新couchbase web控制台后,密钥在设置的时间后不会被删除

下面是示例代码

 IOperationResult<ulong> incrementResult;

 incrementResult = myBucket.Increment(strKeyName, 1, 1,TimeSpan.FromMinutes(dblTTL));
IOperationResult incrementResult;
incrementResult=myBucket.Increment(strKeyName,1,1,TimeSpan.frommins(dblTTL));
在上述代码中,变量“dblTTL”是TimeSpan变量的Minute属性

.NET Sdk版本-2.0, Couchbase Dll版本-2.0.3.0


在此问题上的任何帮助都将不胜感激

没关系,我刚刚想出了解决办法

  • 我使用了TimeSpan.TotalMinutes属性,而不是TimeSpan.Minutes,因为TotalMinutes以双精度返回值,精确到最接近的毫秒,而Minutes仅以整数形式返回总持续时间的分钟部分

  • 其次,最初创建的密钥没有使用原子函数increment()设置TTL,但后来尝试increment()时,现在通过传递TTL值创建的同一密钥没有使密钥过期


  • 因此,如果我必须使用原子increment()函数将TTL设置为任何键,我必须确保在第一次创建该键时设置其TTL,而不是在以后更新其值时设置该键。

    您使用的是.Net SDK的哪个版本?当你说它没有被删除时,你是如何看待这个对象的?我的问题是,当TTL过期时,Couchbase会将其标记为删除,并且在下一个清理周期它将被删除。但是仍然可以在控制台中看到它。另外,您将值设置为什么?@Kirk-已经更新了我上面的答案@柯克-我找到了解决方案,检查我的答案,谢谢你的帮助!