日常開發中,總會接觸到一些好玩的東西,比如這篇的redis,一說到redis,可能就有人跟memcache做比較了,是呀,
memcache只能說是簡單的kv記憶體資料結構,而redis支援的資料類型就豐富多了,當然最能讓人看上眼的就是SortedSet。
有了它,我們就可以玩一些“貪心”的問題,比如適合“貪心”的優先隊列,說到優先隊列,我們以前實現了僅僅是記憶體形式的,
哎,記憶體畢竟是記憶體,當有海量資料的時候,最好能有一個序列化到硬碟的操作。。。恰恰這個情境redis就可以辦到。。。
一:快速搭建
好了,我們知道redis比較適合做的事情了,現在我們可以進行快速搭建。
第一步:下載redis-2.0.2.zip (32 bit)。然後改名為redis放在D盤中。
最重要的也就是下面兩個:
redis-server.exe: 這個就是redis的服務端程式。
redis-cli.exe: 服務端開啟後,我們的用戶端就可以輸入各種命令測試了。
我們可以看到兩點:
①:沒有指定config file。
原來redis建議我們做一個設定檔,那我就搞段配置。
daemonize: 是否以“守護進程”的方式開啟,當是守護進程的時候就不受控制台的影響了。
logfile: log檔案位置。
database: 開啟資料庫的個數。
dbfilename: 資料快照檔案名稱。
save * *: 儲存快照的頻率,第一個為時間,第二個為寫操作。
將這些配置好後,我們再看看:
②:我們看到redis預設的開放連接埠為6379。
二:安裝驅動
好了,redis已經搭建完畢了,現在我們就要用C#去操作redis,這也是我最渴望的功能,優先隊列~,先下載C#驅動,
就可以看到如下3個dll。
最後我們做下小測試:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var client = new RedisClient("127.0.0.1", 6379); 6 7 //最後一個參數為我們排序的依據 8 var s = client.AddItemToSortedSet("12", "百度", 400); 9 10 client.AddItemToSortedSet("12", "Google", 300);11 client.AddItemToSortedSet("12", "阿里", 200);12 client.AddItemToSortedSet("12", "新浪", 100);13 client.AddItemToSortedSet("12", "人人", 500);14 15 //升序擷取最一個值:"新浪"16 var list = client.GetRangeFromSortedSet("12", 0, 0);17 18 foreach (var item in list)19 {20 Console.WriteLine(item);21 }22 23 //降序擷取最一個值:"人人"24 list = client.GetRangeFromSortedSetDesc("12", 0, 0);25 26 foreach (var item in list)27 {28 Console.WriteLine(item);29 }30 31 Console.Read();32 }33 }
AddItemToSortedSet: 第三個參數也就是我們要排序的依據,這也非常適合我們做topK的問題,非常爽~