首页 > 数据库 >Redis管道

Redis管道

时间:2023-08-29 17:44:55浏览次数:56  
标签:exists get redis Redis 管道 pipelined Response Boolean

项目中可使用redis pipeline优化批量redis操作。

下面的程序判断批量redisKey是否存在:

    public List<Object> hasRedisKey(List<String> redisKeyList) {
        try {
            List<Object> resultList = redisTemplate.executePipelined(new SessionCallback<List<Objects>>() {
                @Override
                public List<Objects> execute(RedisOperations operations) throws DataAccessException {
                    for (String redisKey : redisKeyList) {
                        operations.hasKey(redisKey);
                    }
                    return null;
                }
            });
            return resultList;
        } catch (Exception e) {
            log.error("hasRedisKey() error, param: {}", redisKeyList, e);
        }
        return Lists.newArrayList();
    }

redis数据库中存在以下key:

 入参和返回结果如下:

 如果希望入参命令和响应结果一一对应,可使用如下方式:

    public void jedisPipelined() {
        JedisConnection jedisConnection = (JedisConnection) redisTemplate.getConnectionFactory().getConnection();
        Jedis nativeConnection = jedisConnection.getNativeConnection();
        Pipeline pipelined = nativeConnection.pipelined();
        Response<Boolean> existsKey1 = pipelined.exists("1");
        Response<Boolean> existsKey2 = pipelined.exists("2");
        Response<Boolean> existsKey3 = pipelined.exists("3");
        Response<Boolean> existsKey4 = pipelined.exists("4");
        Response<Boolean> existsKey5 = pipelined.exists("5");
        Response<Boolean> existsKey6 = pipelined.exists("6");
        Response<Boolean> existsKey7 = pipelined.exists("7");
        Response<Boolean> existsKey8 = pipelined.exists("8");
        Response<Boolean> existsKey9 = pipelined.exists("9");
        Response<Boolean> existsKey10 = pipelined.exists("10");
        pipelined.sync();
        Boolean result1 = existsKey1.get();
        Boolean result2 = existsKey2.get();
        Boolean result3 = existsKey3.get();
        Boolean result4 = existsKey4.get();
        Boolean result5 = existsKey5.get();
        Boolean result6 = existsKey6.get();
        Boolean result7 = existsKey7.get();
        Boolean result8 = existsKey8.get();
        Boolean result9 = existsKey9.get();
        Boolean result10 = existsKey10.get();
    }

程序运行结果:

 参考文档:https://help.aliyun.com/zh/redis/use-cases/use-pipelining-to-batch-issue-commands

标签:exists,get,redis,Redis,管道,pipelined,Response,Boolean
From: https://www.cnblogs.com/NguyenVm/p/17665485.html

相关文章

  • redis的5大数据类型
    redis五大类型都有key,或者将key理解为java中一个对象基础指令基本为COMMANDKEY_NAME五大数据类型分别为String,Hash,List,Set,SortedSet字符串Stringredis127.0.0.1:6379>SETrunoobkeyredisOKredis127.0.0.1:6379>GETrunoobkey"redis"哈希表Hashredis127.0.0.1:......
  • redis缓存优化
    目录一缓存优化1.1缓存更新策略1.2配置文件中设置二穿透,击穿,雪崩2.1缓存穿透2.2缓存击穿2.3缓存雪崩一缓存优化1.1缓存更新策略#redis数据放在内存中,输入如果满了,再放数据--->肯定能放进去 -老数据怎么样?#方案LRU-LeastRecentlyUsed没有被使用时间最长的......
  • 【6.0】Docker部署Redis
    【一】拉取Redis镜像dockerpullredis该命令将从DockerHub上获取最新的Redis镜像,并将其下载到本地。【二】创建数据和配置目录mkdir/root/datavim/root/redis.conf第一行命令创建一个目录用于持久化Redis数据。第二行命令使用vim编辑器创建一个Redis配置文件,文件......
  • win11安装redis步骤详解
    1、下载及解压    https://www.runoob.com/redis/redis-install.html 2、启动redis 以管理员身份,打开一个cmd窗口, 切换目录到redis安装目录下执行:redis-server.exeredis.windows.conf如果不制定配置文件,那么默认是不需要密码的后面的那个redis.windows.co......
  • redis执行lua脚本
    目录redis执行lua脚本简介常规命令实例evalscriptloadevalshascriptexistsscriptflushscriptkilllua脚本文件执行redis执行lua脚本简介1.原子操作:redis对lua脚本执行具备原子性不需要事务维护2.复用高效:客户端发送的脚本除非通过scriptflush清除否则会一直被缓存......
  • redis集群-Cluser
    目录一RedisCluser介绍背景1.1问题1.2解决二数据分布(分布式数据库)2.1存在问题2.2分区方式2.2.1顺序分区2.2.2哈希分区三集群搭建四python操作集群一RedisCluser介绍背景https://www.cnblogs.com/liuqingzheng/articles/17324393.html1.1问题#存在问题1并发量......
  • redis哨兵Sentinel
    目录一主从复制高可用二哨兵三安装配置四python操作哨兵一主从复制高可用#主从复制存在的问题:1主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master---->哨兵做高可用2主从复制,只能主写数据,所以写能力和存储能力有限----->使用集群解决#......
  • 一台服务器上部署 Redis 伪集群
    哈喽大家好,我是咸鱼今天这篇文章介绍如何在一台服务器(以CentOS7.9为例)上通过redis-trib.rb工具搭建Rediscluster(三主三从)redis-trib.rb是一个基于Ruby编写的脚本,其功能涵盖了创建、管理以及维护Redis集群的各个方面值得注意的是,随着时间的推移,一些较新版本的Redi......
  • redis主从复制
    目录一什么是主从复制1.1主从复制:一主一从,一主多从1.2特点1.3Redis主从复制的作用二主从原理2.1主库是否要开启持久化(一般情况要开启)3.2方式一3.3方式二:配置文件方式一什么是主从复制redis单实例--->容易产生机器故障;容量瓶颈;QPS(每秒查询率)瓶颈1.1主从复制:一主一......
  • redis分布式锁,setnx+lua脚本的java实现
    1前言在现在工作中,为保障服务的高可用,应对单点故障、负载量过大等单机部署带来的问题,生产环境常用多机部署。为解决多机房部署导致的数据不一致问题,我们常会选择用分布式锁。目前其他比较常见的实现方案我列举在下面:基于缓存实现分布式锁(本文主要使用redis实现)基于数据库实......