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实例

   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);

    }

  }

原文地址:https://www.cnblogs.com/sujingnuli/p/9052056.html

时间: 2024-10-13 21:19:36

Redis_2使用的相关文章

redis_2

1.key Redis keys 命令 下表给出了与 Redis 键相关的基本命令: 序号 命令及描述 1 DEL key该命令用于在 key 存在时删除 key. 2 DUMP key 序列化给定 key ,并返回被序列化的值. 3 EXISTS key 检查给定 key 是否存在. 4 EXPIRE key seconds为给定 key 设置过期时间. 5 EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间. 不同在于

PHP- 深入PHP、Redis连接

pconnect, phpredis中用于client连接server的api. The connection will not be closed on close or end of request until the php process ends. 这是api说明中的一句原文 那么问题来了: 1. php process ends是指一次php执行完结,还是fpm的终结?如果是后者,那意味着即使一次php执行完毕,redis连接也不会被释放,下一次执行时redis连接会被重用. 2.

celery入门

认识 这里有几个概念,task.worker.broker.顾名思义,task 就是老板交给你的各种任务,worker 就是你手下干活的人员. 那什么是 Broker 呢? 老板给你下发任务时,你需要 把它记下来, 这个它 可以是你随身携带的本子,也可以是 电脑里地记事本或者excel,或者是你的 任何时间管理工具. Broker  则是 Celery 记录task的地方.作为一个任务管理者的你,将老板(前端程序)发给你的 安排的工作(Task) 记录到你的本子(Broker)里.接下来,你就安

Linux经常用到的命令

1. Linux下用vim打开配置文件乱码,在终端输入:“LANG=”即可. 2. 查看端口是否被占用: 3. netstat -anp | grep port netstat -ltn 4. lsof -i:port 5. Shell脚本命令列表: $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 [email protected] 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参

深入php redis pconnect

pconnect, phpredis中用于client连接server的api. The connection will not be closed on close or end of request until the php process ends. 这是api说明中的一句原文 那么问题来了: 1. php process ends是指一次php执行完结,还是fpm的终结?如果是后者,那意味着即使一次php执行完毕,redis连接也不会被释放,下一次执行时redis连接会被重用. 2.

Redis Master/Slave 实践

本次我们将模拟 Master(1) + Slave(4) 的场景,并通过ASP.NET WEB API进行数据的提交及查询,监控 Redis Master/Slave 数据分发情况,只大致概述,不会按照step by step的方式一一列举. API List: [POST]:http://localhost:53964/api/personsAccept:application/json ,Content-Type:application/json { "Id": 2, "

celery 实例进阶

认识 这里有几个概念,task.worker.broker.顾名思义,task 就是老板交给你的各种任务,worker 就是你手下干活的人员. 那什么是 Broker 呢? 老板给你下发任务时,你需要 把它记下来, 这个它 可以是你随身携带的本子,也可以是 电脑里地记事本或者excel,或者是你的 任何时间管理工具. Broker  则是 Celery 记录task的地方.作为一个任务管理者的你,将老板(前端程序)发给你的 安排的工作(Task) 记录到你的本子(Broker)里.接下来,你就安

centos7搭建redis集群

下载: https://redis.io/ 解压: tar -xzf redis-5.0.3.tar.gz 进入目录: cd redis-5.0.3 编译安装: make 创建配置文件夹: mkdir -p /usr/local/redis/redis_1 mkdir -p /usr/local/redis/redis_2 mkdir -p /usr/local/redis/redis_3 mkdir -p /usr/local/redis/redis_4 mkdir -p /usr/local

docker swarm英文文档学习-8-在集群中部署服务

Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运行服务容器的镜像名称和标记有多少容器参与服务是否有任何端口暴露给集群之外的客户端当Docker启动时,服务是否应该自动启动重启服务时发生的特定行为(例如是否使用滚动重启)服务可以运行的节点的特征(例如资源约束和位置首选项)有关群模式的概述,请参见 Swarm mode key concepts.有关