最常用的一種使用Redis的情景是會話緩衝(session cache)。用Redis緩衝會話比其他儲存(如Memcached)的優勢在於:Redis提供持久化。當維護一個不是嚴格要求一致性的緩衝時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎。
除基本的會話token之外,Redis還提供很簡便的FPC平台。回到一致性問題,即使重啟了Redis執行個體,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是一個極大改進,類似PHP本地FPC。
Reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的訊息佇列平台來使用。Redis作為隊列使用的操作,就類似於本地程式語言(如Python)對 list 的 push/pop 操作。
如果你快速的在Google中搜尋“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的就是利用Redis建立非常好的後端工具,以滿足各種隊列需求。例如,Celery有一個後台就是使用Redis作為broker,你可以從這裡去查看。
4、熱門排行榜/計數器
Redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中擷取到排名最靠前的10個使用者–我們稱之為“user_scores”,我們只需要像下面一樣執行即可:
根據配置完成後:
4.開啟cmd->cd到redis檔案下->輸入指令:redis-server.exe redis.conf
如下圖成功
七.它的實踐
.net通過使用servicestack支援redis
1.項目中需要引用的,清單如下:
ServiceStack.Common.dllServiceStack.Interfaces.dllServiceStack.Text.dll主要:<span style="color:#FF0000;">ServiceStack.Redis.dll</span>
2..net源碼
static RedisClient Redis = new RedisClient("127.0.0.1", 6379);//redis服務IP和連接埠 static void Main(string[] args) { //將字串列表添加到redis List<string> storeMembers = new List<string>() { "one", "two", "three" }; storeMembers.ForEach(x => Redis.AddItemToList("additemtolist", x)); //得到指定的key所對應的value集合 var members = Redis.GetAllItemsFromList("additemtolist"); members.ForEach(s => Console.WriteLine("<br/>additemtolist :" + s)); // 擷取指定索引位置資料 var item = Redis.GetItemFromList("addarrangetolist", 2); Console.WriteLine(item); //移除資料 var list = Redis.Lists["addarrangetolist"]; list.Clear();//清空 list.Remove("two");//移除指定索引值 // list.RemoveAt(2);//移除指定索引位置資料 //儲存物件(JSON序列化方法)它比object序列化方法效率高 Redis.Set<UserInfo>("userinfo", new UserInfo() { UserName = "李四", Age = 45 }); UserInfo userinfo = Redis.Get<UserInfo>("userinfo"); Console.WriteLine("name=" + userinfo.UserName + "age=" + userinfo.Age); //儲存實值型別資料 Redis.Set<int>("my_age", 12);//或Redis.Set("my_age", 12); int age = Redis.Get<int>("my_age"); Console.WriteLine("age=" + age); //object序列化方式儲存 var ser = new ObjectSerializer(); //位於namespace ServiceStack.Redis.Support; bool result = Redis.Set<byte[]>("userinfo2", ser.Serialize(new UserInfo() { UserName = "張三", Age = 12 })); UserInfo userinfo2 = ser.Deserialize(Redis.Get<byte[]>("userinfo2")) as UserInfo; Console.WriteLine("name=" + userinfo2.UserName + "age=" + userinfo2.Age); //也支援列表 List<UserInfo> userinfoList = new List<UserInfo> { new UserInfo{UserName="zzl",Age=1,Id=1}, new UserInfo{UserName="zhz",Age=3,Id=2}, }; Redis.Set<byte[]>("userinfolist_serialize", ser.Serialize(userinfoList)); List<UserInfo> userList = ser.Deserialize(Redis.Get<byte[]>("userinfolist_serialize")) as List<UserInfo>; userList.ForEach(i => { Console.WriteLine("name=" + i.UserName + "age=" + i.Age); });}
參照:http://jiangwenfeng762.iteye.com/blog/1283676
http://blog.jobbole.com/88383/
http://www.aboutyun.com/thread-9223-1-1.html
http://www.cnblogs.com/lori/p/3435483.html