SpringBoot RedisTemplate opsForList

spring-data-redis-3.0.0-M2.jar
@Autowired
private RedisTemplate redisTemplate;
/*
 * (non-Javadoc)
 * @see org.springframework.data.redis.core.RedisOperations#opsForList()
 */
@Override
public ListOperations<K, V> opsForList() {
	return listOps;
}
类型Value
String字符串
List列表
Hash字典
Set无序集合
zset(Sorted Set)有序集合

1 SpringBoot RedisTemplate

1 SpringBoot RedisTemplate opsForValue
2 SpringBoot RedisTemplate opsForHash
3 SpringBoot RedisTemplate opsForList
4 SpringBoot RedisTemplate opsForSet
5 SpringBoot RedisTemplate opsForZSet

操作作用
push 操作leftpush是在list的左侧添加,即列表的头部,right是在list的右侧侧添加,即在列表的尾部。
pop 操作和push一样。pop是获取一个元素(leftpop:先入后出,rightpop:先入先出),并且删除这个元素。
range查看某个元素

1 Long leftPush(K key, V value)

單個左新增

K 是否存在操作返回解释
添加添加成功后的list的长度先添加的位于栈底
创建添加成功后的list的长度先添加的位于栈底
@Test
public void leftPush() {
    Long value = redisTemplate.opsForList().leftPush("OpsForList", "M");
    System.out.println(value);
}
@Test
public void leftPush() {
    redisTemplate.opsForList().leftPush("OpsForList", "A");
    redisTemplate.opsForList().leftPush("OpsForList", "B");
    redisTemplate.opsForList().leftPush("OpsForList", "C");
}

在这里插入图片描述

2 Long leftPush(K key, V pivot, V value)

單個左新增(添加到 pivot 前面)

pivot 是否存在操作返回
添加到 pivot 前面添加成功后的list的长度
不做操作-1
@Test
public void leftPush() {
    Long value = redisTemplate.opsForList().leftPush("OpsForList", "A", "M-");
    System.out.println(value);
}

在这里插入图片描述
在这里插入图片描述

2 Long leftPushAll(K, Collection< V>)

和1类似,一次left添加多个,返回添加成后的list的长度

3 Long leftPushAll(K, V…)

和1类似,一次left添加多个,返回添加成后的list的长度

4 Long leftPushIfPresent(K, V)

新增(key存在的時候新增)

K 是否存在操作返回
添加返回添加成后的list的长度
不添加0
@Test
public void leftPushIfPresent() {
    Long value1 = redisTemplate.opsForList().leftPushIfPresent("OpsForList", "KV");
    System.out.println(value1);
    Long value2 = redisTemplate.opsForList().leftPushIfPresent("OpsForList-A", "B");
    System.out.println(value2);
}
5
0

5 V leftPop(K key)

左刪除(获取左边第一个元素(栈顶元素)并移除)

K 是否存在操作返回
获取左边第一个元素(栈顶元素)并移除左边第一个元素
不做操作null
@Test
public void leftPop() {
    String value = (String) redisTemplate.opsForList().leftPop("OpsForList");
    System.out.println(value);
}

在这里插入图片描述
在这里插入图片描述

6 List< V> leftPop(K key, long count)

== 获取左边count个元素(栈顶count个元素)并移除==

K 是否存在操作返回
获取左边count个元素(栈顶count个元素)并移除左边count个元素
不做操作空 List
@Test
public void leftPop() {
    List<Object> value = redisTemplate.opsForList().leftPop("OpsForList", 2);
    System.out.println(value);
}
[C, B]

原来
leftpop 2 后

7 V leftPop(K, long, TimeUnit)

为左边第一个元素(栈顶元素)设置超时时间

K 是否存在操作返回
为左边第一个元素(栈顶元素)设置超时时间左边第一个元素
不做操作null
@Test
public void leftPop() {
    String value = (String) redisTemplate.opsForList().leftPop("OpsForList", 5, TimeUnit.SECONDS);
    System.out.println(value);
}
C

在这里插入图片描述
在这里插入图片描述

8 Long rightPush(K, V)

和left的一样,方向相反

9 Long rightPush(K, V, V)

和left的一样,方向相反

10 Long rightPushAll(K, Collection< V>)

和left的一样,方向相反

11 Long rightPushAll(K, V…)

和left的一样,方向相反

12 Boolean rightPushIfPresent(K, V)

和left的一样,方向相反

13 rightPop(K)

和left的一样,方向相反

14 rightPop(K, long)

和left的一样,方向相反

15 rightPop(K, long, TimeUnit)

和left的一样,方向相反

16 V rightPopAndLeftPush(K sourceKey, K destinationKey)

移除右边的第一个元素,将该元素在左边增加

sourceKey 和 destinationKey 是否一样操作返回
移除右边的第一个元素,将该元素在左边增加右边的第一个元素
创建新的键值对,destinationKey为key,右边的第一个元素为value右边的第一个元素

在这里插入图片描述
在这里插入图片描述

17 rightPopAndLeftPush(K, K, long, TimeUnit)

移除集合中右边的元素在等待的时间里,同时在左边添加元素,如果超过等待的时间仍没有元素则退出。

@Test
public void rightPopAndLeftPush() {
    String value = (String) redisTemplate.opsForList().rightPopAndLeftPush("OpsForList", "OpsForList", 5, TimeUnit.SECONDS);
    System.out.println(value);
}

在这里插入图片描述

18 V index(K key, long index)

獲取 index位置对应的value

K 是否存在index 是否超过返回
index位置对应的value
null
-null
@Test
public void index() {
    String value = (String) redisTemplate.opsForList().index("OpsForList", 0);
    System.out.println(value);
}
A

在这里插入图片描述

19 Long indexOf(K key, V value)

獲取第一个 value 的 index

K 是否存在value 是否存在返回
第一个 value 的 index
null
-null
@Test
public void indexOf() {
    Long value = redisTemplate.opsForList().indexOf("OpsForList", "A");
    System.out.println(value);
}
0

在这里插入图片描述

20 lastIndexOf(K key, V value)

獲取最后一个 value 的 index

K 是否存在value 是否存在返回
最后一个 value 的 index
null
-null
@Test
public void indexOf() {
    Long value = redisTemplate.opsForList().lastIndexOf("OpsForList", "A");
    System.out.println(value);
}
3

在这里插入图片描述

21 V move(K sourceKey, Direction from, K destinationKey, Direction to)

移除 sourceKey from 的第一个元素,新建 destinationKey 并在 to 增加

sourceKey 是否存在destinationKey 是否存在操作返回
-无操作
移除 sourceKey from 的第一个元素,新建 destinationKey 并在 to 增加sourceKey from 的第一个元素
移除 sourceKey from 的第一个元素,在 destinationKey 并在 to 增加sourceKey from 的第一个元素
@Test
public void move() {
    String value = (String) redisTemplate.opsForList().move("OpsForList", RedisListCommands.Direction.LEFT, "TempOpsForList", RedisListCommands.Direction.LEFT);
    System.out.println(value);
}

在这里插入图片描述
在这里插入图片描述

22 move(K, Direction, K, Direction, long, TimeUnit)

和21一样,只增加了移动的超时时间

List< V> range(K key, long start, long end)

獲取start~end 的 value list

K 是否存在start~end 是否有数据返回
start~end 的 value list
空 List
-空 List
@Test
public void range() {
    List<Object> value = redisTemplate.opsForList().range("OpsForList", 0, 5);
    System.out.println(value);
}
[C, B, A]

在这里插入图片描述

24 Long remove(K key, long count, Object value)

删除等于从左到右移动的等于value的第一个元素

K 是否存在count操作返回
> 0删除等于从左到右移动的等于value的第一个元素删除的个数
< 0删除等于从右到左移动的等于value的第一个元素删除的个数
= 0删除等于value的所有元素删除的个数
--0
@Test
public void remove() {
    Long value = redisTemplate.opsForList().remove("OpsForList", 0, "A");
    System.out.println(value);
}
1

在这里插入图片描述
在这里插入图片描述

25 void set(K key, long index, V value)

新增或者替换数据

K 是否存在index 和 size操作
index > size报错
index < -size报错
0 < index <= size插入或者替换数据(从左往右)
-size < index < 0插入或者替换数据(从右往左)
-报错
@Test
public void set() {
    redisTemplate.opsForList().set("OpsForList", 0, "A");
}

在这里插入图片描述
在这里插入图片描述

26 size(K)

K 是否存在返回
list size
0
@Test
public void size() {
    Long size = redisTemplate.opsForList().size("OpsForList");
    System.out.println(size);
}
4

在这里插入图片描述

27 trim(K key, long start, long end)

保留 start~end 数据

K 是否存在start~end 内是否有数据操作
保留 start~end 数据
清除键值对
--
@Test
public void trim() {
    redisTemplate.opsForList().trim("OpsForList", 0, 2);
}

在这里插入图片描述
在这里插入图片描述


版权声明:本文为qq_34814092原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。