Gần đây tôi đã chuyển từ memcached sang redis trong nodejs. Điều tôi thích trong nút-memcached là tôi có thể lưu toàn bộ đối tượng javascript trong bộ nhớ. Đáng buồn là tôi không thể làm điều này bằng redis. Ví dụ, tôi có các đối tượng sau đây:Lưu trữ các đối tượng javascript lồng nhau bằng chữ đỏ - NodeJS
var obj = {
name: "Hello world!",
author: "admin",
user: {
"yolololo" : {
"id": "352asdsafaseww",
"server": 5,
"data" : {
x: 1,
y: 1,
z: 50
}
},
"yolol" : {
"id": "358dsa",
"server": 7
}
}
}
với 3rd-Eden/node-memcached Tôi chỉ có thể làm:
memcached.set("obj", obj, 12345, function(err) { });
và sau đó
memcached.get("obj", function(err, data) {
console.log(data);
});
Và tôi sẽ nhận được các đối tượng tôi đã lưu, đơn giản chỉ là vậy.
Vấn đề với redis là nếu tôi lưu các đối tượng như thế này:
redisclient.set("obj", obj, redis.print);
Khi tôi nhận được giá trị với
redisclient.get("obj", function(err, data) {
console.log(data);
});
Kết quả chỉ là chuỗi chứa [object Object]
.
Vâng tôi hiểu redis là giao thức dựa trên văn bản và nó đang cố gắng làm obj.toString(), nhưng dường như memcached chăm sóc các đối tượng và redis thì không. tôi nghĩ tôi chỉ có thể làm:
redisClient.set("obj", JSON.stringify(obj));
nhưng tôi không chắc chắn nếu điều này sẽ được tốt, vì sẽ có điên cao I/O và tôi không chắc chắn nếu JSON obj-> chuỗi sẽ là nút cổ chai (10k + yêu cầu/giây).
Cả hai Memcached và Redis lưu trữ dữ liệu dưới dạng chuỗi, nhưng redis có tính năng tích hợp sẵn để chuyển đổi đối tượng không?
Tôi nghĩ ** memcached cửa hàng ** dữ liệu như chuỗi. ** node-memcached ** thực hiện (de) quá trình tuần tự hóa tự động. – fardjad
@fardjad Vâng, bạn nói đúng, nhưng Redis có quá trình tích hợp như vậy hay tôi cần chuyển đổi thủ công? – Deepsy