程序员子龙(Java面试 + Java学习) 程序员子龙(Java面试 + Java学习)
首页
学习指南
工具
开源项目
技术书籍

程序员子龙

Java 开发从业者
首页
学习指南
工具
开源项目
技术书籍
  • 基础

  • JVM

  • Spring

  • 并发编程

  • Mybatis

  • 网络编程

  • 数据库

  • 缓存

    • Redis

      • Redis基础知识
      • redis底层数据结构
      • 发布和订阅
      • 分分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有!
      • 缓存和数据库一致性解决方案
      • 详解redis的bitmap
      • 面试常问使用缓存出现的问题
      • Redis hot key 发现以及解决办法
      • Redis实现排行榜功能实战
      • Redis 管道技术——Pipeline
      • 11、RedisTemplate使用最详解(一)--- opsForValue()
      • RedisTemplate使用最详解(二)--- opsForList()
        • RedisTemplate使用最详解(三)--- opsForHash()
        • RedisTemplate使用最详解(四)--- opsForSet()
        • RedisTemplate使用最详解(五)--- opsForZSet()
        • Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)
        • 建议收藏!看完全面掌握,最详细的Redis总结
        • Redis分布式锁-这一篇就够了
        • 《进大厂系列》系列-Redis常见面试题
      • 本地缓存

    • 设计模式

    • 分布式

    • 高并发

    • SpringBoot

    • SpringCloudAlibaba

    • Nginx

    • 面试

    • 生产问题

    • 系统设计

    • 消息中间件

    • Java
    • 缓存
    • Redis
    程序员子龙
    2024-05-08
    目录

    RedisTemplate使用最详解(二)--- opsForList()

    # 1、leftPush(K key, V value)

    从集合左边插入值

    值重复无影响 先进先出

    redisTemplate.opsForList().leftPush("list","a");
    redisTemplate.opsForList().leftPush("list","a");
    redisTemplate.opsForList().leftPush("list","b");
    
    1
    2
    3

    # 2、leftPush(K key, V v, V v1)

    从集合左边开始在v值后边插入新值v1

    • 在集合中查找v值
    • 有多个v值时,从左边开始查到第一个v值即可(也就是最后插入的v值,靠左的v值),然后在v值左边插入新值v1
    • 不存在v时,不插入新值v1
    redisTemplate.opsForList().leftPush("list", "a", "e");
    
    1

    # 3、leftPushAll(K key, Collection values)

    从左边批量插入新值

    List<String> strings = Arrays.asList("j", "q", "k");
    redisTemplate.opsForList().leftPushAll("list", strings);
    
    1
    2

    # 4、leftPushAll(K key, V… values)

    从左边批量插入新值(同上)

    redisTemplate.opsForList().leftPushAll("list", "j", "q", "k");
    
    1

    # 5、leftPushIfPresent(K key, V value)

    如果key存在,从左边插入新值

    • key不存在,不新增
    redisTemplate.opsForList().leftPushIfPresent("list", "j");
    
    1

    # 6、leftPop(K key)

    默认移除key中最左的一个值

    redisTemplate.opsForList().leftPop("list");
    
    1

    # 7、leftPop(K key, long timeout, TimeUnit unit)

    指定过期时间后删除key中最左的一个值

    redisTemplate.opsForList().leftPop("list",1,TimeUnit.MINUTES);
    
    1

    # 8、rightPopAndLeftPush(K k1, K k2)

    移除k1中最右的值,并将移除的值插入k2中最左侧

    k1和k2不是同一个key时,k1右侧移除,k2左侧插入,k2不存在时则新增一个然后在插入 k1和k2是同一个key时,相当于把最右侧的值移到了最左侧

    redisTemplate.opsForList().rightPopAndLeftPush("list", "list2");
    
    1

    # 9、rightPopAndLeftPush(K k1, K k2, long timeout, TimeUnit unit)

    指定过期时间后,移除k1中最右的值,并将移除的值插入k2中最左侧(同上)

    k1和k2不是同一个key时,k1右侧移除,k2左侧插入,k2不存在时则新增一个然后在插入 k1和k2是同一个key时,相当于把最右侧的值移到了最左侧

    redisTemplate.opsForList().rightPopAndLeftPush("list", "list2",1,TimeUnit.MINUTES);
    
    1

    # 10、rightPush(K key, V value)

    从右侧插入新值

    redisTemplate.opsForList().rightPush("rightList",'a');
    redisTemplate.opsForList().rightPush("rightList",'b');
    redisTemplate.opsForList().rightPush("rightList",'c');
    
    1
    2
    3

    # 11、rightPush(K key, V v1, V v2)

    从右查找v1,并在v1右侧插入新值v2

    v1有多个,只找到最靠右的一个即可 v1没有,不插入

    redisTemplate.opsForList().rightPush("rightList", "b", "e");
    
    1

    # 12、rightPushAll(K key, V… values)

    从右侧批量插入

    redisTemplate.opsForList().rightPushAll("rightList", "e", "f","g");
    
    1

    # 13、rightPushAll(K key, Collection values)

    从右侧批量插入

    List<String> strings = Arrays.asList("j", "q", "k");
    redisTemplate.opsForList().rightPushAll("rightList", strings);
    
    
    1
    2
    3

    # 14、rightPushIfPresent(K key, V value)

    如果key存在,在右侧新插入value,否则不插入

    redisTemplate.opsForList().rightPushIfPresent("rightList", "a");
    
    1

    # 15、rightPop(K key)

    默认从最右侧移除一个值

    redisTemplate.opsForList().rightPop("rightList");
    
    1

    # 16、rightPop(K key, long timeout, TimeUnit unit)

    指定过期时间后,从最右侧移除一个值

    redisTemplate.opsForList().rightPop("rightList",1,TimeUnit.MINUTES);
    
    1

    # 17、index(K key, final long index)

    获取指定位置的值(index从左往右,从0开始)

    超过下标,不报错,返回null

    String string1 = (String) redisTemplate.opsForList().index("rightList", 2);
    System.out.println("string1 = " + string1);
    
    1
    2

    # 18、size(K key)

    获取对应key的集合长度

    Long size = redisTemplate.opsForList().size("rightList");
    System.out.println("size = " + size);
    
    1
    2

    # 19、set(K key, final long index, V value)

    在指定坐标位置插入(替换)新值

    index不存在,报错(ERR index out of range) key不存在,报错(ERR no such key) 从左侧插入

    redisTemplate.opsForList().set("rightList",2,"e");
    
    1

    # 20、trim(K key, long long1, long long2)

    截取下标long1和long2之间的值,包括long1和long2对应的值,并将其保留为key对应的新值

    左侧坐标从0开始,右侧从-1开始

    当long1超过坐标时(此时与long2无关),都会截取为空,key会被删除

    当long1为负时(此时与long2无关),都会截取为空,key会被删除

    当long1为正且在下标存在其中,long2为负数时,只要两个没有重叠,相当于去左去右,保留了中间的部分

    当long1为正且在下标存在其中,long2为负数时,只要两个交叉重叠,截取为空,如下图

    redisTemplate.opsForList().trim("rightList",1,3); 
    
    1

    # 21、List range(K key, long start, long end)

    获取指定下标间的值

    redisTemplate.opsForList().range("rightList", 0, -1);//获取所有值
    
    1

    22、remove(K key, long count, Object value) 从存储在键中的列表中删除等于值的元素的第一个计数事件。

    count> 0:删除等于从左到右移动的值的第一个元素; count< 0:删除等于从右到左移动的值的第一个元素; count = 0:删除等于value的所有元素。

    redisTemplate.opsForList().remove("rightList", 0, "c");
    
    1
    上次更新: 2024/06/14, 13:58:29
    11、RedisTemplate使用最详解(一)--- opsForValue()
    RedisTemplate使用最详解(三)--- opsForHash()

    ← 11、RedisTemplate使用最详解(一)--- opsForValue() RedisTemplate使用最详解(三)--- opsForHash()→

    最近更新
    01
    一个注解,优雅的实现接口幂等性
    11-17
    02
    MySQL事务(超详细!!!)
    10-14
    03
    阿里二面:Kafka中如何保证消息的顺序性?这周被问到两次了
    10-09
    更多文章>
    Theme by Vdoing | Copyright © 2024-2024

        辽ICP备2023001503号-2

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式