.NET中Redis的使用


一、windows服務器中配置Redis

1.下載Redis代碼,地址:https://github.com/MSOpenTech/redis

2.解壓后用Visual Studio 2013 打開\msvs\RedisServer.sln並進行編譯,此為C++項目,需用C++編譯器編譯。

3.選擇所需要的版本編譯,把編譯好的Release文件拷貝到你所要安裝的目錄,然后把\msvs\setups\documentation中的redis.windows.conf拷貝到Release文件中。

如將文件拷貝到C盤中,把文件重命名為Redis-2.8,即為C:\Redis-2.8

4.打開控制台程序 cmd.exe

  (1)安裝:輸入 c:\Redis-2.8\redis-server --service-install redis.windows.conf --loglevel verbose

  (2)開啟服務:輸入 c:\Redis-2.8\redis-server --service-start

  (3)關閉服務: 輸入 c:\Redis-2.8\redis-server --service-uninstall

 

二、Redis的簡單使用

現在再開一個控制台應用程序連接之前啟動的Redis,如下:

C:\Redis-2.8>redis-cli.exe -h 127.0.0.1 -p 6379

其中 –h后面是本機的ip地址,后面的是端口。

然后就可以執行set 給key為city賦值:

127.0.0.1:6379> set city FoShan

通過get可以獲取指定key為city的值了。

127.0.0.1:6379> get city

 

三、在asp.net應用程序中實現Redis的應用(新建一個RedisClientDemo項目)

1.下載ServiceStack.Redis,地址:https://github.com/ServiceStack/ServiceStack.Redis

2.解壓后打開\src\ServiceStack.Redis.sln解決方案,編譯后,將\src\ServiceStack.Redis\bin\Debug下的4個dll文件引用到新建的RedisClientDemo項目中。

3.Redis的一些簡單運用

    public partial class _Default : System.Web.UI.Page
    {
        static RedisClient redisClient = new RedisClient("127.0.0.1", 6379);//redis服務IP和端口
        protected void Page_Load(object sender, EventArgs e)
        {
            StringBuilder str = new StringBuilder();
            str.Append(redisClient.Get<string>("city"));

            //將字符串列表添加到redis

            List<string> storeMembers = new List<string>() { "one", "two", "three" };
            storeMembers.ForEach(x => redisClient.AddItemToList("additemtolist", x));

            //得到指定的key所對應的value集合

            var members = redisClient.GetAllItemsFromList("additemtolist");
            members.ForEach(s => str.Append("<br/>additemtolist :" + s));

            // 獲取指定索引位置數據
            var item = redisClient.GetItemFromList("addarrangetolist", 2);
            str.Append(item);

            //移除數據

            var list = redisClient.Lists["addarrangetolist"];
            list.Clear();//清空
            list.Remove("two");//移除指定鍵值
            //  list.RemoveAt(2);//移除指定索引位置數據

            //存儲對象(JSON序列化方法)它比object序列化方法效率高
            redisClient.Set<UserInfo>("userinfo", new UserInfo() { UserName = "李四", Age = 45 });
            UserInfo userinfo = redisClient.Get<UserInfo>("userinfo");
            str.Append("<br/>name=" + userinfo.UserName + " age=" + userinfo.Age);

            //存儲值類型數據
            redisClient.Set<int>("my_age", 12);//或redisClient.Set("my_age", 12);
            int age = redisClient.Get<int>("my_age");
            str.Append("<br/>age=" + age);

            //object序列化方式存儲
            var ser = new ObjectSerializer();    //位於namespace ServiceStack.redisClient.Support;
            bool result = redisClient.Set<byte[]>("userinfo2", ser.Serialize(new UserInfo() { UserName = "張三", Age = 12 }));
            UserInfo userinfo2 = ser.Deserialize(redisClient.Get<byte[]>("userinfo2")) as UserInfo;
            str.Append("<br/>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},
            };
            redisClient.Set<byte[]>("userinfolist_serialize", ser.Serialize(userinfoList));
            List<UserInfo> userList = ser.Deserialize(redisClient.Get<byte[]>("userinfolist_serialize")) as List<UserInfo>;
            userList.ForEach(i =>
            {
                str.Append("<br/>name=" + i.UserName + " age=" + i.Age);
            });

            p1.InnerHtml = str.ToString();
        }
    }

    [Serializable]
    public class UserInfo
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public int Age { get; set; }
    }

 


免責聲明!

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



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