Redis-批处理

Redis 批处理是一种提高与Redis服务器交互效率的技术,它允许客户端一次性发送一组命令并在服务器端一次性执行,减少了网络往返时间和命令解析的开销。批处理通常用于执行一系列相关操作,如数据批量插入、更新或查询。以下是关于Redis批处理的一些关键概念、方法和注意事项:

原生的M操作代码示例:

/**
     * 批处理-mset
     */
    @Test
    void testMxx(){
        Jedis jedis = new Jedis("localhost", 6379);
        String[] arr = new String[2000];
        int j;
        long l = System.currentTimeMillis();
        for (int i = 1; i < 100000; i++) {
            j = (i % 1000) << 1;
            arr[j] = "test:key_" + i;
            arr[j + 1] = "value_" + i;
            if (j == 0){
                jedis.mset(arr);
            }
        }
        long l1 = System.currentTimeMillis();
        System.out.println("耗时:" + (l1 - l));

    }

Pipeline批处理

/**
     * 批处理-管道
     */
    @Test
    void testPiping(){
        Jedis jedis = new Jedis("localhost", 6379);
        long l = System.currentTimeMillis();
        // 创建管道
        Pipeline pipelined = jedis.pipelined();

        for (int i = 1; i < 100000; i++) {
            pipelined.set("test:key_" + i, "value_" + i);
            if (i % 1000 == 0) {
                pipelined.sync();
            }
        }
        long l1 = System.currentTimeMillis();
        System.out.println("耗时:" + (l1 - l));
    }

注意事项:

  1. 批处理时不建议一次携带太多命令
  2. Pipeline的多个命令之间不具备原子性
04-17 12:22