首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jedis (jedis)事务和排序集

jedis (jedis)事务和排序集
EN

Stack Overflow用户
提问于 2017-02-08 19:27:40
回答 1查看 1.5K关注 0票数 0

我是Redis的新手,我正在试验Redis事务,我想在下面的场景中使用Redis事务。需要知道这样做是否可行:

  1. 开始交易。
  2. 从排序集中读取前10个元素。
  3. 每个元素执行某项操作的“for循环”。
  4. 执行。

我尝试了以下代码,但在执行事务之前,它无法工作,因为我正在执行<Response>.get()

代码语言:javascript
复制
final Transaction tx = jedis.multi();
final Response<Set<Tuple>> tuples = tx.zrangeByScoreWithScores("randomKey", 0d, 100, 0, 10);
for (final Tuple tuple : tuples.get()) {
    jedis.incr(tuple);
}
tx.exec(); //In a hope that get and sets happen in a single transaction.

有办法绕过这件事吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 07:58:01

你可以用雷迪森代替。使用Lock对象而不是事务。例如,您的案例:

代码语言:javascript
复制
RLock lock = redisson.getLock("myLock");
lock.lock();
try {
    Collection<ScoredEntry<V>> entries = redisson.getScoredSortedSet("randomKey").entryRange(true, 0, true, 100, 0, 10);
    for (final ScoredEntry<V> entry : entries) {
       redisson.getAtomicLong(entry.getValue()).incrementAndGet();
    }
} finally {
    lock.unlock();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42121967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档