那點所謂的分散式——redis 日常開發中,總會接觸到一些好玩的東西,比如這篇的redis,一說到redis,可能就有人跟memcache做比較了,是呀, memcache只能說是簡單的kv記憶體數據結構,而redis支持的數據類型就豐富多了,當然最能讓人看上眼的就是SortedSet。 有了它,我們 ...
那點所謂的分散式——redis
日常開發中,總會接觸到一些好玩的東西,比如這篇的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的問題,非常爽~