Rediska is Redis client for .NET with a focus on flexibility and extensibility.
- Keys, Strings, Transactions, Sets, Server, Lists, HyperLogLog, Hashes and Streams commands
- Async API
- Easy way to handle command response differently
- Easy way to write custom commands, e.g. for Redis modules
- RESP 2 support - allows to build a proxy
- Full set of commands
- Pipelining
- Pub/Sub
- Redis Cluster
- Redis Client Side Caching
NuGet package will be added soon.
The types are in the following namespaces
using Rediska;
using Rediska.Commands.Strings;
var factory = new SimpleConnectionFactory();
var endPoint = new IPEndPoint(IPAddress.Loopback, 6379);
using (var connectionResource = await factory.CreateAsync(endPoint))
{
var connection = connectionResource.Value;
var set = new SET("users:12:score", "50");
await connection.ExecuteAsync(set);
var incr = new INCR("users:12:score");
await connection.ExecuteAsync(incr);
var get = new GET("users:12:score");
var userScore = await connection.ExecuteAsync(get); // 51
}
To interact with Redis server you need a Connection
.
You can get one using a factory. In Rediska, each command represented by a separate
class, so to run a command, you need to instantiate it and then
execute using the connection.
The Connection
class does not implements IDisposable
interface, instead
factory.CreateAsync()
returns a Resource<Connection>
that does. This resource tracks underlying TcpClient
. So you need to disponse the
resource when the connection is no longer needed.
This approach clearly defines who owns the resource.
The GET command replies with a
bulk string - binary safe string.
This kind of reply represented with the class
BulkString. If you are sure that reply contains
a number you can get it's value as follows var number = long.Parse(userScore.ToString())
.
The project currently in active development stage.