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));
}
注意事项:
- 批处理时不建议一次携带太多命令
- Pipeline的多个命令之间不具备原子性