2015-04-03 47 views
1

我写的聊天程序,我想要做的聊天历史型结构的,所以我需要存储一些值。首先是发布数据,如:保存私人聊天记录中的Redis

socket.on('send private',function(data){ 
     var d = new Date(); 
     var doc1 = { 'name': 'message id ' + d.getTime(), 'user_from': data.userfrom, 'user_to': data.userto, 'message': data.message };  
     client.hmset('messages:' + d.getTime(), doc1, function(err, replies) { 
     }); 
}); 

但是,当我从历史中获取数据,我不知道该怎么办按日期和user_from + user_to数据进行排序。我想在两个用户之间进行聊天。

我不知道,如果它可能使用Redis的 - 我是新来这个NoSQL的数据库概念。我想我应该用某种方式使用哈希值,但不知道如何。

感谢读,对不起我的英语不好。

回答

0

随着Redis的,你需要管理自己的索引。人们通常使用带有标准分隔符的按键来完成此操作。

例如,尝试的消息:MESSAGE_ID或消息:user_id_message_id并有增量键来跟踪你的当前索引。这在Redis进行原子写入时运行良好。这是完全可行的,但是您可能希望将历史记录存储在备用数据存储中,因为Redis更常见的是非持久性缓存,并且您有可能在某些时候丢失一些历史数据。

+0

感谢您的帮助 你能帮我怎么按日期排序数据吗 – HoangQBH 2015-04-03 04:54:19

+0

如果你按键排序,你本质上会按日期排序。如果你有一个日期字段作为集合中的一个键,我认为你可以做一些事情:按日期排序myset:* – errata 2015-04-03 05:06:55