RPM*_*984 8 .net c# redis stackexchange.redis
在StackExchange.Redis中,STRING
操作允许设置到期时间,例如:
Task<bool> StringSetAsync(
RedisKey key,
RedisValue value,
TimeSpan? expiry = null,
When when = When.Always,
CommandFlags flags = CommandFlags.None);
Run Code Online (Sandbox Code Playgroud)
为什么SET
操作没有?
Task<long> SetAddAsync(
RedisKey key,
RedisValue[] values,
CommandFlags flags = CommandFlags.None);
Run Code Online (Sandbox Code Playgroud)
基本上,这就是我想要实现的目标:
给定a List<T>
,将项目添加到Redis集(创建或添加到现有),期限为1小时.
我该怎么做?或者我应该序列化List<T>
然后使用StringSet
?
我想使用SET函数SREM
,并将单个项添加到现有SET(而不是重写整个SET),这就是为什么我不想使用STRING
.
有什么建议?
Mar*_*ell 11
对于第一个问题(为什么字符串操作在设置操作时没有可选的到期):这仅仅是因为redis操作暴露的内容 :( SET
特别是使用EX
和PX
修饰符)并且这里SETEX
的字符串操作允许到期被设定.该组操作SADD
不公开任何这样的参数.其中一部分可能是为了避免混淆,即到期将适用于元素,而实际上到期将适用于整个密钥(即整个集合).
那么,你最好的选择是明确设定到期时间; 在redis的水平,这是通过EXPIRE
,EXPIREAT
,PEXPIRE
或PEXPIREAT
; 或者IDatabase
在SE.Redis:KeyExpire
或KeyExpireAsync
.这必须在集合存在之后完成; 如果集合很大并且您要发送多个批次并且想要确保即使在接近结束时窒息也设置了超时,您可能希望在第一批之后发送到期.
归档时间: |
|
查看次数: |
7586 次 |
最近记录: |