redis多线程排序Demo

来源:互联网 发布:dijkstra算法适用范围 编辑:程序博客网 时间:2024/06/06 07:08
import java.util.Random;import java.util.Set;import redis.clients.jedis.Jedis;import redis.clients.jedis.Tuple;public class TopRank {    static Jedis jedis = new Jedis("192.168.213.***");    public static void main(String[] args) {        new Thread(new province()).start();        int i = 0;        // 不断获取最新的排行榜        while (true) {            try {                Thread.sleep(3000);                Set<Tuple> province = jedis.zrevrangeWithScores("province", 0, -1);                System.out.printf("第%s次获取排行榜:", i);                System.out.println();                for (Tuple t : province) {                    System.out.println(t.getElement() + " : " + t.getScore());                }                i++;            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }    static class province implements Runnable {        @Override        public void run() {            String[] provinces = new String[] { "北京","南京", "河南", "安徽","广州", "湖北", "吉林"};            Random random = new Random();            // 不断产生新的省份点击率            while (true) {                try {                    Thread.sleep(1000 + random.nextInt(10) * 100);                    // 随机挑选一个省份                    int index = random.nextInt(7);                    String province = provinces[index];                    // 在redis数据库中给相应的省份增加分数                    jedis.zincrby("province", 1, province);                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}
原创粉丝点击