Redis分布式锁

Redis原生事务

Redis事务功能是通过MULTI,EXEC,DISCARD,WATCH四个原语实现的,Redis会将一个事务中所有命令序列化,然后顺序执行.
1.MULTI命令用来开启一个事物.MULTI命令执行后,客户端可以继续向服务器发送多条指令,这些指令不会被立即执行,而是被放到一个队列中,当EXEC命令执行后,所有队列中的指令才会被执行.
2.EXEC执行所有事物块中的指令.返回事物块中的所有命令,将指令按照先后顺序执行,如果操作被打断会返回空值nil.
3.DISCRED命令被调用后,客户端会清空事务列表,并放弃执行事务,并从事务状态中退出.
4.WATCH命令为事务提供CAS(watch-and-set)行为,可以监控一个或多个键,一旦其中一个键被修改或删除,之后的事务就不会执行,监控一直持续到EXEC命令执行

特性

1.Redis在事务失败时,不进行回滚,而是继续执行余下的指令
2.如果一个事务中的命令出现错误,那么所有命令都不回被执行
3.如果一个事务中出现运行错误,那么正确的命令会被执行

Redis的搭建模式

1.单机: 只有一台Redis服务器,挂掉就无法工作
Redis分布式锁
2.主从: 一个Master多个Slave,Master以写为主,Slave以读为主,Master和Slave之间通过不同策略进行同步
Redis分布式锁
3.哨兵: 通过哨兵来监控Master是否故障,有则选举出新的Master取而代之
Redis分布式锁
4.集群: 高可用,分散请求.每台Redis存储不同的数据,节省内存.
Redis分布式锁

分布式概念

将系统业务进行拆分,部署到不同的服务器上协调处理.比如电商系统将购物操作拆分为: 订单系统,库存系统,支付系统…这些系统共同完成用户买东西的操作.

集群概念

同一个业务系统,通过在多台服务器上部署多个实例来保证高可用.其中某个实例故障了,不影响业务的使用.

分布式事务概念

传统系统架构中,下单,扣减库存等操作都是在一个应用和一个数据库中完成的,可以通过传统事务来保证数据的正确性.如果实在分布式系统中,涉及到跨应用,跨数据库,传统事务就无法保证数据的正确性.分布式事务要通过分布式锁来实现.

分布式锁原理

1.互斥性,保证同一时间只有一个客户端拿到锁
2.安全性,只有加锁的服务才有解锁的权限
3.避免出现死锁,设置锁过期时间
4.保证加锁与解锁操作是原子性操作