नए रेडिस कमांड का उपयोग करने की प्रतीक्षा करते समय अधिकांश समय आपको ServiceStack.Redis के एक अद्यतन संस्करण की प्रतीक्षा करनी होगी। नए कमांड के लिए समर्थन जोड़ने के लिए ऐसे समय होते हैं जब रेडिस क्लाइंट रेडिस-सर्वर द्वारा समर्थित हर क्रमपरिवर्तन की पेशकश नहीं करता है।
नए Custom
. के साथ और RawCommand
IRedisClient
पर एपीआई और IRedisNativeClient
अब आप अपने स्वयं के कस्टम कमांड भेजने के लिए RedisClient का उपयोग कर सकते हैं जो एडहॉक रेडिस कमांड को कॉल कर सकते हैं:
public interface IRedisClient
{
...
RedisText Custom(params object[] cmdWithArgs);
}
public interface IRedisNativeClient
{
...
RedisData RawCommand(params object[] cmdWithArgs);
RedisData RawCommand(params byte[][] cmdWithBinaryArgs);
}
ये कस्टम API एक सुविधाजनक object[]
take लेते हैं तर्क जो किसी भी क्रमबद्ध मूल्य को स्वीकार करते हैं उदा। byte[]
, string
, int
साथ ही किसी भी उपयोगकर्ता द्वारा परिभाषित जटिल प्रकार जो पारदर्शी रूप से JSON के रूप में क्रमबद्ध होते हैं और पूरे तार को 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"
RedisData
. पर सुविधाजनक विस्तार विधियां भी हैं और RedisText
जो संरचित डेटा तक पहुंचना आसान बनाते हैं, उदा:
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"]
और कस्टम एपीआई के साथ कॉम्प्लेक्स टाइप्स का उपयोग करने वाले कुछ और उदाहरण:
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
इस एपीआई का उपयोग रेडिस रिएक्ट यूआई के रेडिस.जेएस जावास्क्रिप्ट क्लाइंट लाइब्रेरी में किया जाता है, जहां रेडिस सर्वर कमांड एकल सर्विसस्टैक सेवा के माध्यम से उपलब्ध कराए जाते हैं:
public object Any(CallRedis request)
{
var args = request.Args.ToArray();
var response = new CallRedisResponse { Result = Redis.Custom(args) };
return response;
}