Клиент StackExchange.Redis на самом деле не имеет транзакций в традиционном смысле. У него немного другая функция, которую можно использовать для тех же целей. Вы можете прочитать об этом в их документации здесь .
По сути, вы утверждаете предварительное условие, которое должно быть истинным во время выполнения операции для ее завершения. У них есть объект ITransaction
, для которого вы устанавливаете условия и пытаетесь выполнить операцию, вместо того, чтобы действовать непосредственно на базу данных:
let key1 = RedisKey.op_Implicit "a"
let key2 = RedisKey.op_Implicit "b"
let value1 = RedisValue.op_Implicit "1"
let value2 = RedisValue.op_Implicit "2"
let transaction = db.CreateTransaction()
transaction.AddCondition(Condition.KeyNotExists(key1))
transaction.AddCondition(Condition.KeyNotExists(key2))
transaction.StringSetAsync(key1, value1) |> ignore
transaction.StringSetAsync(key2, value2) |> ignore
let committed = transaction.Execute()
Затем вы можете проверить, была ли совершена транзакция, чтобы увидеть, были ли ваши ключи вставлен или если откат операции завершен.