What is Atomic lock?
Atomic lock is not a term directly related to a laravel itself.The term is actually from database.I hope you have know about ACID principle in database.They are
Atomic lock comes under the first property atomicity.To learn more about ACID property.
Let jump into practical usage:
In at some point of your dev life or else you may have built a e-commerce application or some kind of reservation system.just think of the situation in e-commerce application two user where placing the order at same time.but,the stocks left is only 1.As we know all web application process request in concurrently it may cause some in-consistency.
example: 2-orders may placed but we know that only 1 left in stock.
How will handle this situation? roll up your heads for some time for solution just share your idea in comments if you faced the same kind of situation and how did you handle this problem?
if you are love to watch video based content for the solution then just watch the video below & subscribe the channel in YouTube called LaravelDaily.This article is inspired from this video content
For this kind of solution where the Laravel Atomic lock come into play which help us to handle this problem like pro.
You can write application logic inside the
Cache::lock method & the that time you specified it wont process other request under the hood laravel uses database driver to implement this feature for you.Once the specified time is completed it will process the next request in a queue.
So,The first order get placed after that the stock left would become 0,because we are processing the request in a queue.when a second request comes in the stock left is 0.the second order get rejected.you can use this for all kind of raced scenario also example ticket reservation & hotel bookings etc.
Hopefully this will be useful to some of you :)
I'd love to hear what you're comments & more example let me know in the comments below!
Follow for more content like this & share
Top comments (1)
Hey, that was a nice read, you got my follow, keep writing 😉