MongoDB với upserts là điều tuyệt vời cho việc này.
Nếu bạn đang lưu trữ một cái gì đó như:
{ "url" : "www.example.com", "pageviews" : 0 }
bạn có thể lần truy cập trang nguyên tử tăng rất nhanh với các nguyên tử hoạt động $ inc:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
Nếu bạn sử dụng upserts, bạn không có để kiểm tra xem tài liệu có tồn tại hay không trước khi cập nhật. Ví dụ: nếu bạn nói:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
tài liệu có url www.example.com sẽ được tạo nếu nó không tồn tại (với số lần xem trang được đặt thành 1) hoặc nếu tồn tại, số lần xem trang sẽ là tăng lên. Điều này có nghĩa là bạn không phải lo lắng về việc điền trước bộ sưu tập.
tay xuống Tôi sẽ nói redis. Tôi đang làm một loại truy cập của điều và tôi đang đẩy 30k lệnh mỗi phút trên một VPS $ 512MB. :) –
Chúng tôi đã cố gắng sử dụng redis cho một hệ thống quầy. Kho dữ liệu chính của Redis là RAM và tập dữ liệu của chúng tôi quá lớn để có hiệu quả.Một cái gì đó giống như Tokyo Tyrant - mà không phải giữ toàn bộ tập dữ liệu trong ram tất cả các thời gian - có lẽ sẽ là một sự lựa chọn tốt hơn. –
Một bộ đếm đơn giản không thể được giữ trong RAM? Twitter lưu trữ gần như tất cả các mẩu tin hoạt động trong bộ nhớ. Nếu bạn muốn thực hiện, tôi nghĩ bạn nên trả một chút tiền mặt cho một mô-đun bộ nhớ. Bên cạnh bạn có thể nhận được một vài hợp đồng ram rẻ tiền. – Alfred