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;
}