当前位置: 首页 > 后端技术 > PHP

Laravel乐观锁与悲观锁

时间:2023-03-29 21:45:14 PHP

1:乐观锁在laravel中,大部分乐观锁都是基于数据版本(Version)记录机制实现的。什么是数据版本?也就是给数据加上版本标识。在基于数据库表的版本方案中,一般是通过在数据库表中增加一个“版本”字段来实现的。读出数据的时候,一起读这个版本号,以后更新的时候,这个版本号加一。此时将提交数据的版本数据与数据库表中相应记录的当前版本信息进行比较。如果提交数据的版本号大于当前数据库表的版本号,则更新,否则认为是过期数据。二:悲观锁定laravel中的查询构建器包含一些功能,可以帮助您在select语法上实现“悲观锁定”。要在查询上实现“共享锁”,可以使用sharedLock方法。共享锁防止选定的数据列在事务提交之前被篡改:DB::table('users')->where('votes','>',100)->sharedLock()->get();上面的查询等价于下面的SQL语句:select*from`users`where`votes`>'100'lockinsharemode;此外,您还可以使用lockForUpdate方法。“forupdate”锁防止选定的行被其他共享锁修改或删除:DB::table('users')->where('votes','>',100)->lockForUpdate()->get();上面的查询等同于下面的SQL语句:select*from`users`where`votes`>'100'forupdate;