当前位置: 首页 > 知识库问答 >
问题:

Redis中带有读操作的事务

高运诚
2023-03-14

基本上,以原子方式,我需要执行以下操作:

  1. 从数据库读取X
  2. 根据x,将f(x)存储到数据库中。

都是1。和2。应该是单个原子事务的一部分。

有没有一个简单的方法可以做到这一点?

共有1个答案

穆文斌
2023-03-14

你的问题有两个很好的解决办法

备选办法1:

您需要对正在读取的密钥发出监视。您的事务如下所示:

WATCH x
x = GET x
MULTI
SET y, f(x)
EXEC
 类似资料:
  • 本文向大家介绍python实现redis三种cas事务操作,包括了python实现redis三种cas事务操作的使用技巧和注意事项,需要的朋友参考一下 cas全称是compare and set,是一种典型的事务操作。 简单的说,事务就是为了存取数据库中同一数据时不破坏操作的隔离性和原子性,从而保证数据的一致性。 一般数据库,比如MySql是如何保证数据一致性的呢,主要是加锁,悲观锁。比如在访问数

  • 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如: 自动控制事务处理 Db::transaction(function(){ Db::name('user')->find(1); Db::name('user')->delet

  • 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如: 自动控制事务处理 Db::transaction(function(){ Db::name('user')->find(1); Db::name('user')->delet

  • 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 最简单的方式是使用 transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚,例如: Db::transaction(function () { Db::table('think_user')->find(1); Db::table(

  • 我正在研究RxJava,为此我正在使用SQLite,编写一个帮助类,以便更容易地处理异步ContentResolver查询。例如,这是方法: 其中是接口: 我读过有关调度器的文档,但我不太确定是否是正确的选择。 如果我想为基本的操作实现类似的操作,我应该选择哪种调度程序?或,我会坚持使用...但不确定。 提前道谢。 万事如意,卢卡

  • 我是Spark结构化流处理的新手,目前正在处理一个用例,其中结构化流应用程序将从Azure IoT中心-事件中心(例如每20秒)获取事件。 任务是使用这些事件并实时处理。为此,我在下面用Spark Java编写了Spark结构化流媒体程序。 以下是要点 目前我已经应用了10分钟间隔和5分钟滑动窗口的窗口操作。 水印被应用在以10分钟间隔的eventDate参数上。 目前,我没有执行任何其他操作,只