zoukankan      html  css  js  c++  java
  • Cache_Redis_2使用

    1.StackExchange.Redis 中最重要的对象 是 ConenctionMultiplexer .

      存在于命名空间 StackExchagne.Redis 命名空间中。

    2.ConnectionMultiplexer .

      在所有调用中,被设计成共享和重用的。不应该为每一个操作都创建一个ConnectionMultiplexer对象。

      ConnectionMultiplexer是线程安全的。

      假定已经实例化了一个ConnectionMultiplexer ,并将被一直重用。

      (1)创建

        通过 ConnectionMultiplexer.Connect 或者 ConnectionMultiplexer.ConnectAsync,传递一个字符串或CongiurationOptions类创建。

        using StackExchange.Redis;

        ...

        ConnectionMultiplexer redis=ConnectionMultiplexer.Connection("localhost");

      (2)访问数据库

        IDatabase db=redis.GetDatabase();

      (3)操作

        StringSet,StringGet,

    3.ConnectionMultiplexer实例

      --引用dll: StackExchange.Redis

      --创建链接,实例化ConnectionMultiplexer.

       public class RedisCacheManager:ICacheManager{

        private readonly string redisConnectionString;

        public volatile ConnectionMultiplexer redisConnection;

        private readonly object redisConnectionLock=new object();

        public RedisCacheManager(){

          string redisConfiguration=ConfigurationManager.ConnectionStrings["redisCache"].ToString();

          if(string.IsNullOrEmpty(redisConfiguration)){

            throw new ArgumentException(" redis config is empty",nameof(redisConfiguration));

          }

          this.redisConnectionString=redisConfiguration;

          this.redisConnection=GetRedisConnection();

        }

        private ConnectionMultiplexer  GetRedisConnection(){

          if(redisConnection!=null&&redis.Connection.IsActive){

            return this.redisConnection;

          }

          lock(redisConnectionLock){

            if(this.redisConnection!=null){

              this.redisConnection.Dispose();

            }

            this.redisConnection=ConnectionMultiplexer.Connect(redisConnectionString);

          }

          return this.redisConnection;

        }

        public void Set(string key,object value,TimeSpan cacheTime){

          if(value!=null){

            this.redisConnection.GetDatabase().StringSet(key,SerializerHelper.Serialize(value),cacheTime);

          }

        }

        public T Get<T>(string key){

          var value=this.redisConnection.GetDatabase().StringGet(key);

          if(value.HasValue){

            return SerializerHelper.Deserialize<T>(value);

          }else{

            return string.Empty;

          }

        }

        public void Contains(string key){

          return this.redisConnection.GetDatabase().KeyExists(key);

        }

        public void Remove(string key){

          this.redisConnection.GetDatabse().KeyDelete(key);

        }

      }

  • 相关阅读:
    Magento速度优化
    magento-connect-manage出现404或者500内部错误的解决办法
    magento -- 给后台分类管理页的分类商品加一栏商品类型
    magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
    magento -- 如何为商品分类(category)添加自定义属性
    magento -- 如何改善前台图片质量
    安装Let's Encrypt SSL证书
    centos版本查看
    ps
    设置桥接虚拟网卡
  • 原文地址:https://www.cnblogs.com/sujingnuli/p/9052056.html
Copyright © 2011-2022 走看看