美文网首页
【快学springboot】14.操作redis之list

【快学springboot】14.操作redis之list

作者: 哈皮呀 | 来源:发表于2019-05-13 22:41 被阅读0次

    简书停更

    本人主要在头条号写文章,可以关注我的头条号【happyjava】,或者收藏我的个人博客happy的博客blog.happyjava.cn

    前言

    之前讲解了springboot(StringRedisTemplate)操作redis的string数据结构,这篇文章将会讲解list数据结构

    list数据结构具有的操作

    下图列出了redis list数据结构所具有的方法

    【快学springboot】14.操作redis之list

    StringRedisTemplate提供的方法

    RedisTemplate提供的操作redis的方法列表如下:

    【快学springboot】14.操作redis之list

    下面,我们挑一些常用的方法作为实例讲解,其它方法,可以参考API说明即可。

    range

    现在redis中有一个list,其key为:happyjava:list,并且有三个值,如下:

    【快学springboot】14.操作redis之list

    range(K key, long start, long end)方法,是获取list指定范围的内容

    start下标从零开始。如下,获取第二个到第三个的元素:

    @Test
    public void testList() {
     List<String> list = redisTemplate.opsForList().range("happyjava:list", 1, 2);
     assert list != null;
     list.forEach(System.out::println);
    }
    

    输出结果:

    blog.happyjava.cn
    ​
    www.happyjava.cn
    

    size(K key)

    获得list的大小

    @Test
    public void testSize() {
     Long size = redisTemplate.opsForList().size("happyjava:list");
     System.out.println(size);
    }
    

    输出结果:

    【快学springboot】14.操作redis之list

    leftPush(K key, V value)

    该方法标识从list的左边(上边,或者说list的头部)压入数据。如果不存在该key,则会创建该key。

    @Test
    public void testLeftPush() {
     redisTemplate.opsForList().leftPush("happyjava:list", "new happyjava");
    }
    

    执行后,去查看redis中的数据:

    【快学springboot】14.操作redis之list

    leftPushAll

    有两个重载的方法,分别为不定参数:leftPushAll(K key, V... values); ,

    集合参数:leftPushAll(K key, Collection<V> values)

    不定参数:

    @Test
    public void testLeftPushAll() {
     redisTemplate.opsForList().leftPushAll("happyjava:list","apple","happy");
    }
    

    执行之后查看数据:

    【快学springboot】14.操作redis之list

    集合参数:

    @Test
    public void testLeftPushAll() {
    // redisTemplate.opsForList().leftPushAll("happyjava:list","apple","happy");
     redisTemplate.opsForList().leftPushAll("happyjava:list", Arrays.asList("new happy1", "new happy2"));
    }
    

    执行之后查看数据:

    【快学springboot】14.操作redis之list

    rightPush(K key, V value)

    从list的尾部压入数据

    @Test
    public void testRightPush() {
     redisTemplate.opsForList().rightPush("happyjava:list","java");
    }
    

    执行之后查看redis数据:

    【快学springboot】14.操作redis之list

    rightPushAll

    该方法与leftPushAll类是,一样有两个重载的方法,如下:

    【快学springboot】14.操作redis之list

    这里就不做过多的介绍了。

    set(K key, long index, V value)方法

    可以直接设置list中某个下标的值,index从0开始

    @Test
    public void testSet() {
     redisTemplate.opsForList().set("happyjava:list",1,"test set");
    }
    

    执行之后查看redis

    remove(K key, long count, Object value)方法

    删除某个值,删除count个,从头开始删除

    现在redis中的数据如下:

    【快学springboot】14.操作redis之list

    执行一下代码:

    @Test
    public void testRemove() {
     redisTemplate.opsForList().remove("happyjava:list",2,"happy");
    }
    

    执行之后查看数据:

    【快学springboot】14.操作redis之list

    index(K key, long index)方法

    返回index(从0开始)下标的元素。现在redis数据如下:

    【快学springboot】14.操作redis之list
    @Test
    public void testIndex() {
     String value = redisTemplate.opsForList().index("happyjava:list", 1);
     System.out.println(value);
    }
    

    执行结果如下:

    【快学springboot】14.操作redis之list

    leftPop

    有两个重载的方法:

    V leftPop(K key);

    V leftPop(K key, long timeout, TimeUnit unit);

    此方法会弹出list头部的元素(弹出后就在list中删除),跟栈一样,重载的那个方法,如果list不存在数据,则会阻塞住,等有数据了就会返回(最长阻塞时间就是设置的超时时间)。该方法对应到redis的操作是BLPOP(blocking left pop)

    rightPop

    与leftPop类似,只是从list尾部弹出数据

    总结

    本文讲解了springboot操作redis的list数据结构,大部分方法都已经做了讲解和演示。list也是redis中非常常用的数据结构,以后还会继续讲解redis其它的数据结构。

    相关文章

      网友评论

          本文标题:【快学springboot】14.操作redis之list

          本文链接:https://www.haomeiwen.com/subject/fvpdaqtx.html