如何在.Net中使用Redis


Redis是一個key-value存儲系統。和Memcached類似,但是解決了斷電后數據完全丟失的情況,而且她支持更多無化的value類型,除了和string外,還支持lists(鏈表)、sets(集合)和zsets(有序集合)幾種數據類型。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。

Redis的代碼遵循ANSI-C編寫,可以在所有POSIX系統(如Linux, *BSD, Mac OS X, Solaris等)上安裝運行。而且Redis並不依賴任何非標准庫,也沒有編譯參數必需添加。redis的安裝出奇的簡單,這可能也是他風靡的一個原因,讓人很容易上手,不像某些東西,編譯階段就能讓人完全絕望。

先去官網下載源碼:

wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz

解壓:

tar –zxvf redis-2.4.6.tar.gz

編譯

需要說明的事,redis的安裝非常簡單,已經有現成的Makefile文件,直接運行make命令即可。

make

make install

Redis 由四個可執行文件:redis-benchmarkredis-cliredis-serverredis-stat 這四個文件,加上一個redis.conf就構成了整個redis的最終可用包。它們的作用如下:

  • redis-server:Redis服務器的daemon啟動程序
  • redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
  • redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
  • redis-stat:Redis狀態檢測工具,可以檢測Redis當前狀態參數及延遲狀況

現在就可以啟動redis了,redis只有一個啟動參數,就是他的配置文件路徑。

redis-server /etc/redis.conf

注意,默認復制過去的redis.conf文件的daemonize參數為no,所以redis不會在后台運行,這時要測試,我們需要重新開一個終端。修改為yes則為后台運行redis。另外配置文件中規定了pid文件,log文件和數據文件的地址,如果有需要先修改,默認log信息定向到stdout.

下面是redis.conf的主要配置參數的意義:

  • daemonize:是否以后台daemon方式運行
  • pidfile:pid文件位置
  • port:監聽的端口號
  • timeout:請求超時時間
  • loglevel:log信息級別
  • logfile:log文件位置
  • databases:開啟數據庫的數量
  • save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。
  • rdbcompression:是否使用壓縮
  • dbfilename:數據快照文件名(只是文件名,不包括目錄)
  • dir:數據快照的保存目錄(這個是目錄)
  • appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。
  • appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啟用一次fsync、不調用fsync等待系統自己同步)

這時你可以打開一個終端進行測試了,配置文件中默認的監聽端口是6379

我們可以開啟一個Redis客戶端進行測試

[root@SNDA-192-168-1-114 ~]# redis-cli 
Could not connect to Redis at 127.0.0.1:6379: Connection refused 
not connected> exit 
[root@SNDA-192-168-1-114 ~]# redis-server /etc/redis.conf 
[root@SNDA-192-168-1-114 ~]# redis-cli 
redis 127.0.0.1:6379> quit

 

以上文章內容參考張善友的博文,文章地址:http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html

 

下面主要介紹下如何在DoNet中使用,本篇只是入門篇,如果需要更深入的話,請期待下篇。呵呵。。

首先,和一般數據庫一樣,我們連接sql數據庫需要ODBC,那么連接redis也不列外,在這里我使用的是官網推薦推薦的ServiceStack.Redis 下載后解壓得到如下dll

在項目中引用以上DLL,即可進行redis的簡單讀寫:

static void Main(string[] args)
        {
            RedisClient Redis = new RedisClient("192.168.225.129", 6379);//redis服務IP和端口
            List<string> storeMembers = new List<string>() { "one", "two", "three" };
            storeMembers.ForEach(x => Redis.AddItemToList("additemtolist", x));
            Console.WriteLine("獲取多個值:" + Redis.GetAllItemsFromList("additemtolist").Aggregate((current, item) => { return current += item + ","; }));
            Console.WriteLine("獲取指定索引的值:" + Redis.GetAllItemsFromList("additemtolist")[1]);
            var lists = Redis.Lists["additemtolist"];
            lists.Remove("one");
            lists.Clear();
            //存儲對象
            Redis.Set<UserInfo>("user", new UserInfo { Name = "大壯他哥", Sex = "" });
            var userinfo = Redis.Get<UserInfo>("user");
            Console.WriteLine(string.Format("Name is {0},Sex is {1}",userinfo.Name,userinfo.Sex));
            //存儲基本數據類型
            Redis.Set<string>("name","大壯他哥");
            Redis.Set<int>("age",25);
            Console.WriteLine(Redis.Get<string>("name"));
            Console.WriteLine(Redis.Get<int>("age"));
            Console.ReadLine();
        }

以上操作參考張占嶺的redis學習筆記,參考地址:http://www.cnblogs.com/lori/archive/2012/02/02/2335466.html

由於我的機器裝的是Centos,所有沒有Windos下的redis,需要在win下面跑redis的朋友可以參閱:http://www.cnblogs.com/yangecnu/p/Introduct-Redis-in-DotNET.html

寫的都很好,很快就可以入門。

下面推薦大家幾個網站:

Redis中文網:http://www.redis.net.cn/

可以在線編寫Redis指令的網站:http://try.redis.io/

好了,先到這里吧。等周末繼續研究下。研究這個的目的是准備做一個單點登錄的demo,之前看到有的文章用的是mc,由於自己沒有用到redis,所以借此機會來了解redis,好了,該洗洗睡了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM