该文章是接上一篇文章《Redis整合SpringBoot示例》的后续,操作用例代码比较多,这里展示核心代码所占篇幅很多,所以单独抽出来写
list类型在SpringBoot中的使用代码如下
package com.example.echo.redis;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
/**
* @author XLecho
* Date 2019/11/9 0009
* Time 11:12
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTypeListUseTest {
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* 创建一个队列,并从队列的左边插入数据a
*/
@Test
public void testLpushList() {
redisTemplate.opsForList().leftPush("queue", "a");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 从队列的左边插入数据b c
*/
@Test
public void testLpushAllList() {
redisTemplate.opsForList().leftPushAll("queue", "b", "c");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 从队列的右边插入数据d e
*/
@Test
public void testRpushAllList() {
redisTemplate.opsForList().rightPushAll("queue", "d", "e");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 从队列的左边弹出一个元素
*/
@Test
public void testLpopList() {
redisTemplate.opsForList().leftPop("queue");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 从队列的左边弹出一个元素
*/
@Test
public void testRpopList() {
redisTemplate.opsForList().leftPop("queue");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 获取队列指定索引的元素
*/
@Test
public void testLindexList() {
String queue = redisTemplate.opsForList().index("queue", 2);
System.out.println(queue);
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 截取队列指定索引范围内的值
* 注意:没有被截取就会被舍弃
*/
@Test
public void testLtrimList() {
redisTemplate.opsForList().trim("queue", 0, 1);
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 查看队列的长度
*/
@Test
public void testLlenList() {
System.out.println(redisTemplate.opsForList().size("queue"));
}
/**
* 删除队列
*/
@Test
public void testDelList() {
redisTemplate.delete("queue");
System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
}
/**
* 使用Brpop实现发布订阅
*/
@Test
public void testBrpopList() {
redisTemplate.opsForList().leftPushAll("queue", "a", "b", "c", "d", "e");
IntStream.range(0, 6).forEach(it -> {
System.out.println(redisTemplate.opsForList().rightPop("queue", 60, TimeUnit.SECONDS));
});
}
}