sql >> Databáze >  >> NoSQL >> Redis

Vlastní příkazy Redis

Většinu času, kdy čekáte na použití nového příkazu Redis, budete muset počkat na aktualizovanou verzi ServiceStack.Redis Chcete-li přidat podporu pro nové příkazy, jsou chvíle, kdy Redis Client nenabízí všechny permutace, které redis-server podporuje.

S novým Custom a RawCommand Rozhraní API na IRedisClient a IRedisNativeClient nyní můžete použít RedisClient k odesílání vlastních vlastních příkazů, které mohou volat adhoc příkazy Redis:

public interface IRedisClient
{
    ...
    RedisText Custom(params object[] cmdWithArgs);
}

public interface IRedisNativeClient
{
    ...
    RedisData RawCommand(params object[] cmdWithArgs);
    RedisData RawCommand(params byte[][] cmdWithBinaryArgs);
}

Tato vlastní rozhraní API mají flexibilní object[] argumenty, které akceptují jakoukoli serializovatelnou hodnotu, např. byte[] , string , int stejně jako jakékoli uživatelem definované komplexní typy, které jsou transparentně serializovány jako JSON a posílané po drátě jako UTF-8 bajtů.

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"

Na RedisData jsou také pohodlné metody rozšíření a RedisText které usnadňují přístup ke strukturovaným datům, např.:

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"]

a některé další příklady použití komplexních typů s uživatelskými rozhraními API:

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

Toto rozhraní API se používá ve většině klientské knihovny redis.js JavaScript uživatelského rozhraní Redis React, kde jsou příkazy serveru Redis zpřístupněny prostřednictvím jediné služby ServiceStack:

public object Any(CallRedis request)
{
    var args = request.Args.ToArray();
    var response = new CallRedisResponse { Result = Redis.Custom(args) };
    return response;
}

  1. Ukládání hesel pomocí Node.js a MongoDB

  2. Možnost generování duplicitních Mongo ObjectId ve dvou různých kolekcích?

  3. Docker mongo obrázek 'Spojení odmítnuto' z jiného kontejneru

  4. MongoDB:mongoimport ztratí připojení při importu velkých souborů