我在android聊天應用程序中使用ejabberd作爲服務器,Redis作爲存儲聊天消息的數據庫。我想使用erlang client存儲會話的消息,From,To和Redis中的一些字段。我研究了redis。列表數據類型將最適合存儲聊天消息。但我找不到任何使用List實現的示例。是否有任何示例將列表中的聊天消息存儲在列表中。或者告訴我在Redis中是否有其他備用存儲聊天消息?如何使用Erlang客戶端在Redis中存儲聊天消息?
0
A
回答
2
那麼,你可以存儲JSON到列表中,但是如果你有一個功能,當用戶可以刪除一條消息,那麼你將不得不在列表中找到確切位置,然後刪除它。如果我會一直在你的地方,我將其存儲到像ZSET: -
redis 127.0.0.1:6379> ZADD chat 1 "{from:me, msg: hello}"
(integer) 1
redis 127.0.0.1:6379> ZADD chat 2 "{from:you, msg: hello}"
(integer) 1
redis 127.0.0.1:6379> ZADD chat 3 "{from:me, msg: how are you}"
(integer) 1
redis 127.0.0.1:6379> ZADD chat 4 "{from:you, msg: good, how about you}"
(integer) 1
redis 127.0.0.1:6379> ZADD chat 5 "{from:you, msg: are you there}"
(integer) 1
redis 127.0.0.1:6379> ZADD chat 6 "{from:me, msg: yes i am}"
(integer) 1
redis 127.0.0.1:6379> ZRANGE chat 0 -1
1) "{from:me, msg: hello}"
2) "{from:you, msg: hello}"
3) "{from:me, msg: how are you}"
4) "{from:you, msg: good, how about you}"
5) "{from:you, msg: are you there}"
6) "{from:me, msg: yes i am}"
,而不是1,2,3(得分),可以使用時間戳,以便使用ZRANGE您可以輕鬆地獲取了談話。
1
在http://gitweb.tideland.biz你可以找到ERRC,我的Tideland Erlang/OTP Redis客戶端(ERRC)。除了源代碼之外,還有顯示使用情況的單元測試。
在你的具體任務,我將確定一個UUID每個消息(你會發現它在我的ERAS庫,也有),並使用哈希的消息:
HMSET msg::(UUID) timestamp ... from "foo" to "bar" text "Hello, World" ...
這是一種事件採購。然後,爲了更好的導航,個人列出所有消息或發件人,收件人等:
LPUSH msgs::all (UUID) LPUSH msgs::from::foo (UUID)
LPUSH msgs::to::bar (UUID)
反演可以LRANGE key start stop
完成。在這裏,您將獲得郵件的UUID,然後您可以使用HGETALL (UUID)
閱讀這些郵件。
相關問題
- 1. redis-我應該使用redis來存儲聊天消息嗎?
- 2. 如何在RabbitMQ的Erlang客戶端中使用消息頭?
- 3. 將消息存儲在聊天網站
- 4. Java聊天不起作用 - 客戶端沒有收到消息
- 5. 如何在mysql數據庫中存儲聊天消息?
- 6. 如何優化聊天消息在數據庫中的存儲
- 7. 在PHP中使用Node.js,Socket.io,Redis的私人聊天消息
- 8. 如何使用Openfire在Android中創建XMPP聊天客戶端?
- 9. 如何在HTML5 websocket和node.js聊天中使用客戶端ID?
- 10. 如何實現聊天客戶端
- 11. Java簡單聊天 - 向所有客戶端發送消息
- 12. Twilio可編程聊天;停止客戶端發送消息
- 13. 我應該使用ajax更新聊天客戶端中的消息嗎?
- 14. 多個客戶端「聊天」
- 15. 與GWT聊天客戶端
- 16. python聊天客戶端庫
- 17. Android的聊天客戶端
- 18. ASP.NET聊天客戶端
- 19. php聊天客戶端
- 20. 如何使用nodejs socket.js將聊天消息臨時存儲在文件中?
- 21. Java中的RMI聊天程序 - 如何從客戶端發送消息到客戶端(不通過服務器)?
- 22. 在C#中創建客戶端/服務器聊天客戶端
- 23. 如何從socket-io-redis獲取redis存儲客戶端?
- 24. 如何在不同的PC上使用客戶端聊天
- 25. 聊天服務器如何將消息分發給多個客戶端?
- 26. 如何使用socket.io客戶端鳳框架聊天應用
- 27. 客戶端無法在java聊天程序中向服務器發送消息
- 28. c中的聊天客戶端
- 29. 客戶端 - 服務器在Lua聊天
- 30. 接受/拒絕在聊天客戶端,
我用你的答案。但是一個小缺點是,如果我使用與ZSET中的前一個成員相同的成員,則前一個成員將被新成員替換。參考:http://redis.io/commands/ZADD –
我明白你的意思,所以在這種情況下,你可以添加時間戳與消息,每一個味精會被認爲是不同的... –
感謝您的答覆。我會用它。 –