Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Cara membaca beberapa Set yang disimpan di Redis menggunakan beberapa perintah atau skrip LUA

Contoh kode C# untuk mendapatkan banyak SET dalam satu panggilan adalah sebagai berikut:Saya menggunakan StackExchange.Redis sebagai konektor Redis:

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

}

Saya harap ini akan membantu pengembang C # mencari solusinya. Terima kasih kepada Mgravell dari tim pengembang SE.Redis karena telah membantu saya dengan sarannya. Diskusi lebih lanjut dapat ditemukan di sini di GitHub Cara mendapatkan beberapa set dengan melewatkan daftar kunci set dalam satu panggilan



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis Database TTL

  2. Cara membuat koneksi Redis dengan Master dan Slave

  3. Laravel Echo Server, Redis, Socket.IO:Sepertinya tidak bisa membuatnya bekerja

  4. Dukungan Redis pada indeks Sekunder

  5. Bagaimana saya bisa melindungi rute /sidekiq saya dengan kata sandi (yaitu memerlukan otentikasi untuk alat Sidekiq::Web)?