社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
这几天项目要用到Redis做游戏排名,做之前先写一个测试,废话不多说,直接上代码:
1.先准备好我们的工具类,序列化工具查找网上Protostuff序列化工具类
https://blog.csdn.net/z69183787/article/details/52672246
测试类
public class UserTest implements Serializable { private static final long serialVersionUID = 3610058000773104023L; private String id; private String name; private double score; private int rank;//排名 public UserTest() { super(); // TODO Auto-generated constructor stub } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } public UserTest(String id, String name, double score, int rank) { super(); this.id = id; this.name = name; this.score = score; this.rank = rank; } @Override public String toString() { return "UserTest [id=" + id + ", name=" + name + ", score=" + score + ", rank=" + rank + "]"; } public UserTest(String id, String name, double score) { super(); this.id = id; this.name = name; this.score = score; } } |
2.这是我们的测试类
public class GameRankTest { private RedisClientTemplate jedis; private ApplicationContext context; public GameRankTest() { } @Before public void init() throws Exception{ context = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); jedis = (RedisClientTemplate) context.getBean("jedis"); } @Test @Ignore public void rankAdd() { UserTest user1 = new UserTest("1001","张三",101.2); UserTest user2 = new UserTest("1002","王子健",85.4); UserTest user3 = new UserTest("1003","张三疯",120.6); UserTest user4 = new UserTest("1004","王建国",100.4); jedis.zadd("game".getBytes(), user1.getScore(), ProtoStuffSerializerUtil.serialize(user1)); jedis.zadd("game".getBytes(), user2.getScore(), ProtoStuffSerializerUtil.serialize(user2)); jedis.zadd("game".getBytes(), user3.getScore(), ProtoStuffSerializerUtil.serialize(user3)); jedis.zadd("game".getBytes(), user4.getScore(), ProtoStuffSerializerUtil.serialize(user4)); /*jedis.zadd("game".getBytes(), user1.getScore(), ObjectSer.ObjectToByte(user1)); jedis.zadd("game".getBytes(), user2.getScore(), ObjectSer.ObjectToByte(user2)); jedis.zadd("game".getBytes(), user3.getScore(), ObjectSer.ObjectToByte(user3)); jedis.zadd("game".getBytes(), user4.getScore(), ObjectSer.ObjectToByte(user4));*/ } @Test //@Ignore public void gameRankShow() { Set<byte[]> set = jedis.zrevrange("game".getBytes(), 0, -1); Iterator<byte[]> iter = set.iterator(); int i = 1; List<UserTest> list = new ArrayList<UserTest>(); while(iter.hasNext()) { //UserTest user = (UserTest) ObjectSer.ByteToObject(iter.next()); UserTest user = ProtoStuffSerializerUtil.deserialize(iter.next(), UserTest.class); user.setRank(i++); list.add(user); } for(UserTest user : list){ System.out.println(user); } } @Test @Ignore public void gameDeleteData() { Long a = jedis.zremrangeByRank("game".getBytes(), 0L, -1L); System.out.println(a); } } |
3.查看排名结果
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!