设置及选用

作者: 数据库信息  发布:2019-11-08

  本篇记录redis的第风姿浪漫期理解学习的长河,包罗条件搭建、客商端、可视化微机等起头的垂询,新手快捷全方位的打听并上手redis。

redis是什么样自身就不写了,请自行去普通话官方网站查阅 。

  1. 条件搭建

  redis能源可在StackExchange.Redis客商端的github上下载该顾客端源码,RedisConfigs文件夹下自带3.0本子财富包,如若以为源码项目大能够到这几个地址下载,小编把该包独立上传了。

  蒙受安排非常的粗略,几句三令五申。首先把下载好的公文寄存到要设置的盘符中,然后张开调整台程序用cd命令步入到对象文件夹。输入redis-server.exe redis.windows.conf 命令运转redis服务加载配置文件。

  图片 1

  输入完回车就能够现出转手镜头,表明redis前台经理机勃勃度运营。

  图片 2

  服务运行达成,初阶三翻五次。展开另三个调整台(不要关闭redis服务的调控台),相通的情势步入目的文件夹,输入redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456(或许只输入redis-cli.exe卡塔尔国命令就可以连接本地redis服务,此中6379是暗许端口号,123456是私下认可密码。连接成功足以经过set user zhangsan  get user 等一声令下举办测验(命令详细的情况可访谈官方网站查阅卡塔尔。

  2. 代码完毕(.net)

  景况搭建达成,通过调控台也能三回九转访问那表明redis服务成功的在机器上运营了,更进一层大家由此三个demo去老是并操作redis。代码完结须要客商端援助,.net补助的redis客户端在官方网址都有描述,这里本人只讲下StackExchange.Redis。源码地址上文已经提交,有乐趣研商的可自行下载。这里自个儿大致讲下使用。张开vs创建二个调节台应用程序,右键该类型开海菜单中的管理nuget程序包。

  图片 3

  浏览中寻觅StackExchange.Redis并设置

  图片 4

  客商端安装到位,下边就是选拔。创制一个SERedisHelper类

  

/// <summary>
    /// Redis操作类
    /// </summary>
    public class SERedisHelper
    {
        private static string _conn = ConfigurationManager.AppSettings["SERedis"] ?? "127.0.0.1:6379";

        #region string类型
        /// <summary>
        /// 根据Key获取值
        /// </summary>
        /// <param name="key">键值</param>
        /// <returns>System.String.</returns>
        public static string StringGet(string key)
        {
            try
            {
                using (var client = ConnectionMultiplexer.Connect(_conn))
                {
                    return client.GetDatabase().StringGet(key);
                }
            }
            catch (Exception)
            {
                return null;
            }
        }

        /// <summary>
        /// 批量获取值
        /// </summary>
        public static string[] StringGetMany(string[] keyStrs)
        {
            var count = keyStrs.Length;
            var keys = new RedisKey[count];
            var addrs = new string[count];

            for (var i = 0; i < count; i  )
            {
                keys[i] = keyStrs[i];
            }
            try
            {
                using (var client = ConnectionMultiplexer.Connect(_conn))
                {
                    var values = client.GetDatabase().StringGet(keys);
                    for (var i = 0; i < values.Length; i  )
                    {
                        addrs[i] = values[i];
                    }
                    return addrs;
                }
            }
            catch (Exception)
            {
                return null;
            }
        }


        /// <summary>
        /// 单条存值
        /// </summary>
        /// <param name="key">key</param>
        /// <param name="value">The value.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool StringSet(string key, string value)
        {

            using (var client = ConnectionMultiplexer.Connect(_conn))
            {
                return client.GetDatabase().StringSet(key, value);
            }
        }


        /// <summary>
        /// 批量存值
        /// </summary>
        /// <param name="keysStr">key</param>
        /// <param name="valuesStr">The value.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool StringSetMany(string[] keysStr, string[] valuesStr)
        {
            var count = keysStr.Length;
            var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
            for (int i = 0; i < count; i  )
            {
                keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]);
            }
            using (var client = ConnectionMultiplexer.Connect(_conn))
            {
                return client.GetDatabase().StringSet(keyValuePair);
            }
        }

        #endregion

        #region 泛型
        /// <summary>
        /// 存值并设置过期时间
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key">key</param>
        /// <param name="t">实体</param>
        /// <param name="ts">过期时间间隔</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool Set<T>(string key, T t, TimeSpan ts)
        {
            var str = JsonConvert.SerializeObject(t);
            using (var client = ConnectionMultiplexer.Connect(_conn))
            {
                return client.GetDatabase().StringSet(key, str, ts);
            }
        }

        /// <summary>
        /// 
        /// 根据Key获取值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key">The key.</param>
        /// <returns>T.</returns>
        public static T Get<T>(string key) where T : class
        {
            using (var client = ConnectionMultiplexer.Connect(_conn))
            {
                var strValue = client.GetDatabase().StringGet(key);
                return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject<T>(strValue);
            }
        }
        #endregion
    }

 

  辅助类创制落成,在Program.cs中应用就能够。

  

var ts = new TimeSpan(0, 0, 1, 0, 1);
            Console.WriteLine("添加缓存");
            SERedisHelper.Set<string>("user", "zhangsan", ts);
            Console.WriteLine("获取缓存:"   SERedisHelper.Get<string>("user"));
            Console.ReadLine();

  这里注意低版本的redis过期时间不援助阿秒级,当然3.0没难点。调节和测验运维就能够看出结果。

  3. 总结

  本篇意在高效上手通晓redis,如不正常请多辅导。

  最终贴出一点后续浓郁领会的素材(持续更新)

  三个redis可视化管理工科具RedisDesktopManager 

  。

  StackExchange.Redis客户端工具类 

  再贴下官方网址地址 (官香港网球总会结的内容很全)。

  

 

本文由金沙澳门官网发布于数据库信息,转载请注明出处:设置及选用

关键词: 金沙澳门官网

上一篇:高可用集群
下一篇:没有了