mirror of
https://github.com/qiurunze123/miaosha.git
synced 2023-11-19 22:41:03 +08:00
提交分布式锁进阶
This commit is contained in:
parent
44a1a149fb
commit
be73a55ee6
|
@ -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)
|
||||
|
|
|
@ -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请求的目的。
|
||||
而在同步阻塞模型中,必须通过多线程的方式才能达到目的
|
||||
|
||||
**Redis(2.6以后)--lua脚本**
|
||||
|
||||
1. 减少网络开销,在Lua脚本中可以把多个命令放在同一个脚本中运行
|
||||
2. 原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件
|
||||
3. 复用性,客户端发送的脚本会永远存储在redis中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user