### redis分布式锁
*****
基于 redis 和 swoole 我们实现了 redis 分布式锁,在现在docker,微服务成为主流下分布式锁也很重要;
| 方法 |含义 |
| --- | --- |
|lock($key, $timeout = 500) | 加锁 |
|unlock($key) | 解锁 |
|tryLock($key) | 尝试加锁 |
|lockRead($key, $timeout = 500) | 加只读锁 |
|tryLockRead($key) | 尝试只读锁 |
注意加锁和解锁是成对出现的哦,别忘了解锁
>[info]为了防止特殊情况产生,产生死锁,默认我们任何锁都设置了过期时间10s,也就是任何锁定时间都不可以超过10s
#### lock
*****
加锁操作。如果有其他进程持有锁(固有锁,只读锁都算),那这里将进入阻塞,直到持有锁的访问 unlock。timeout 超时时间,一定时间后如果还是没有获取到锁将返回 false
加锁成功返回true
加锁失败返回true
#### unlock
*****
解锁成功返回true
### tryLock
*****
加锁操作。与lock方法不同的是,tryLock()不会阻塞,它会立即返回。
加锁成功返回true,此时可以修改共享变量。
失败返回false,表示有其他人持有锁。
### lockRead
*****
只读加锁。
在持有读锁的过程中,其他进程依然可以获得读锁,可以继续发生读操作
但不能lock或tryLock,(会等待释放)这两个方法是获取独占锁,在独占锁加锁时,其他进程无法再进行任何加锁操作,包括读锁
当另外一个进程获得了独占锁(调用lock/tryLock)时,lockRead会发生阻塞,直到持有独占锁的释放锁
- 序言
- 开始
- 安装 RapPhp
- 应用目录
- 配置文件
- 入口类
- MVC架构
- 控制器基础
- 前置方法
- 拦截器
- 动态路由
- Request和Response
- Cookie和Session
- 模板引擎
- 请求缓存
- 流程图
- 数据库
- 基础使用
- 查询语法
- 查询操作
- where
- order
- limit
- lock
- fields
- join
- distinct
- having
- group
- force
- 查询方法
- 多数据源
- 数据库类型
- Record模型
- 使用Record
- 增删改
- 查找方法
- 数据类型
- 基本类型
- JSON 数据类型
- time
- date
- attach
- const
- 迭代操作
- record 更多方法
- 注入与转json
- 多级缓存
- 多数据源
- 模型生成
- 回调事件
- IOC控制反转
- Ioc基础概念
- 依赖注入
- Scope作用域
- 构造器
- 循环依赖
- AOP面向切面
- AOP使用
- 切面
- AopBuild
- 生成 aop 文件
- 事件勾子
- 执行循序
- Swoole
- Http服务器
- 用户进程
- Context上下文(重要)
- 协程
- 特色功能
- 限流器
- 连接池
- 数据库连接池
- Redis 连接池
- 通用连接池
- Rpc 远程调用
- Rpc服务提供方
- Rpc客户端
- 熔断器与服务降级
- Redis 分布式锁
- 其他功能
- 缓存
- redis
- 文件存储
- 存储简介
- 本地存储
- OSS存储
- 配置
- 日志
- 验证器
- FileUtil
- 数组Util
- Http工具
- 多语言
- 命令行
- 使用命令行
- 生成模型文件
- AOP动态文件生成
- swoole_http服务器
- 自定义命令行
- 异常与调试
- 异常抛出
- 异常处理
- 部署
- URL重写
- DOCKER 镜像(重要)
- 附录
- 回调事件
- 开发规范
- Swoole开发注意点
- 热点行更新排队机制
