qq_29576895 2018-12-10 10:16 采纳率: 0%
浏览 2667

lettuce 怎么保证多线程安全的

lettuce底层通过netty实现了多线程安全,即一个tcp连接可以同时处理多个redis操作,
我现在比较疑问的是,lettuce怎么保证返回的结果能够对应各自发送的redis操作。

@Test
    public void testLettuce() throws InterruptedException {
        RedisClient redisClient = RedisClient.create("redis://zex1240888747@10.21.7.72:6379/0");
        StatefulRedisConnection<String, String> connection = redisClient.connect();
        RedisCommands<String, String> syncCommands = connection.sync();
        ThreadPoolExecutor t = (ThreadPoolExecutor)Executors.newFixedThreadPool(2);
        t.submit(()->{
           String key1 =  syncCommands.set("key1","111");
        });
        t.submit(()->{
            String key2 =  syncCommands.set("key2", "Hello, Redis!");
        });
        Thread.sleep(2000);
        connection.close();
        redisClient.shutdown();
    }

代码,如上,他们的返回结果有可能同时返回,那么他是怎么保证key1和key2分别对应的是key1和key2的返回结果,请各位大神帮我解疑。

  • 写回答

2条回答 默认 最新

  • zhongzhijun 2019-02-22 11:06
    关注

    redis协议里是没有请求ID的,但是,redis一个重要特点是单线程,这样就可以根据请求的顺序,保证响应能够对应到哪个请求

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题