redis 常用的命令及情景模式
譬如将用戶的好友/粉丝/关注,可以存在一个sorted set中,score可以是timestamp
默认集合按照score递增排序
$redis->zAdd('user:1000:follow', 1463557212, '1001');
#uid为1000用户关注uid为1001 , score值设定时间戳1463557212
$redis->zAdd('user:1000:follow', 1463557333, '1002');
$redis->zAdd('user:2000:follow', 1463577568, '1001');
$redis->zAdd('user:2000:follow', 1463896964, '1003');
$redis->zInter('com_fllow:1000:2000', array('user:1000:follow', 'user:2000:follow'));
#对集合'user:1000:follow'和'user:2000:follow'取交集'com_fllow:1000:2000'
#获得共同关注的uid
$redis->zRange('com_fllow:1000:2000',0,-1); // 获取全部集合元素
#array('10001','10002')
应用系统评论、发布商品、论坛发贴的spam控制
#获取5秒内操作记录
$res = $redis->zRangeByScore('user:1000:comment', time() - 5, time());
#判断5秒内不能评论
if (!$res) {
$redis->zAdd('user:1000:comment', time(), '评论内容');
} else {
echo '5秒之内不能评论';
}
#5秒内评论不得超过2次
if($redis->zRangeByScore('user:1000:comment',time()-5 ,time())==1)
echo '5秒之内不能评论2次';
#5秒内评论不得少于2次
好友关注的场景
$this->cache->redis->zAdd('shc_follow:'.$data['sns_frommid'],time(),$data['sns_tomid']);
$this->cache->redis->zAdd('shc_fans:'.$data['sns_tomid'],time(),$data['sns_frommid']);

浙公网安备 33010602011771号