引言
1 | 某个项目想利用redis实现业务锁,比如抽奖只允许被抽中一次, 那么在并发的情况下一定是要锁的,我们用django模 |
服务器配置
1 | 双核,三个端口,nginx做代理(每个权重都为一样) |
使用hset
redis数据结构
1 | yunson---{'num':100}(json格式) |
代码
1 | class MR(APIView): |
测试
1 | ab -n 1200 -c 400 http://127.0.0.1/mr |
结果
1 | This is ApacheBench, Version 2.3 <$Revision: 655654 $> |
优化使用incr
redis数据结构
1 | yunson---0 |
代码
1 | class MR(APIView): |
测试
1 | ab -n 1200 -c 400 http://127.0.0.1/mr |
结果
1 | This is ApacheBench, Version 2.3 <$Revision: 655654 $> |
总结
1 | 在业务逻辑控制锁的时候,尤其是在并发的时候可以考虑利用redis的这个机制,当然用数据库 |