程序准备
redis部署

redis客户端
package org.example;
import io.netty.channel.SingleThreadEventLoop;
import io.netty.channel.nio.NioEventLoopGroup;
import org.redisson.Redisson;
import org.redisson.api.RAtomicLong;
import org.redisson.api.RFuture;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.TransportMode;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.concurrent.*;
// 按两次 Shift 打开“随处搜索”对话框并输入 `show whitespaces`,
// 然后按 Enter 键。现在,您可以在代码中看到空格字符。
public class Main {
private static final ExecutorService work = Executors.newSingleThreadExecutor();
public static void main(String[] args) throws InterruptedException {
int requests = Integer.parseInt(args[0]) ;
int threads = args.length > 1 ? Integer.parseInt(args[1]) : 1;
Config config = new Config();
config.setTransportMode(TransportMode.NIO); // 默认是NIO的方式
config.useSingleServer()
//可以用"rediss://"来启用SSL连接,前缀必须是redis:// or rediss://
.setAddress("redis://192.168.253.148:6379")
// .setPassword("123456")
;
config.setThreads(threads);
config.setNettyThreads(threads);
config.setEventLoopGroup(new NioEventLoopGroup(threads));
RedissonClient redissonClient = Redisson.create(config);
RAtomicLong key_long = redissonClient.getAtomicLong("key_long");
key_long.set(0);
CountDownLatch latch = new CountDownLatch(requests);
long start = System.currentTimeMillis();
for(int i = 0; i < requests; i++)
{
RFuture<Long> future = key_long.incrementAndGetAsync();
work.submit(
() ->
{
Long tmp;
try {
tmp = future.get();
latch.countDown();
System.out.println("第" + tmp + "次请求");
} catch (InterruptedException | ExecutionException e) {
e.printStackTr