网站建设青雀,品牌策划与推广方案,昆明网站空间,网站的建设公司哪家好1.Token 机制#xff1a;
a首先客户端请求服务端#xff0c;获取一个 token#xff0c;每一次请求都获取到一个全新的 token#xff08;当然这个 token 会有一个超时时间#xff09;#xff0c;将 token 存入 redis 中#xff0c;然后将 token 返回给客户端。
b客户端…1.Token 机制
a首先客户端请求服务端获取一个 token每一次请求都获取到一个全新的 token当然这个 token 会有一个超时时间将 token 存入 redis 中然后将 token 返回给客户端。
b客户端将来携带刚刚返回的 token 去请求一个接口。
c服务端收到请求后分为两种情况
ⅰ如果 token 在 redis 中直接删除该 token然后继续处理业务请求。
ⅱ如果 token 不在 redis 中说明 token 过期或者当前业务已经执行过了那么此时就不执行业务逻辑。
d优势实现简单。
e劣势多了一个获取 token 的过程。
2.去重表主要是利用 MySQL 的唯一索引机制来实现的
a客户端请求服务端服务端将这次的请求信息请求地址、参数。。。存入到一个 MySQL 去重表中这个去重表要根据这次请求的某个特殊字段建立唯一索引或者主键索引。
b判断是否插入成功
ⅰ成功继续完成业务功能。
ⅱ失败表示业务已经执行过了这次就不执行业务了。
c存在的问题MySQL 的容错性会影响业务、高并发环境可能效率低。
3.用 Redis 的 setnx
a客户端请求服务端服务端将能代表本次请求唯一性的业务字段通过 setnx 的方式存入 redis并设置超时时间。
b判断 setnx 是否成功
ⅰ成功继续处理业务。
ⅱ失败表示业务已经执行过了。
4.设置状态字段
○要处理的数据有一个状态字段。
5.锁机制
a 乐观锁数据库中增加版本号字段每次更新都根据版本号来判断。更新之前先去查询要更新记录的版本号第二步更新的时候将版本号也作为查询条件。
ⅰselect version from xxx where idxxx;
ⅱupdate xxx set xxxxxx where xxxx and versionxxx。
b 悲观锁
ⅰ 假设每一次拿数据都会被修改所以直接上排他锁就行了。