最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
REDIS加锁防止重复操作的原理与例子
时间:2015-11-04 编辑:简简单单 来源:一聚教程网
使用Redis加锁的方式可以防止重复操作,包括表单提交,ajax等http请求,它的原理就是redis的incr命令给键自增,如果返回值不是1,就表示是重复请求,具体看代码:
代码如下 | 复制代码 |
/** |
这里也要讲讲Redis的incr命令的用法:
INCR key命令用法
将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
代码如下 | 复制代码 |
redis> SET page_view 20 |
返回值是incr之后的值。
如果incr一个不存在的键,它会自动创建这个键并返回值1.
expire 命令示例:
expire key 22
设置键名为key(必须存在)的过期时间为22s.
再回到开始处定义的lock方法,键值为lock+当前操作地址+cookie值+自定义字符串,进行incr操作并使用expire命令设置过期时间默认1s,如是是第一次请求会返回1(expire设置缓存成功),表示设置缓存时间成功,否则返回false表示重复请求或操作。
使用的时候:
代码如下 | 复制代码 |
if(!$this->lock(1)){ //重复操作了 } |
这样就可以判断是重复操作了。
代码如下 | 复制代码 |
|
这样就解锁了,可以允许第二次一样的提交。
看看解锁方法:
代码如下 | 复制代码 |
/** |
这里使用了Redis的del命令。
相关文章
- Garageband章节怎么重复 重复章节的方法 06-08
- Word2013如何快速完成重复操作 06-03
- CorelDRAW X如何撤销、重做和重复动作? 03-01
- 如何解决word文档重复标题行失效的教程 12-13
- 人人理财安全吗,被爆重复回款 资金安全遭质疑 09-18
- photoshop排版中的重复基础知识原则分享 08-25