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

Chiến lược tốt nhất để đồng bộ dữ liệu Redis với MySQL là gì?

Bạn không cần phải hack bất cứ thứ gì;)

Tôi không hoàn toàn chắc chắn tại sao bạn cần dữ liệu trên mysql. Nếu tôi biết, có lẽ sẽ có một câu trả lời phù hợp hơn. Trong mọi trường hợp, như một câu trả lời chung, bạn có thể sử dụng thông báo redis keyspace

Bạn có thể đăng ký các lệnh HSET, HMSET, HDEL và DEL trên các khóa của mình, vì vậy bạn sẽ nhận được thông báo mỗi khi khóa bị xóa hoặc giá trị băm được đặt hoặc xóa.

Lưu ý nếu bạn bỏ lỡ bất kỳ thông báo nào, bạn sẽ có sự mâu thuẫn. Vì vậy, thỉnh thoảng bạn chỉ có thể sử dụng lệnh SCAN để xem qua tất cả các khóa của mình và kiểm tra trên mysql nếu chúng cần được cập nhật.

Một chiến lược khác có thể là duy trì hai cấu trúc riêng biệt. Một sẽ là hàm băm với các giá trị và cái kia sẽ là một ZSET của tất cả các giá trị được sắp xếp theo dấu thời gian của bản cập nhật. Cách tốt nhất để giữ cho cả hai cấu trúc được cập nhật là viết hai hoặc ba tập lệnh lua (chèn / cập nhật và xóa) hoạt động trên băm và nguyên tử zset.

Sau đó, bạn có thể chỉ cần định kỳ truy vấn ZSET cho các phần tử có dấu thời gian cao hơn hoạt động đồng bộ hóa cuối cùng của bạn, lấy tất cả các khóa đã được cập nhật (nó sẽ bao gồm các khóa đã xóa, trừ khi bạn muốn giữ lại một ZSET thứ hai dành riêng cho những người đó) và sau đó chỉ truy xuất tất cả các phần tử bằng khóa và đồng bộ hóa với mysql.

Hy vọng nó sẽ hiệu quả với bạn!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gỡ cài đặt Redis trên Mac OSX. Phiên bản cũ hơn đang chạy sau khi cài đặt bản cập nhật

  2. Tìm giá trị bằng cách sử dụng một phần tên khóa trong Tập hợp được sắp xếp của Redis

  3. Cách thực hiện một giao dịch phân tán trên Mysql, Redis và Mongo

  4. rails + docker + sidekiq + Lỗi kết nối với Redis trên 127.0.0.1:6379 (Errno ::ECONNREFUSED)

  5. Làm thế nào để khôi phục dữ liệu redis từ ảnh chụp nhanh (tệp rdb) được sao chép từ máy khác?