单机情形下就不要考虑redis锁了,文件锁的性能和释放机制都优于redis锁。在频繁加锁释放锁的情形下,redis CPU占用额外高。
数据参考:无,一个下午的悲催总结。
如果需要更高的性能,可以参考如下内容:
多进程多线程(40)情况下,每个线程操作1000次
进程个数 10 100
文件锁 3665876 18718567
互斥锁 444270 3785420
信号量 137378859 463111685
读写锁 559855 7772213
ref: https://blog.csdn.net/overcomeunicom990702/article/details/2216244
进程个数 10 100
文件锁 3665876 18718567
互斥锁 444270 3785420
信号量 137378859 463111685
读写锁 559855 7772213
ref: https://blog.csdn.net/overcomeunicom990702/article/details/2216244
当前应用场景,防止300个爬虫进程读取重复数据下载,加锁性能消耗较大,在不改变现有架构的情形下数据库读取的性能限制了并发,单个查询0.1s,即300个查询耗时30s,直接导致锁的存在感很弱。
解决方案:如果需要高并发,还是推荐走异步队列进行分散消费,否则性能瓶颈始终存在。
当前还没有任何评论