提交分布式锁进阶

This commit is contained in:
qiurunze 2018-12-20 00:24:51 +08:00
parent 44a1a149fb
commit be73a55ee6
2 changed files with 19 additions and 1 deletions

View File

@ -67,7 +67,7 @@
#### [分布式系统发展历程(已更新)](/docs/fenbushi.md)
#### [分布式系统](/docs/redis-code.md)
#### [mybatis源码解析--未更新](/docs/mybatis-code.md)
#### [redis专题缓存的优势及如何进行集群--更新1/3](/docs/redis-good.md)
#### [redis 使用与进阶以及如何进行集群--更新1/3](/docs/redis-good.md)
#### [spring源码--未更新](/docs/redis-code.md)
#### [分布式治理框架-dubbo - zk - 解析--未更新](/docs/redis-code.md)
#### [通信mq-Kafka--未更新](/docs/redis-code.md)

View File

@ -102,5 +102,23 @@
redis有成熟的框架redission
**Redis多路复用机制看不看都行**
linux的内核会把所有外部设备都看作一个文件来操作对一个文件的读写操作会调用内核提供的系统命令
返回一个 file descriptor文件描述符。对于一个socket的读写也会有响应的描述符称为socketfd(socket 描述符)。
而IO多路复用是指内核一旦发现进程指定的一个或者多个文件描述符IO条件准备好以后就通知该进程
IO多路复用又称为事件驱动操作系统提供了一个功能当某个socket可读或者可写的时候它会给一个通知。
当配合非阻塞socket使用时只有当系统通知我哪个描述符可读了我才去执行read操作可以保证每次read都能读到有效数据。
操作系统的功能通过select/pool/epoll/kqueue之类的系统调用函数来使用这些函数可以同时监视多个描述符的读写就绪情况
这样多个描述符的I/O操作都能在一个线程内并发交替完成这就叫I/O多路复用这里的复用指的是同一个线程
多路复用的优势在于用户可以在一个线程内同时处理多个socket的 io请求。达到同一个线程同时处理多个IO请求的目的。
而在同步阻塞模型中,必须通过多线程的方式才能达到目的
**Redis2.6以后)--lua脚本**
1. 减少网络开销在Lua脚本中可以把多个命令放在同一个脚本中运行
2. 原子操作redis会将整个脚本作为一个整体执行中间不会被其他命令插入。换句话说编写脚本的过程中无需担心会出现竞态条件
3. 复用性客户端发送的脚本会永远存储在redis中这意味着其他客户端可以复用这一脚本来完成同样的逻辑