1. package com.study.cache.redis.a0_example;
    2. import org.junit.Test;
    3. import org.junit.runner.RunWith;
    4. import org.springframework.test.context.ActiveProfiles;
    5. import org.springframework.test.context.ContextConfiguration;
    6. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    7. import redis.clients.jedis.Jedis;
    8. import java.util.HashMap;
    9. import java.util.List;
    10. import java.util.Set;
    11. @RunWith(SpringJUnit4ClassRunner.class)
    12. @ContextConfiguration("classpath:applicationContext.xml")
    13. @ActiveProfiles("single")
    14. public class JedisTests {
    15. // 列表~ 集合数据存储~ java.util.List,java.util.Stack
    16. // 生产者消费者(简单MQ)
    17. @Test
    18. public void listTest() {
    19. Jedis jedis = new Jedis("127.0.0.1", 6379);
    20. // 插入数据 1、2、3
    21. jedis.rpush("queue_1", "1");
    22. jedis.rpush("queue_1", "2", "3");
    23. List<String> stringList = jedis.lrange("queue_1", 0, -1);
    24. for (String str : stringList) {
    25. System.out.println(str);
    26. }
    27. // 消费者线程简例
    28. while (true) {
    29. String item = jedis.lpop("queue_1");
    30. if (item == null) { break; }
    31. System.out.println(item);
    32. }
    33. jedis.close();
    34. }
    35. // 类似:在 redis 里面存储一个 hashmap
    36. // 推荐的方式,无特殊需求,一般的缓存都用这个
    37. @Test
    38. public void hashTest() {
    39. HashMap<String, Object> user = new HashMap<>();
    40. user.put("name", "tony");
    41. user.put("age", 18);
    42. user.put("userId", 10001);
    43. System.out.println(user);
    44. Jedis jedis = new Jedis("127.0.0.1", 6379);
    45. jedis.hset("user_10001", "name", "tony");
    46. jedis.hset("user_10001", "age", "18");
    47. jedis.hset("user_10001", "userId", "10001");
    48. System.out.println("redis 版本 ~~~");
    49. System.out.println(jedis.hgetAll("user_10001"));
    50. jedis.close();
    51. }
    52. // 用 set 实现交集、并集
    53. // 交集示例:共同好友
    54. // 并集示例:取出一个帖子 点赞|转发 的
    55. @Test
    56. public void setTest() {
    57. // 取出两个人共同关注的好友
    58. Jedis jedis = new Jedis("127.0.0.1", 6379);
    59. // 每个人维护一个 set
    60. jedis.sadd("user_A", "userC", "userD", "userE");
    61. jedis.sadd("user_B", "userC", "userE", "userF");
    62. // 取出共同关注
    63. Set<String> sinter = jedis.sinter("user_A", "user_B");
    64. System.out.println(sinter);
    65. // 检索给某一个帖子点赞|转发的
    66. jedis.sadd("trs_tp_1001", "userC", "userD", "userF");
    67. jedis.sadd("star_tp_1001", "userE", "userF");
    68. // 取出所有人群
    69. Set<String> union = jedis.sunion("trs_tp_1001", "star_tp_1001");
    70. System.out.println(union);
    71. jedis.close();
    72. }
    73. // 游戏排行榜
    74. @Test
    75. public void zsetTest() {
    76. Jedis jedis = new Jedis("127.0.0.1", 6379);
    77. String ranksKeyName = "exam_rank";
    78. jedis.zadd(ranksKeyName, 100.0, "zp1");
    79. jedis.zadd(ranksKeyName, 82.0, "zp2");
    80. jedis.zadd(ranksKeyName, 90.0, "zp3");
    81. jedis.zadd(ranksKeyName, 96.0, "zp4");
    82. jedis.zadd(ranksKeyName, 89.0, "zp5");
    83. Set<String> stringSet = jedis.zrange(ranksKeyName, 0, 2);
    84. System.out.println("返回前三名:");
    85. for (String s : stringSet) {
    86. System.out.println(s);
    87. }
    88. Long zcount = jedis.zcount(ranksKeyName, 85, 100);
    89. System.out.println("超过85分的数量:" + zcount);
    90. jedis.close();
    91. }
    92. }