sql >> Database teknologi >  >> NoSQL >> Redis

Sådan læser du flere sæt gemt på Redis ved hjælp af en kommando eller et LUA-script

Eksempel på C#-koden til at få mange SET'er i et enkelt opkald er som følger:Jeg bruger StackExchange.Redis som en Redis-forbindelse:

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

}

Jeg håber, det vil hjælpe C#-udviklerne, der leder efter løsningen. Tak til Mgravell fra SE.Redis udviklerteam for at hjælpe mig med hans forslag. Mere diskussion kan findes her på GitHub Sådan får du flere sæt ved at sende sæt nøgleliste i et enkelt opkald



  1. Selleri giver forbindelsesnulstilling af peer

  2. Mongoose/MongoDB resultatfelter vises udefinerede i Javascript

  3. Hvordan gemmer man kun én database i Redis?

  4. Opretter forbindelse til Redis, der kører i Docker Container fra værtsmaskine