Spring-Data之StringRedisTemplate-boundListOps方法描述
2016-11-20 00:00
381 查看
上篇文章已经介绍过对 boundValueOps 方法的介绍,下面是链接地址:
https://my.oschina.net/u/2278977/blog/787112
上面有介绍需要的 jar包以及配置等
如果各位同学不想看测试代码,跟测试结果,可以直接通过导航,进入到方法描述中,找你需要的方法描述
下面直接上测试代码:--------------------------------分割线-----------------------------------------
Left开头 方法的一些介绍,因为各方法条件不一,所以代码我就拆分成几段来展示了,一起展示会比较混乱,多处打印,会用 分割线来分割,表示不同方法的结果打印
测试代码://先获取 redis对value为list的操作对象 BoundListOperations<String, String> listRedisTemplate = redisTemplate.boundListOps("hexiaowu"); //获取key的名称 String key = listRedisTemplate.getKey(); System.out.println("key:"+key); //左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } //左边出栈,PS:这不是查询,这是取出 String s = listRedisTemplate.leftPop(); System.out.println("list中,最左边的value为:"+s);
测试结果:
0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 list中,最左边的value为:5
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //在list中第一个跟value一样的值的左边压栈,如果有则返回在栈中的index,如果没有这个value,则返回-1,不压栈进入 Long value = listRedisTemplate.leftPush("1", "a"); System.out.println("leftPush返回结果:"+value); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); } System.out.println("---------------"); Long value1 = listRedisTemplate.leftPush("c", "C"); System.out.println("leftPush返回结果:"+ value1); List<String> range2 = listRedisTemplate.range(0, -1); for (int i = 0; i < range2.size(); i++) { System.out.println(i+"位置的value是:"+range2.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
leftPush返回结果:7
0位置的value是:5
1位置的value是:4
2位置的value是:3
3位置的value是:a
4位置的value是:1
5位置的value是:2
6位置的value是:1
leftPush返回结果:-1
0位置的value是:5
1位置的value是:4
2位置的value是:3
3位置的value是:a
4位置的value是:1
5位置的value是:2
6位置的value是:1
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //传入多个参数,从右到左,往list里面压栈,并且返回list长度 Long aLong = listRedisTemplate.leftPushAll("a","b","c"); System.out.println("leftPushAll返回值="+aLong); List<String> range2 = listRedisTemplate.range(0, -1); for (int i = 0; i < range2.size(); i++) { System.out.println(i+"位置的value是:"+range2.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
---------------
leftPushAll返回值=9
0位置的value是:c
1位置的value是:b
2位置的value是:a
3位置的value是:5
4位置的value是:4
5位置的value是:3
6位置的value是:1
7位置的value是:2
8位置的value是:1
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //判断list里面是否有数据,如果有,则左边压栈,如果没有,则不压栈,并且返回0 Long value = listRedisTemplate.leftPushIfPresent("a"); System.out.println("leftPushIfPresent返回结果="+value); List<String> range3 = listRedisTemplate.range(0, -1); for (int i = 0; i < range3.size(); i++) { System.out.println(i+"位置的value是:"+range3.get(i)); } //删除key,测试leftPushIfPresent方法 redisTemplate.delete(key); //判断list里面是否有数据,如果有,则左边压栈,如果没有,则不压栈,并且返回0 Long value1 = listRedisTemplate.leftPushIfPresent("a"); System.out.println("---------------"); System.out.println("leftPushIfPresent返回结果="+value1);
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
---------------
leftPushIfPresent返回结果=7
0位置的value是:a
1位置的value是:5
2位置的value是:4
3位置的value是:3
4位置的value是:1
5位置的value是:2
6位置的value是:1
---------------
leftPushIfPresent返回结果=0
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //list最左边数据,出栈,并且设定剩余value的缓存时间 String s = listRedisTemplate.leftPop(1, TimeUnit.DAYS); System.out.println("leftPop返回结果="+s); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
---------------
leftPop返回结果=5
0位置的value是:4
1位置的value是:3
2位置的value是:1
3位置的value是:2
4位置的value是:1
Right开头 方法的介绍,因为 right方法跟left方法基本一致,就不上代码了,直接描述就好了
这就是 right开头的所有方法.![](https://static.oschina.net/uploads/space/2016/1120/203901_dh6n_2278977.png)
right方法,对比left不同的在于,rightPush方法,是从数组的右边进行压栈
rightPop方法,是从数组的右边进行出栈
以上,就是left跟right的不同,只是出入栈的顺序不同而已,我就不上测试代码了,有兴趣的同学,可以自己测试一下,看看是否是跟我描述的一致----------------------------我是华丽的分割线-------------------------------------
接下来,就是其他方法的介绍了,毕竟不可能只有那么几个方法对吧!
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //替换list中,在index下标位置的value listRedisTemplate.set(1,"a"); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
---------------
0位置的value是:5
1位置的value是:a
2位置的value是:3
3位置的value是:1
4位置的value是:2
5位置的value是:1
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("5"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); // 移除list中 count个value为5的值,并且返回移除的数量, // 如果count为0,或者大于list中为value为5数量的总和,那么移除所有value为5的值,并且返回移除数量 Long b = listRedisTemplate.remove(0, "5"); System.out.println("remove返回结果="+b); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:5 --------------- remove返回结果=2 0位置的value是:4 1位置的value是:3 2位置的value是:2
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //返回list中,下标为index的值,如果超过list长度,那么返回null //如果传入的是负数,会转为绝对值,如果负数的绝对值超过list的长度,也返回null String index5 = listRedisTemplate.index(1); System.out.println("index返回结果="+index5);
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:1 --------------- index返回结果=4
测试代码:
//左边压栈,并且返回在list中的下标 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //只保留list从start开始,到end结束位置的value,其余位置的value全部移除 listRedisTemplate.trim(1, 4); //查询list从0开始,到index位的值,如果是-1,则表示查询出来所有 List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
测试结果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:1 --------------- 0位置的value是:4 1位置的value是:3 2位置的value是:2 3位置的value是:1
剩余一些其他方法,在上篇文章中已经介绍过,在这就不介绍了,如果有没看过上面文章的,这是跳转地址,可以去查看一下:https://my.oschina.net/u/2278977/blog/787112
----------------------------我是华丽的分割线-------------------------------------→→→→→→boundListOps接口文档在这
方法名称 | 方法描述 |
List<V> range(long start, long end) | 从star位置开始获取list到end位置的值,并且返回 |
void trim(long start, long end) | 保留从start到end截止位置的value,其余的,全部移除 |
Long size() | 获取list的长度,并且返回长度 |
Long leftPush(V value) | 左边压栈,并且返回在list中的index |
Long leftPushAll(V... values) | 多参数左边压栈,参数位置也是从左往右入栈,并且返回list的长度 |
Long leftPushIfPresent(V value) | 检查list内是否有value,如果有,从左边压栈,并且返回list长度,如果list内没有元素,不入栈,并且返回0 |
Long leftPush(V pivot, V value) | 在list中从左往右第一个跟pivot一样的值的左边压栈,并且返回list长度,如果没有这个pivot,则返回-1,不入栈 |
Long rightPush(V value) | 从list右边入栈,并且返回入栈后的index |
Long rightPushAll(V... values) | 多参数右边入栈,参数位置也是从左往右入栈,并且返回list的长度 |
Long rightPushIfPresent(V value) | 检查list内是否有value,如果有,从右边入栈,并且返回list长度,如果list内没有元素,不入栈,并且返回0 |
Long rightPush(V pivot, V value) | 在list中从右往左第一个跟pivot一样的值的左边压栈,并且返回list长度,如果没有这个pivot,则返回-1,不入栈 |
V leftPop() | 从list左边开始出栈一位 |
V leftPop(long timeout, TimeUnit unit) | 从list左边出栈一位,并且设定剩下元素的缓存时间 |
V rightPop() | 从右边出栈一位 |
V rightPop(long timeout, TimeUnit unit) | 从右边出栈一位,并且设定剩下元素的缓存时间 |
Long remove(long i, Object value) | 移除list中 count个value为5的值,并且返回移除的数量, 如果count为0,或者大于list中为value为5数量的总和,那么移除所有value为5的值,并且返回移除数量 |
V index(long index) | 返回list中,下标为index的值,如果超过list长度,那么返回null 如果传入的是负数,会转为绝对值,如果负数的绝对值超过list的长度,也返回null |
void set(long index, V value) | 替换list中,在index下标中的元素 |
欢迎转载,请注明出处跟作者,谢谢!
相关文章推荐
- Spring-Data之StringRedisTemplate-boundValueOps方法描述
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Spring Data Redis 使用redis的一些方法点
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- spring-data-redis使用RedisTemplate模板存储时键值与预设不一致的解决方法
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Spring Data Redis 二:RedisTemplate实现事物问题剖析和解决
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- 使用Spring-Data-Redis存储对象(redisTemplate)
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
- Maven中Spring-Data-Redis存储对象(redisTemplate)
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解