当前位置: 首页 > redis, 分布式系统, 缓存系统 > 正文

redis实现搜索排行榜

1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

最近有一个需求,实现搜索排行榜。在这里,我们用redis去实现。
1.用redis Sorted set去实现搜索key的保存。Sorted set 可以实现对成员的计数器功能,排序功能。
2.用mysql去实现落地功能。每隔一周对redis数据进行统计。得出排行榜。并把结果保存在redis中,该值就用redis 的String 数据结构保存就行。
整体流程就是:
1.当有搜索请求时,redis Sorted set 成员计数器加1.
2.每隔一周用定时任务去获取redis 数据。把结果保存在redis中,并用数据库做持久化。
3.当有搜索排行榜请求时。先从redis中去获取结果,若没有,则从数据库中获取。还是没有的情况下,对redis数据进行统计。得出排行榜。并把结果保存在redis中,并保存在mysql中。然后返回请求。
用redis 去实现的例子:

	public static void testSortSet(Jedis jedis){
		jedis.del("sort");
        jedis.zadd("sort", 1.0d, "a");
        jedis.zincrby("sort", 1.0d, "a");
        jedis.zadd("sort", 1.0d, "b");
        jedis.zadd("sort", 1.0d, "c");
        jedis.zadd("sort", 1.0d, "e");
        jedis.zadd("sort", 1.0d, "f");
        jedis.zincrby("sort", 1.0d, "e");
        jedis.zincrby("sort", 1.0d, "e");
        jedis.zadd("sort", 1.0d, "a");
        System.out.println(jedis.zrevrange("sort", 0, 6));
        Set<String> set=jedis.zrevrange("sort", 0, 6);
        for(String s : set){
        	System.out.println(jedis.zscore("sort", s));
        }
        System.out.println(jedis.zcard("sort"));
	}

参考文章:
http://www.redisbook.com/
http://redis.readthedocs.org/en/latest/index.html
redis java 客户端实例

本文固定链接: http://www.chepoo.com/reids-implement-search-ranking.html | IT技术精华网

redis实现搜索排行榜:目前有1 条留言

  1. 沙发
    :

    刚好用上了

    [回复]

发表评论