package com.study.cache.redis.a0_example;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@ActiveProfiles("single")
public class JedisTests {
// 列表~ 集合数据存储~ java.util.List,java.util.Stack
// 生产者消费者(简单MQ)
@Test
public void listTest() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
// 插入数据 1、2、3
jedis.rpush("queue_1", "1");
jedis.rpush("queue_1", "2", "3");
List<String> stringList = jedis.lrange("queue_1", 0, -1);
for (String str : stringList) {
System.out.println(str);
}
// 消费者线程简例
while (true) {
String item = jedis.lpop("queue_1");
if (item == null) { break; }
System.out.println(item);
}
jedis.close();
}
// 类似:在 redis 里面存储一个 hashmap
// 推荐的方式,无特殊需求,一般的缓存都用这个
@Test
public void hashTest() {
HashMap<String, Object> user = new HashMap<>();
user.put("name", "tony");
user.put("age", 18);
user.put("userId", 10001);
System.out.println(user);
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.hset("user_10001", "name", "tony");
jedis.hset("user_10001", "age", "18");
jedis.hset("user_10001", "userId", "10001");
System.out.println("redis 版本 ~~~");
System.out.println(jedis.hgetAll("user_10001"));
jedis.close();
}
// 用 set 实现交集、并集
// 交集示例:共同好友
// 并集示例:取出一个帖子 点赞|转发 的
@Test
public void setTest() {
// 取出两个人共同关注的好友
Jedis jedis = new Jedis("127.0.0.1", 6379);
// 每个人维护一个 set
jedis.sadd("user_A", "userC", "userD", "userE");
jedis.sadd("user_B", "userC", "userE", "userF");
// 取出共同关注
Set<String> sinter = jedis.sinter("user_A", "user_B");
System.out.println(sinter);
// 检索给某一个帖子点赞|转发的
jedis.sadd("trs_tp_1001", "userC", "userD", "userF");
jedis.sadd("star_tp_1001", "userE", "userF");
// 取出所有人群
Set<String> union = jedis.sunion("trs_tp_1001", "star_tp_1001");
System.out.println(union);
jedis.close();
}
// 游戏排行榜
@Test
public void zsetTest() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
String ranksKeyName = "exam_rank";
jedis.zadd(ranksKeyName, 100.0, "zp1");
jedis.zadd(ranksKeyName, 82.0, "zp2");
jedis.zadd(ranksKeyName, 90.0, "zp3");
jedis.zadd(ranksKeyName, 96.0, "zp4");
jedis.zadd(ranksKeyName, 89.0, "zp5");
Set<String> stringSet = jedis.zrange(ranksKeyName, 0, 2);
System.out.println("返回前三名:");
for (String s : stringSet) {
System.out.println(s);
}
Long zcount = jedis.zcount(ranksKeyName, 85, 100);
System.out.println("超过85分的数量:" + zcount);
jedis.close();
}
}