Created
December 29, 2016 01:27
-
-
Save stableShip/2c165cd7e6167f574b874626f7770dc4 to your computer and use it in GitHub Desktop.
预约 redis锁处理
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#预约 redis锁处理 | |
## 需求 | |
现 居民预约 同一时间请求, 会导致号源超过限制, 需要限制同一时间内 相同类型预约 请求数量. | |
相关bug: http://120.24.38.201/zentao/bug-view-867.html | |
相关任务: http://120.24.38.201/zentao/task-view-587.html | |
## 方案 | |
### 基础逻辑 | |
使用redis加锁(setNx), 保证统一类型的预约请求在同一时间内只能有一个请求. 请求结束后删除锁 | |
### 超时处理 | |
为避免用户请求处理超时(如: 当请求时, 服务器崩溃), 导致死锁的情况发生, 没一个锁设置超时时间为10秒 | |
超过10秒, 自动删除掉相应的锁. | |
### 锁定义 | |
使用redis进行锁处理, 需要对不同类型的预约进行处理, 所以需要有不同的锁, 也就是需要不同的redis的key | |
key定义: | |
`项目名称+":"+不同类型预约名+":" + 预约的社区+ ":" + 预约的内容(相应科室, 专家, 计免信息)+":"+ 预约时间` | |
计免预约: `sq580:epi_booking:book + "社区id" + ":" + "预约时间" ` | |
科室预约-儿童保健: `sq580:chdh_booking:book + "社区id" + ":" + "预约时间"` | |
科室预约-专家预约: `sq580:drs_booking:book + "社区id" + ":" + "预约专家" + ":" + "预约时间"` | |
科室预约-科室预约: `sq580:drs_booking:book + "社区id" + ":" + "预约科室" + ":" + "预约时间"` | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment