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

Cách XEM cơ bản với StackExchange.Redis

Lý do WATCH không được hiển thị trực tiếp là do SE.Redis được thiết kế như thế nào để ghép các lệnh từ các ngăn xếp lệnh gọi khác nhau trên một kết nối. Điều này làm cho bất kỳ công việc giao dịch nào cũng cần phải rất được quản lý chặt chẽ.

Tôi không rõ mục đích của việc "không thay đổi" sẽ là gì tự nó , mà không so sánh với một số giá trị đã biết - nếu không, bạn chỉ đang tạo một điều kiện đua. Chắc chắn sẽ có thể thêm hỗ trợ cho nó, nhưng tôi thực sự muốn hiểu trường hợp sử dụng dự kiến ​​trước. Bạn có thể giải thích không?

Lại chỉnh sửa của bạn; ví dụ ưa thích của bạn (ví dụ cuối cùng) đơn giản là không thể thực hiện được với redis - không liên quan gì đến SE.Redis; nếu bạn thực hiện GET bên trong một MULTI , bạn không nhận được câu trả lời cho đến khi EXEC hoàn thành - vì vậy bạn không thể sử dụng giá trị trong SET : nó chưa có sẵn .

Nếu không phải để ghép kênh, bạn có thể sắp xếp lại ví dụ thứ hai của mình (dựa trên những gì SE.Redis thực hiện) một chút:

WATCH key
val = GET key
MULTI
val = val + 1
SET key $val
EXEC

đây là điển hình sử dụng WATCH :bạn xem những thứ bạn đang truy vấn trước, sau đó bạn biết rằng {key} không thay đổi trong suốt vòng lặp này (hoặc ít nhất, giao dịch sẽ bị hủy bỏ; không có trạng thái không nhất quán). Tuy nhiên, WATCH không hoạt động tốt với bộ ghép kênh , đó là lý do tại sao SE.Redis buộc bạn phải tìm nạp giá trị trước giao dịch , sau đó cho phép bạn so sánh giá trị để khẳng định rằng nó không thay đổi. Cùng một kết quả; cách tiếp cận hơi khác, nhưng nó là bộ ghép kênh an toàn. Để biết thêm về chủ đề đó, hãy xem tại đây.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lưu trữ ScaleGrid Thêm hỗ trợ cho các cụm Redis ™ có sẵn cao với tính năng Sharding tự động

  2. Sao lưu AOF và RDB trong redis

  3. Hàng đợi Redis với xác nhận quyền sở hữu hết hạn

  4. Làm cách nào để kết nối với một phiên bản cụm Docker Redis bằng jedis cho Java?

  5. Truy vấn đa trường trên Redis bằng Redis Spring