用存储redis存取5个字段 to from message sent recd 存取的是聊天记录。to 代表发给谁 ,from谁发的 message消息内容 sent发消息的时间 recd代表消息对方看了没有(两种情况1,或者0)
取的使用场景 1用户登录网站成功后,显示未读消息 2用户打开与某个用户的聊天框后,显示最近的20条聊天记录(假定他们曾经聊过天).折腾了几次也没弄好,大家看看有什么建议。
//用户b发送消息到a
$arr = array('from'=>'b','message'=>'hello a iam b','sent'=>'1','recd'=>'1');
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$content = json_encode($arr);
$count = $redis->get(a."count");
$count = $count +1;
$redis->set("to".a.$count, $content);
$redis->set(a."count", $count);
//用户a登录
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$count = $redis->get(a."count");
for($i=0;$i<$count;$i++){
$content = $redis->get("to".a.$i);
$content = json_decode($content);
$from = $content;
$message = $content;
$sent = $content;
$recd = $content;
//把得到的值使用了就可以了
}
if($count>20){//多余20条记录,清空记录
$remove_count = $count -20;
for($i=0;$i<20;$i++){
$content = $redis->get("to".a.$i);
$redis->set("to".a.$i, $content);
$remove_count++;
}
$redis->set(a."count", 20);
}
看到没人回复,在猪八戒找人已经完美解决,聊天记录存取问题。现在共享一下思路。下面是服务商交付的代码。
我现在正在进行workerman-chat沟通在web网站的具体化,开发的这个joomla的沟通组件叫work,用于商业沟通,测试网站pifaqq.com,正在做workerman-chat具体化的朋友,可以交流一下。
欢迎交流
我也在研究这个聊天记录存储的问题,不过我是用文件保存的