mq,redis问题,知道的大神请指点一下,谢谢

1.redis问题
前提:redis是一个主从结构的redis,一主两从
问题:实现一个分布式锁,setnx(主键,失效时间),线程1刚获取到锁(主还没有将数据同步到从),
进行业务处理,主节点挂了,从节点变主节点了,线程2也获得了锁,导致了问题

2.mq问题
前提:对业务数据用sharding-jdbc进行了分表操作,但是为了后台能很好的展示数据,在使用sharding-jdbc将数据插入数据库之后,同时将这条数据放入mq,
通过其他的程序来消费将数据放入es中;
问题:在使用sharding-jdbc将数据插入数据库之后,mq挂掉了,这个时候导致了数据的不同步

以上两个问题,请csdn中的互联网大神帮忙解答一下解决思路,谢谢了

1.针对这个问题,redis作者提出了集群的解决方案,但是也不是完美的方案,如果你的qps不高的话,可以尝试zookeeper的有序临时节点进行分布式锁
2.这个问题,建议不要代码中发送mq消息,可以换个思路,把发送消息的动作给切出来
-使用canel将binlog发送到mq,
-针对消息组件的稳定性,这个没有百分百完美的方案,可以尝试kafka,通过控制ack=all,但是这样也就牺牲了高吞吐的特性
还是针对具体的业务去思考把