sql >> Databasteknik >  >> NoSQL >> Redis

Hur man läser flera uppsättningar lagrade på Redis med hjälp av något kommando eller LUA-skript

Exempel C#-koden för att få många SET i ett enda samtal är följande:Jag använder StackExchange.Redis som en Redis-anslutare:

using StackExchange.Redis;
using System;
using System.Text;

namespace RedisGetMultipleKeys
{
/// <summary>
/// Class to perofrme operations on SE.Redis
/// </summary>
class Program
{
    /// <summary>
    /// Executes necessary pre-requisites 
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {

        //Connect Redis
        var _cache = Program.Connect();

        //Store 10k Sets
        string prefix = "user";
        StringBuilder keys = new StringBuilder();
        for (int i = 0; i < 10000; i++)
        {
            keys.Append(" " + prefix + i);
            _cache.SetAdd(prefix + i, i);
        }

        var keyList = new RedisKey[10000];
        //Generate keys array
        for (int i = 0; i < 10000; i++)
        {
            var key = new RedisKey();
            key = prefix + i;
            keyList.SetValue(key, i);
        }

        var startTime = DateTime.Now;
        //Perform SUNION
        var values = _cache.SetCombine(SetOperation.Union, keyList);

        var endTime = DateTime.Now;
        TimeSpan diff = endTime.Subtract(startTime);

        Console.WriteLine("total time taken to read 10k keys = " + diff);
        Console.Read();

        //TODO: to be changed accordingly to read Set values returned other than String
        foreach (var value in values)
        {
            Console.WriteLine(value.ToString());
        }

        endTime = DateTime.Now;
        diff = endTime.Subtract(startTime);

        Console.WriteLine("total time taken to read 10k keys = " + diff);
        Console.Read();

    }


    /// <summary>
    /// Connects to Redis db
    /// </summary>
    /// <returns>Returns an instance of Redis db</returns>
    private static IDatabase Connect()
    {
        string redisConnection = "localhost:6379,ssl=false,allowAdmin=true,ConnectRetry=3,ConnectTimeout=5000,defaultDatabase=1";
        ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(redisConnection);
        return connection.GetDatabase();
    }
}

}

Jag hoppas att det kommer att hjälpa C#-utvecklarna som letar efter lösningen. Tack till Mgravell från SE.Redis utvecklingsteam för att du hjälpte mig med hans förslag. Mer diskussion kan hittas här på GitHub Hur man får flera uppsättningar genom att skicka uppsättningsnyckellistan i ett enda samtal



  1. MongoDB kapslad ELLER/OCH var?

  2. Hur infogar man om det inte finns annars uppdaterar man med mongoengine?

  3. Vad är syftet med kolon inom Redis-nycklar

  4. Redis benchmarking för hget- och hset-kommandon