redis与文章标签

前些日子和基友交流,他的留学网站上,为了做seo推广,和分类,需要对文章进行打标签,然后可以进行推荐操作,要求过滤掉重复的文章id,因为存在一个关键词对应多个文章的情况,这样 当时为了写那个功能,把多个标签拆分,然后单独建列,然后查询,用的是for循环 加动态改变sql来做过滤的,数量小的情况下,确实也可以应付,不过如果使用redis来做的话,那就十分之简单了.下面进入代码.

    首先我们知道一个一对多的情况,这就非常适合用redis中的集合来做了,如果有必要的话 也可以用有序集合来做.

在发布文章的时候

 首先连接redis,

$redis = new Redis();
$redis->connect('127.0.0.1',6379);

由于redis对中文key的不友好,我们使用md5对中文key进行加密,后面的135等数字是代表文章id

$redis->sadd(md5('中国'),'1','3','5','7','9');
$redis->sadd(md5('美国'),'2','3','6','8','9');

这样就添加进去了,这是举个例子,

然后到需要用到相关交集的时候,

var_dump($redis->sinter(md5('中国'),md5('美国')));//这里是求交集,这样就是 同时 包含中国和美国 的数据了

这个举例就是使用的var_dump 实际中自己存储 然后去查主键,获得信息 然后做推荐. 是不是很方便吖~

nickname
content