Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách đọc nhiều Bộ được lưu trữ trên Redis bằng một số lệnh hoặc tập lệnh LUA

Mã C # mẫu để nhận nhiều SET trong một lệnh gọi như sau:Tôi đang sử dụng StackExchange.Redis làm trình kết nối 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();
    }
}

}

Tôi hy vọng nó sẽ giúp các nhà phát triển C # đang tìm kiếm giải pháp. Cảm ơn Mgravell từ nhóm phát triển SE.Redis đã giúp đỡ tôi bằng những gợi ý của anh ấy. Có thể tìm thấy thêm thảo luận tại đây tại GitHub Cách nhận nhiều bộ bằng cách chuyển danh sách khóa bộ trong một lần gọi



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Điểm duy nhất cho bảng thành tích redis

  2. Bình theo Ví dụ - Triển khai Hàng đợi Tác vụ Redis

  3. Chuyển đổi dự phòng với StackExchange / Sentinel từ C #

  4. gradle xây dựng các công trình địa phương. Trong bộ chứa docker thì không. TẠI SAO?

  5. Chèn hàng loạt Redis