// ^^^ if true: it was applied; if false: it was rolled back
Note that the object returned from `CreateTransaction` only has access to the *async* methods - because the result of
each operation will not be known until after `Execute` (or `ExecuteAsync`) has completed. If the operations are not applied, all the `Task`s
will be marked as cancelled - otherwise, *after* the command has executed you can fetch the results of each as normal.
The set of available *conditions* is not extensive, but covers the most common scenarios; please contact me (or better: submit a pull-request) if
there are additional conditions that you would like to see.
Inbuilt operations via `When`
---
It should also be noted that many common scenarios (in particular: key/hash existence, like in the above) have been anticipated by Redis, and single-operation
atomic commands exist. These are accessed via the `When` parameter - so our previous example can *also* be written as:
(here, the `When.NotExists` causes the `HSETNX` command to be used, rather than `HSET`)
Lua
---
You should also keep in mind that Lua scripting is a versatile tool for performing multiple operations as a single atomic unit at the server; since no other connections
are serviced during a Lua script it behaves much like a transaction, but without the complexity of `MULTI` / `EXEC` etc.