Transaction Management
Kronotop exposes the FoundationDB API to Redis clients. This section explains transaction management commands.
Note: Not all parts of the FoundationDB API are implemented yet
Commands
BEGIN
BEGIN creates a new transaction and set it to the current session.
Syntax
BEGIN
Example:
127.0.0.1:5484> BEGIN
OK
Error Cases
If there is another transaction in progress in the current session, it returns a TRANSACTION error message.
127.0.0.1:5484> BEGIN
(error) TRANSACTION there is already a transaction in progress.
COMMIT
COMMIT commits changes to the database.
Syntax
COMMIT
Example:
127.0.0.1:5484> COMMIT
OK
Error Cases
FoundationDB currently does not support transactions running for over five seconds. If the transaction is too old,
it returns TRANSACTIONOLD error.
127.0.0.1:5484> COMMIT
(error) TRANSACTIONOLD transaction is too old to perform reads or be committed
If there is no transaction in progress in the current session, it returns TRANSACTION error.
127.0.0.1:5484> COMMIT
(error) TRANSACTION there is no transaction in progress.
ROLLBACK
ROLLBACK cancels the current session's in-progress transaction.
Syntax
ROLLBACK
Example:
127.0.0.1:5484> ROLLBACK
OK
Error Cases
If no transaction is in progress in the current session, it returns a TRANSACTION error message.
127.0.0.1:5484> ROLLBACK
(error) TRANSACTION there is no transaction in progress.
GETAPPROXIMATESIZE
GETAPPROXIMATESIZE returns the approximated size of the commit, which is the summation of mutations, read conflict
ranges,
and write conflict ranges. This can be called multiple times before a transaction commit.
Syntax
GETAPPROXIMATESIZE
Example
127.0.0.1:5484> GETAPPROXIMATESIZE
(integer) 619
GETREADVERSION
GETREADVERSION returns the version at which the reads for the in-progress transaction will access the database.
Syntax
GETREADVERSION
Example
127.0.0.1:5484> GETREADVERSION
16275608010704
SNAPSHOTREAD
SNAPSHOTREAD enables or disables snapshot reads for the in-progess transaction.
In the FoundationDB context, snapshots are special-purpose, read-only view of the database. Reads done through this interface are known as "snapshot reads." Snapshot reads selectively relax FoundationDB's isolation property, reducing Transaction conflicts but making reasoning about concurrency harder. For more information about how to use snapshot reads correctly, see Using snapshot reads.
Syntax
SNAPSHOTREAD <argument>
Arguments
ONOFF
Example:
127.0.0.1:5484> SNAPSHOTREAD ON
OK