亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Redis總結(二)C#中如何使用redis

2019-11-14 13:45:48
字體:
來源:轉載
供稿:網友

  上一篇講述了安裝redis《Redis總結(一)Redis安裝》,同時也大致介紹了redis的優勢和應用場景。本篇著重講解.NET中如何使用redis和C#。

 

  Redis官網提供了很多開源的C#客戶端。例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等。其中ServiceStack.Redis應該算是比較流行的。它提供了一整套從Redis數據結構都強類型對象轉換的機制并將對象json序列化。所以這里只介紹ServiceStack.Redis,它也是目前我們產品中所使用的客戶端。 

 

  ServiceStack.Redis地址:https://github.com/ServiceStack/ServiceStack.Redis 

 

  1. 建立一個控制臺應用程序,并引用以下ServiceStack.Redis相關的四個類庫?;蛘咄ㄟ^Nuget進行安裝Redis常用組件ServiceStack.Redis。 下載示例代碼。

      

 

  2. 創建一個Redis操作的公用類RedisCacheHelper,

using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Text;using System.Web;using ServiceStack.Common.Extensions;using ServiceStack.Redis;using ServiceStack.Logging;namespace Weiz.Redis.RedisTest{    public class RedisCacheHelper    {        PRivate static readonly PooledRedisClientManager pool = null;        private static readonly string[] redisHosts = null;        public static int RedisMaxReadPool = int.Parse(ConfigurationManager.AppSettings["redis_max_read_pool"]);        public static int RedisMaxWritePool = int.Parse(ConfigurationManager.AppSettings["redis_max_write_pool"]);        static RedisCacheHelper()        {            var redisHostStr = ConfigurationManager.AppSettings["redis_server_session"];            if (!string.IsNullOrEmpty(redisHostStr))            {                redisHosts = redisHostStr.Split(',');                if (redisHosts.Length > 0)                {                    pool = new PooledRedisClientManager(redisHosts, redisHosts,                        new RedisClientManagerConfig()                        {                            MaxWritePoolSize = RedisMaxWritePool,                            MaxReadPoolSize = RedisMaxReadPool,                            AutoStart = true                        });                }            }        }        public static void Add<T>(string key, T value, DateTime expiry)        {            if (value == null)            {                return;            }            if (expiry <= DateTime.Now)            {                Remove(key);                return;            }            try            {                if (pool != null)                {                    using (var r = pool.GetClient())                    {                        if (r != null)                        {                            r.SendTimeout = 1000;                            r.Set(key, value, expiry - DateTime.Now);                        }                    }                }            }            catch (Exception ex)            {                string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "存儲", key);            }        }        public static void Add<T>(string key, T value, TimeSpan slidingExpiration)        {            if (value == null)            {                return;            }            if (slidingExpiration.TotalSeconds <= 0)            {                Remove(key);                return;            }            try            {                if (pool != null)                {                    using (var r = pool.GetClient())                    {                        if (r != null)                        {                            r.SendTimeout = 1000;                            r.Set(key, value, slidingExpiration);                        }                    }                }            }            catch (Exception ex)            {                string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "存儲", key);            }        }        public static T Get<T>(string key)        {            if (string.IsNullOrEmpty(key))            {                return default(T);            }            T obj = default(T);            try            {                if (pool != null)                {                    using (var r = pool.GetClient())                    {                        if (r != null)                        {                            r.SendTimeout = 1000;                            obj = r.Get<T>(key);                        }                    }                }            }            catch (Exception ex)            {                string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "獲取", key);            }            return obj;        }        public static void Remove(string key)        {            try            {                if (pool != null)                {                    using (var r = pool.GetClient())                    {                        if (r != null)                        {                            r.SendTimeout = 1000;                            r.Remove(key);                        }                    }                }            }            catch (Exception ex)            {                string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "刪除", key);            }        }        public static bool Exists(string key)        {            try            {                if (pool != null)                {                    using (var r = pool.GetClient())                    {                        if (r != null)                        {                            r.SendTimeout = 1000;                            return r.ContainsKey(key);                        }                    }                }            }            catch (Exception ex)            {                string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "是否存在", key);            }            return false;        }    }}

  說明:RedisCacheHelper 使用的是客戶端鏈接池模式,這樣的存取效率應該是最高的。同時也更方便的支持讀寫分離,均衡負載。

 

  3. 配置文件

    <!-- redis Start   -->    <add key="SessionExpireMinutes" value="180" />    <add key="redis_server_session" value="127.0.0.1:6379" />    <add key="redis_max_read_pool" value="3" />    <add key="redis_max_write_pool" value="1" />    <!--redis end-->

 

  4. 測試程序調用

class Program    {        static void Main(string[] args)        {            Console.WriteLine("Redis寫入緩存:zhong");            RedisCacheHelper.Add("zhong", "zhongzhongzhong", DateTime.Now.AddDays(1));            Console.WriteLine("Redis獲取緩存:zhong");            string str3 = RedisCacheHelper.Get<string>("zhong");            Console.WriteLine(str3);            Console.WriteLine("Redis獲取緩存:nihao");            string str = RedisCacheHelper.Get<string>("nihao");            Console.WriteLine(str);            Console.WriteLine("Redis獲取緩存:wei");            string str1 = RedisCacheHelper.Get<string>("wei");            Console.WriteLine(str1);            Console.ReadKey();        }    }

  

  5. 輸出結果

     


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区久久| 亚洲高清久久网| 欧美自拍视频在线| 91精品国产91久久久久| 欧美大秀在线观看| 97在线视频免费看| 久久99久久99精品免观看粉嫩| www高清在线视频日韩欧美| 国产大片精品免费永久看nba| 91亚洲精品视频| 日韩精品视频观看| 亚洲精品自产拍| 一区二区三区视频在线| 日本韩国在线不卡| 亚洲人成电影在线播放| 亚洲最大激情中文字幕| 久久电影一区二区| 日韩欧美高清视频| 国产精品18久久久久久首页狼| 日韩精品小视频| 色狠狠av一区二区三区香蕉蜜桃| 成人免费看吃奶视频网站| 日本久久久久久久| 欧美国产日韩一区二区三区| 成人综合网网址| 国产亚洲视频在线观看| 久久777国产线看观看精品| 美女福利视频一区| 精品女同一区二区三区在线播放| 亚洲wwwav| 国产深夜精品福利| 欧美最近摘花xxxx摘花| 日韩电视剧在线观看免费网站| 91国内揄拍国内精品对白| 欧美激情国内偷拍| 91青草视频久久| 欧美精品免费在线观看| 精品亚洲aⅴ在线观看| 国产精品视频免费观看www| 亚洲第一免费播放区| 久久免费成人精品视频| 成人av色在线观看| 国产精品久久久久久久久久免费| 国产精品老牛影院在线观看| 在线播放国产一区二区三区| 亚洲视频电影图片偷拍一区| 91黑丝在线观看| 久久精品最新地址| 欧美日韩福利在线观看| 欧美高清在线视频观看不卡| 久久精品免费播放| 日韩精品欧美国产精品忘忧草| 亚洲午夜未满十八勿入免费观看全集| 亚洲成人激情在线观看| 91九色国产社区在线观看| 欧美富婆性猛交| 久久精品中文字幕免费mv| 欧美激情欧美狂野欧美精品| 九九热r在线视频精品| 久久视频国产精品免费视频在线| 热门国产精品亚洲第一区在线| 久久777国产线看观看精品| 中文字幕视频在线免费欧美日韩综合在线看| 中文字幕亚洲无线码a| 国产欧美日韩中文字幕在线| 成人综合国产精品| 亚洲精品黄网在线观看| 韩曰欧美视频免费观看| 这里只有精品久久| 亚洲v日韩v综合v精品v| 欧美一区二区三区免费视| 亚洲午夜精品久久久久久久久久久久| 岛国视频午夜一区免费在线观看| 在线视频欧美性高潮| 国产精品狠色婷| 国产日韩在线看| 日韩网站免费观看高清| 91精品国产综合久久久久久蜜臀| 欧美激情xxxxx| 亚洲精品99久久久久| 性欧美办公室18xxxxhd| 色999日韩欧美国产| 伊人伊成久久人综合网小说| 最新国产精品拍自在线播放| 亚洲综合成人婷婷小说| 欧美人与性动交a欧美精品| 亚洲色图色老头| 亚洲第一中文字幕| 欧美天堂在线观看| 国产va免费精品高清在线| 精品亚洲国产视频| 日韩女优在线播放| 亚洲成人av在线播放| 日韩欧美在线视频免费观看| 国产成人精品日本亚洲专区61| 日韩美女免费观看| 精品久久久久久久久久久久久久| 亚洲缚视频在线观看| 亚洲区bt下载| 国产免费久久av| 伊人成人开心激情综合网| 亚洲精品日韩久久久| 国产成人一区二区在线| 亚洲欧美中文字幕在线一区| 美女av一区二区三区| 夜夜嗨av色综合久久久综合网| 成人欧美一区二区三区黑人孕妇| 精品无人国产偷自产在线| 欧美激情欧美狂野欧美精品| 久久久久久久亚洲精品| 亚洲综合成人婷婷小说| 精品欧美激情精品一区| 懂色av中文一区二区三区天美| 欧美日韩激情视频8区| 久久精品亚洲94久久精品| 国产丝袜一区视频在线观看| 最近日韩中文字幕中文| 日韩在线高清视频| 国产精品欧美久久久| 91亚洲精品一区| 亚洲区bt下载| 韩日精品中文字幕| 亚洲女人天堂网| 亚洲欧美日韩国产中文专区| 日韩美女福利视频| 日本久久91av| 欧洲美女7788成人免费视频| 国产精品美女在线观看| 55夜色66夜色国产精品视频| 精品日本美女福利在线观看| 日韩精品一二三四区| 久久久久久久久久久人体| 欧美日韩国产91| 亚洲精品午夜精品| 欧美成人手机在线| 狠狠色香婷婷久久亚洲精品| 久久精品国产91精品亚洲| 亚洲人成在线观看| 国产裸体写真av一区二区| 少妇av一区二区三区| 精品久久国产精品| 国产精品久久网| 国产视频精品久久久| 日韩av影视综合网| 日韩精品在线电影| 久久网福利资源网站| 伊人一区二区三区久久精品| 亚洲美女精品久久| 91精品国产自产在线观看永久| 韩国美女主播一区| 日韩av免费看网站| 亚洲情综合五月天| 日韩女优在线播放| 亚洲国产精品电影| 色午夜这里只有精品| 欧美二区乱c黑人| 成人av番号网| 亚洲欧美日韩另类| 疯狂做受xxxx欧美肥白少妇| 一个人看的www久久| 成人网在线观看| 不卡中文字幕av| 中文字幕av一区中文字幕天堂| 国产精品免费久久久久久|