日常開發中,總會接觸到一些好玩的東西,比如這篇的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", "谷歌", 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的問題,非常爽~