php redis 搜索,php使用redis做热搜词排行榜

最近,b2c商城项目中,要做热搜词排行榜,用sql数据库做:建立一张表,保存用户的搜索记录,然后count每一个搜索词,并按照count的次数降序排列。这样的话,对数据库的I/O太频繁了,而且在count的时候扫描全表,如果表够大的话,查询速度会很慢。所以,考虑使用redis做热搜词记录。于是,拿自己的博客试验一下,记录本博客的搜索记录。

function redis_search_record($keyword){

$redis = new Redis();

$redis->connect(‘localhost’,6379);

$redis->auth(‘******’);

$redis->select(1);

$redis->zIncrBy(“blog:search” , 1 ,$keyword);

$redis->hMset(“blog:search_history:”.uniqid() , array( ‘time’=>time(),’ip’=>$_SERVER[‘REMOTE_ADDR’] ));

}

zset,有序集合,是一个没有重复元素的字符串集合,有序集合比set(集合)多了一个sore,有序集合的成员是唯一的,但是score是可以重复的。zIncrBy,向有序集合中添加一个成员,若不存在此成员,则增加此成员,并给出默认的score,若已存在此成员,则只会在score上增加指定的值。ZincrBy(‘blog:search’,1,$keyword),若在blog:search中还没有人搜索过$keyword,则创建一个$keyword成员,若已经有人搜索过$keyword了,则会在$keyword的score中+1,这样,按照score大小排列,就可以取出热搜词了zRange(‘blog:search’ , 0 , -1 , ‘withscores’);

6d7e3ba05ee4dee953ecab156b2e7a1d.png

3989584f84c97bfa0844173ced9addae.png

zrange

set,集合,hMset,一次可以插入多个成员,blog:search_history记住热搜词记录

f7f2f689c7f2768b4759dbe99eee5224.png

search_history

喜欢 (5)or分享 (0)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值