Sql 如何使用“更新zset分数”;where子句;在redis
在MySQL中:Sql 如何使用“更新zset分数”;where子句;在redis,sql,database,redis,Sql,Database,Redis,在MySQL中: update zset.1 set score = score + 10 where value = 1 and score > 100 这意味着它不会更新,除非分数是gt 100 在Redis和程序代码中: score = zscore zset.1 1 if (score > 100) { score = zincrby zset.1 10 1 } 这应该是可行的,但它不是原子的。同时更新时,分数将更新多次 另外,“WATCH”不适合我的情况,因为它的重
update zset.1 set score = score + 10 where value = 1 and score > 100
这意味着它不会更新,除非分数是gt 100
在Redis和程序代码中:
score = zscore zset.1 1
if (score > 100) {
score = zincrby zset.1 10 1
}
这应该是可行的,但它不是原子的。同时更新时,分数将更新多次
另外,“WATCH”不适合我的情况,因为它的重试机制将是一个性能问题。有两种方法:
- 使用Redis
/multi()
组合以原子方式执行一系列Redis调用李>exec()
- 写一个Lua脚本。有关更多信息,请参阅