2013-08-10 22 views
20

Khi cố gắng chạy phần sau trong Redis bằng booksleeve.lệnh này không khả dụng trừ khi kết nối được tạo bằng các lệnh của quản trị viên được bật

using (var conn = new RedisConnection(server, port, -1, password)) 
{ 
    var result = conn.Server.FlushDb(0); 
    result.Wait(); 
} 

tôi nhận được một lỗi nói:

lệnh này không có sẵn trừ khi kết nối được tạo ra với admin-lệnh kích hoạt"

Tôi không chắc chắn làm thế nào để thực hiện Tôi có cần phải tạo một/c trong db với quyền truy cập quản trị và đăng nhập với điều đó không?

Trả lời

18

Về cơ bản, các lệnh nguy hiểm mà bạn không cần trong các hoạt động thường quy, nhưng có thể gây ra rất nhiều vấn đề nếu sử dụng không thích hợp (tức là tương đương với drop database trong TSQL, vì ví dụ của bạn là FlushDb) đều được bảo vệ bởi một "vâng, tôi có nghĩa là để làm điều đó ..." cờ:

using (var conn = new RedisConnection(server, port, -1, password, 
      allowAdmin: true)) <==== here 

tôi sẽ cải thiện được thông báo lỗi để làm điều này rất rõ ràng và rõ ràng.

47

câu trả lời Cập nhật cho StackExchange.Redis:

var conn = ConnectionMultiplexer.Connect("localhost,allowAdmin=true"); 

cũng Lưu ý rằng các đối tượng được tạo ra ở đây nên được tạo ra một lần cho mỗi ứng dụng và chia sẻ như một singleton toàn cầu, mỗi Marc:

Vì ConnectionMultiplexer hiện một rất nhiều, nó được thiết kế để được chia sẻ và tái sử dụng giữa những người gọi. Bạn không nên tạo Bộ kết nối cho mỗi thao tác. Đó là hoàn toàn an toàn thread và sẵn sàng cho việc sử dụng này.

Các vấn đề liên quan