菜鸡的redis之路(二) List

Redis五大类型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五种

    redisTemplate.opsForValue();//操作字符串
    redisTemplate.opsForHash();//操作hash
    redisTemplate.opsForList();//操作list
    redisTemplate.opsForSet();//操作set
    redisTemplate.opsForZSet();//操作有序set

opsForList()-操作列表

1.List range(K key, long start, long end);返回存储在键中的列表的指定元素。偏移开始和停止是基于零的索引,其中0是列表的第一个元素(列表的头部),1是下一个元素

使用:System.out.println(template.opsForList().range("list",0,-1));
结果:[c#, c++, python, java, c#, c#]

2.void trim(K key, long start, long end);修剪现有列表,使其只包含指定的指定范围的元素,起始和停止都是基于0的索引

3.Long size(K key);返回存储在键中的列表的长度。如果键不存在,则将其解释为空列表,并返回0。当key存储的值不是列表时返回错误

使用:System.out.println(template.opsForList().size("list"));
结果:6

4.Long leftPush(K key, V value);将所有指定的值插入存储在键的列表的头部。如果键不存在,则在执行推送操作之前将其创建为空列表。(从左边插入)

5.Long leftPushAll(K key, V… values);批量把一个数组插入到列表中

使用:String[] stringarrays = new String[]{"1","2","3"};
    template.opsForList().leftPushAll("listarray",stringarrays);
    System.out.println(template.opsForList().range("listarray",0,-1));
结果:[3, 2, 1]

6.Long leftPushAll(K key, Collection values);批量把一个集合插入到列表中

使用:List strings = new ArrayList();
    strings.add("1");
    strings.add("2");
    strings.add("3");
    template.opsForList().leftPushAll("listcollection4", strings);
    System.out.println(template.opsForList().range("listcollection4",0,-1));
结果:[3, 2, 1]
 
  

7.Long leftPushIfPresent(K key, V value);只有存在key对应的列表才能将这个value值插入到key所对应的列表中

使用:System.out.println(template.opsForList().leftPushIfPresent("leftPushIfPresent","aa"));
    System.out.println(template.opsForList().leftPushIfPresent("leftPushIfPresent","bb"));
==========分割线===========
System.out.println(template.opsForList().leftPush("leftPushIfPresent","aa"));
        System.out.println(template.opsForList().leftPushIfPresent("leftPushIfPresent","bb"));
结果:
0
0
==========分割线===========
1
2

8.Long leftPush(K key, V pivot, V value);把value值放到key对应列表中pivot值的左面,如果pivot值存在的话

使用:template.opsForList().leftPush("list","java","oc");
    System.out.print(template.opsForList().range("list",0,-1));
结果:[c++, python, oc, java, c#, c#]

9.Long rightPush(K key, V value);将所有指定的值插入存储在键的列表的头部。如果键不存在,则在执行推送操作之前将其创建为空列表。(从右边插入)

    使用:template.opsForList().rightPush("listRight","java");
    template.opsForList().rightPush("listRight","python");
    template.opsForList().rightPush("listRight","c++");
    结果:
    1
    2
    3

10.Long rightPushAll(K key, V… values);

        使用:String[] stringarrays = new String[]{"1","2","3"};
    template.opsForList().rightPushAll("listarrayright",stringarrays);
         System.out.println(template.opsForList().range("listarrayright",0,-1));
        结果:[1, 2, 3]

11.Long rightPushAll(K key, Collection values);

    使用:List strings = new ArrayList();
    strings.add("1");
    strings.add("2");
    strings.add("3");
    template.opsForList().rightPushAll("listcollectionright", strings);
    System.out.println(template.opsForList().range("listcollectionright",0,-1));
    结果:[1, 2, 3]
 
  

12.Long rightPushIfPresent(K key, V value);只有存在key对应的列表才能将这个value值插入到key所对应的列表中

    使用:System.out.println(template.opsForList().rightPushIfPresent("rightPushIfPresent","aa"));
    System.out.println(template.opsForList().rightPushIfPresent("rightPushIfPresent","bb"));
    System.out.println("==========分割线===========");
    System.out.println(template.opsForList().rightPush("rightPushIfPresent","aa"));
    System.out.println(template.opsForList().rightPushIfPresent("rightPushIfPresent","bb"));
结果:0
    0
==========分割线===========
    1
    2

13.Long rightPush(K key, V pivot, V value);把value值放到key对应列表中pivot值的右面,如果pivot值存在的话

    使用:System.out.println(template.opsForList().range("listRight",0,-1));
    template.opsForList().rightPush("listRight","python","oc");
    System.out.println(template.opsForList().range("listRight",0,-1));
    结果:[java, python, c++]
        [java, python, oc, c++]

14.void set(K key, long index, V value);在列表中index的位置设置value值

    使用:
    System.out.println(template.opsForList().range("listRight",0,-1));
    template.opsForList().set("listRight",1,"setValue");
    System.out.println(template.opsForList().range("listRight",0,-1));
    结果:[java, python, oc, c++]

15.Long remove(K key, long count, Object value);从存储在键中的列表中删除等于值的元素的第一个计数事件。
计数参数以下列方式影响操作:
count> 0:删除等于从头到尾移动的值的元素。
count <0:删除等于从尾到头移动的值的元素。
count = 0:删除等于value的所有元素。

    使用:System.out.println(template.opsForList().range("listRight",0,-1));
    template.opsForList().remove("listRight",1,"setValue");//将删除列表中存储的列表中第一次次出现的“setValue”。
    System.out.println(template.opsForList().range("listRight",0,-1));
    结果:[java, setValue, oc, c++]
        [java, oc, c++]

16.V index(K key, long index);根据下表获取列表中的值,下标是从0开始的

        使用:System.out.println(template.opsForList().range("listRight",0,-1));
System.out.println(template.opsForList().index("listRight",2));
结果:[java, oc, c++]
    c++

17.V leftPop(K key);弹出最左边的元素,弹出之后该值在列表中将不复存在

    使用:System.out.println(template.opsForList().range("list",0,-1));
    System.out.println(template.opsForList().leftPop("list"));
    System.out.println(template.opsForList().range("list",0,-1));
    结果:
    [c++, python, oc, java, c#, c#]
    c++
    [python, oc, java, c#, c#]

18.V leftPop(K key, long timeout, TimeUnit unit);移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

19.V rightPop(K key);弹出最右边的元素,弹出之后该值在列表中将不复存在

使用: System.out.println(template.opsForList().range("list",0,-1));
    System.out.println(template.opsForList().rightPop("list"));
    System.out.println(template.opsForList().range("list",0,-1));
结果:[python, oc, java, c#, c#]
c#
[python, oc, java, c#]

20.V rightPop(K key, long timeout, TimeUnit unit);

21.V rightPopAndLeftPush(K sourceKey, K destinationKey);用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

    使用:System.out.println(template.opsForList().range("list",0,-1));
    template.opsForList().rightPopAndLeftPush("list","rightPopAndLeftPush");
    System.out.println(template.opsForList().range("list",0,-1));
    System.out.println(template.opsForList().range("rightPopAndLeftPush",0,-1));
结果:[oc, java,c#]
    [oc, java]
    [c#]

22.V rightPopAndLeftPush(K sourceKey, K destinationKey, long timeout, TimeUnit unit);
用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

技术交流群:526601468(2群)、313145288(1群-已满)

参考:

https://www.jianshu.com/p/7bf5dc61ca06/

你可能感兴趣的:(redis)