Câu trả lời được chấp nhận ở trên là phức tạp không cần thiết. Bạn không cần phải sử dụng đa hoặc đồng hồ trong trường hợp này. INCR đã là nguyên tử và được thiết kế cho trường hợp chính xác này. Chỉnh sửa:Cảm ơn Itamar Haber &robe007 vì đã thay đổi câu trả lời được chấp nhận. :)
Bạn chỉ cần làm điều này:
var name = 'Josh';
client.incr('id', function(err, id) {
client.hmset('user:' + id, 'username', name);
});
Bằng cách làm như trên, INCR sẽ tự động khóa khóa "id", tăng nó cho bạn, mở khóa và trả lại cho bạn. Do đó, không có cách nào để bất kỳ ai có được id người dùng trùng lặp bằng cách sử dụng đoạn mã trên. Nó cũng có lợi ích là không bao giờ thực sự có thể thất bại, không giống như XEM / GET, nơi bạn phải kiểm tra các lỗi và chạy lại các truy vấn của mình nếu chúng không thành công.