码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 学习笔记1

时间:2014-09-23 12:47:11      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:io   os   ar   for   数据   问题   cti   on   c   

1、安装了一下Redis,有绿色版,很方便,配置也很简单;

2、试验了一下主从复制,效果没大规模进行,不是很了解,Master可以读写,但Slave只能读,利用这个性质可以进行读写分离,提高吞吐性能;

3、用C#(ServiceStack.Redis)访问了一下,没什么很特别的;

4、ServiceStack并不是传统意义上的线程安全,仅仅适用每个线程用自己的RedisClient才会安全,多个线程用同一个Client还是会有问题的。潜在问题当然是死锁。


using (RedisClient redisClient = new RedisClient(host, 6379))
            {
                //获取指定Key的值,没有为空null;

                string theV = redisClient.Get<string>(elementKey);
                this.textBox1.Text = theV;
                //设置一个Key-value对,Key存在则修改.
                //这个泛型封装是作者库里专门为C#类型做了转换,可以简化你的编程,Redis本身没有这么丰富的类型.
                redisClient.Set<string>("KeyAAA","sadfsdffdsa");
                
                //事务
                using (IRedisTransaction IRT = redisClient.CreateTransaction())
                {
                    try
                    {

                        IRT.QueueCommand(r => r.Set("keyA", 20));
                        IRT.QueueCommand(r => r.Increment("keyA", 1));
                        //注意,如果有下面这条语句,提交事务会报错,这说明启动事务后的
                        //Client操作都必须在IRT内调用.
                        //redisClient.Set<string>("KeyABC", "sadfsdffdsa");
                        
                        //throw new Exception("数据库操作错误!");
                        // 提交事务
                        IRT.Commit();
                    }
                    catch
                    {
                        IRT.Rollback();
                    }
                    //keyA不存在,但KeyABC的值存在.
                    string theV1 = redisClient.Get<int>("keyA").ToString();
                    string theV2 = redisClient.Get<string>("KeyABC");
                    
                    //并发锁
                    redisClient.Add("mykey", 1);
                    // 支持IRedisTypedClient和IRedisClient
                    //注意这里是Form调用,测试不出效果,如果是网页程序,则可获得锁效果.
                    using (redisClient.AcquireLock("testlock"))
                    {
                        var counter = redisClient.Get<int>("mykey");
                        Thread.Sleep(100);
                        redisClient.Set("mykey", counter + 1);
                    }

                }


            }

Redis 学习笔记1

标签:io   os   ar   for   数据   问题   cti   on   c   

原文地址:http://blog.csdn.net/hawksoft/article/details/39494155

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!