本文版权归博客园和作者本人吴双共同所有 。转载爬虫请注明地址,博客园蜗牛 http://www.cnblogs.com/tdws/p/5712835.html
蜗牛Redis系列文章目录http://www.cnblogs.com/tdws/tag/NoSql/
Redis Cluster http://www.cnblogs.com/tdws/p/7710545.html
其实说多线程修改数据也不合适,毕竟redis服务端是单线程的,所有命令串行执行,只是在客户端并发发送命令的时候,导致串行的命令一些排列问题和网络时间差等造成数据不一致。本文虽然是数字的加减,但是为了说明锁的情况,故意不是用原子命令incr。也并非分布式锁的正确实现,没有考虑一些重入性等,稍后会整理一篇分布式锁的实践。
Redis分布式锁 http://www.cnblogs.com/tdws/p/5808528.html
ZK+curator 分布式锁 http://www.cnblogs.com/tdws/p/5874686.html
先配上一个简易的RedisHelper,一个set值,一个get值,一个设置并发锁,以便在我后面的操作中,你能清楚我究竟做了什么。
1 public class RedisHelper 2 { 3 public RedisClient client = new RedisClient("127.0.0.1", 6379); 4 public void Set<T>(string key, T val) 5 { 6 client.Set(key, val); 7 } 8 public T Get<T>(string key) 9 { 10 var result = client.Get<T>(key); 11 return result; 12 } 13 public IDisposable Acquire(string key) 14 { 15 return client.AcquireLock(key); 16 } 17 }