- The function
normalGetAndSet
only Get and Set. So if a bunch of Goroutine comes to it at the same time, it's dead because of racing problem. - The other two
transactionGetAndSet
andtransactionGetAndSetWithVersion
use WATCH to check if the given key is updated before the transaction is executed. If at least one of the given keys is updated, abort the transaction. And because we abort the transaction, we'll need to restart until it's successfully executed. - So if you execute, because
normalGetAndSet
has racing problem, it's a miracle if the final value reaches to 10, whereas the other 2transactionGetAndSet
andtransactionGetAndSetWithVersion
will consistenly reach the value of 10 because of the WATCH operation keeping the data racing problem in check. transactionGetAndSetWithVersion
adds an addition key which is the version key, so redis can watche that version key instead of the whole chunk of CacheData. If the CacheData is too big, having the version key can be much better. Say if we have 1 million keys, and 1 version for each key, each version is just a number, say 8 bytes, so for 1 million key, we'll sacrifice 8 MB temporarily to have better performance, which is not a bad thing because Redis doesn't have much problem with an extra 8 MB. (I think xD)- Setup cluster locally: https://www.youtube.com/watch?v=N8BkmdZzxDg
race-redis's Introduction
race-redis's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.