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

Lệnh tùy chỉnh của Redis

Thông thường khi chờ sử dụng Lệnh Redis mới, bạn sẽ cần đợi phiên bản cập nhật của ServiceStack.Redis để thêm hỗ trợ cho các lệnh mới cũng vậy, đôi khi Redis Client không cung cấp mọi hoán vị mà redis-server hỗ trợ.

Với Custom mới và RawCommand API trên IRedisClientIRedisNativeClient bây giờ bạn có thể sử dụng RedisClient để gửi các lệnh tùy chỉnh của riêng bạn có thể gọi các lệnh Adhoc Redis:

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

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

Các API tùy chỉnh này sử dụng một đối tượng object[] linh hoạt các đối số chấp nhận bất kỳ giá trị có thể tuần tự hóa nào, ví dụ:byte[] , string , int cũng như bất kỳ Loại phức hợp nào do người dùng xác định được tuần tự hóa trong suốt dưới dạng JSON và gửi qua dây dưới dạng UTF-8 byte.

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"

Ngoài ra còn có các phương thức mở rộng thuận tiện trên RedisDataRedisText giúp dễ dàng truy cập dữ liệu có cấu trúc, ví dụ:

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

và một số ví dụ khác sử dụng Loại phức hợp với API tùy chỉnh:

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

API này được sử dụng trong hầu hết thư viện máy khách JavaScript redis.js của Redis React UI nơi các lệnh máy chủ Redis được tạo sẵn thông qua một Dịch vụ ServiceStack:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis Async APIs

  2. Cách bắt redis.serializer.SerializationException

  3. Chia sẻ phiên giữa php và nút

  4. Chia tỷ lệ Socket.IO thành nhiều quy trình Node.js bằng cách sử dụng cụm

  5. Thư viện ứng dụng khách Redis đề xuất để sử dụng từ Scala