Sebagian besar waktu saat menunggu untuk menggunakan Perintah Redis baru, Anda harus menunggu versi terbaru ServiceStack.Redis untuk menambahkan dukungan untuk perintah baru juga ada kalanya Redis Client tidak menawarkan setiap permutasi yang didukung redis-server.
Dengan Custom baru dan RawCommand API di IRedisClient dan IRedisNativeClient Anda sekarang dapat menggunakan RedisClient untuk mengirim perintah kustom Anda sendiri yang dapat memanggil perintah Redis adhoc:
public interface IRedisClient
{
...
RedisText Custom(params object[] cmdWithArgs);
}
public interface IRedisNativeClient
{
...
RedisData RawCommand(params object[] cmdWithArgs);
RedisData RawCommand(params byte[][] cmdWithBinaryArgs);
}
API Khusus ini mengambil object[] yang fleksibel argumen yang menerima nilai serial apa pun, mis. byte[] , string , int serta Jenis Kompleks yang ditentukan pengguna yang diserialisasikan secara transparan sebagai JSON dan dikirim melalui kabel sebagai byte UTF-8.
var ret = Redis.Custom("SET", "foo", 1); // ret.Text = "OK"
byte[] cmdSet = Commands.Set;
ret = Redis.Custom(cmdSet, "bar", "b"); // ret.Text = "OK"
ret = Redis.Custom("GET", "foo"); // ret.Text = "1"
Ada juga metode ekstensi yang nyaman di RedisData dan RedisText yang memudahkan untuk mengakses data terstruktur, misalnya:
var ret = Redis.Custom(Commands.Keys, "*");
var keys = ret.GetResults(); // keys = ["foo", "bar"]
ret = Redis.Custom(Commands.MGet, "foo", "bar");
var values = ret.GetResults(); // values = ["1", "b"]
Enum.GetNames(typeof(DayOfWeek)).ToList()
.ForEach(x => Redis.Custom(Commands.RPush, "DaysOfWeek", x));
ret = Redis.Custom(Commands.LRange, "DaysOfWeek", 1, -2);
var weekDays = ret.GetResults();
weekDays.PrintDump(); // ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
dan beberapa contoh lainnya menggunakan Jenis Kompleks dengan API Khusus:
var ret = Redis.Custom(Commands.Set, "foo", new Poco { Name = "Bar" }); // ret.Text = "OK"
ret = Redis.Custom(Commands.Get, "foo"); // ret.Text = {"Name":"Bar"}
Poco dto = ret.GetResult<Poco>();
dto.Name.Print(); // Bar
API ini digunakan di sebagian besar pustaka klien JavaScript redis.js UI Redis React di mana perintah server Redis tersedia melalui Layanan ServiceStack tunggal:
public object Any(CallRedis request)
{
var args = request.Args.ToArray();
var response = new CallRedisResponse { Result = Redis.Custom(args) };
return response;
}