• .NET中Redis的使用


    一、windows服务器中配置Redis

    1.下载Redis代码,地址:https://github.com/MSOpenTech/redis

    2.解压后用Visual Studio 2013 打开msvsRedisServer.sln并进行编译,此为C++项目,需用C++编译器编译。

    3.选择所需要的版本编译,把编译好的Release文件拷贝到你所要安装的目录,然后把msvssetupsdocumentation中的redis.windows.conf拷贝到Release文件中。

    如将文件拷贝到C盘中,把文件重命名为Redis-2.8,即为C:Redis-2.8

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

      (1)安装:输入 c:Redis-2.8 edis-server --service-install redis.windows.conf --loglevel verbose

      (2)开启服务:输入 c:Redis-2.8 edis-server --service-start

      (3)关闭服务: 输入 c:Redis-2.8redis-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.解压后打开srcServiceStack.Redis.sln解决方案,编译后,将srcServiceStack.RedisinDebug下的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; }
        }
  • 相关阅读:
    Mac zsh: command not found zsh 所有命令在终端失效
    Java根据FreeMarker模板生成Word(doc)文档(带图片)
    2021年Java面试总结——自我篇
    toArray转换踩坑 java.lang.ClassCastException
    并发和并行
    protoBuf3学习
    StringBuffer和StringBuilder区别
    深拷贝和浅拷贝
    从不订购的客户
    使用jenkins遇到的问题汇总
  • 原文地址:https://www.cnblogs.com/ding2011/p/4745732.html
Copyright © 2020-2023  润新知