website/docs/welcome/compatibility.md
Garnet is a cache-store with a new thread-scalable system architecture. The network, processing, and storage (memory
and disk/cloud) layers of Garnet are all designed from the ground up. We chose the RESP API as a matter of
convenience given its broad adoption in the community. Garnet is not intended to be a 100% perfect drop-in
replacement for Redis, rather it should be regarded as a close-enough starting point for you to ensure compatibility
for features that matter to you. Garnet does work unmodified with many Redis clients (we have in particular tested
Garnet with StackExchange.Redis very well), so getting started is very easy.
A list of API calls supported today by Garnet is maintained here. Below we highlight specific non-API-related choices that may not be compatible. This list is not exhaustive, rather it is meant as a broad guideline on what differences you can expect when using Garnet.
MSET is not atomic. For an atomic version of MSET, you would need to express
it as a transaction (stored procedure). This is easily fixable, similar to MSETNX here, let us know in issues if you
prefer the atomic semantics of MSET by default.--lua switch.EnableScatterGatherGet [--sg-get] option) for increased disk performance, then
even though results are still returned in FIFO order, the read operations may be executed out-of-order to earlier
write operations in the same input operation sequence.WaitForCommit [--aof-commit-wait] option, while the frequency of
commit can be tuned using the CommitFrequencyMs [--aof-commit-freq] option.DisableObjects [--no-obj]. The
storage tier is disabled by default, and you can enable it using EnableStorageTier [--storage-tier]. You can disable the pub-sub feature
using the option DisablePubSub [--no-pubsub].