/// <summary> /// 调整指定 Redis 服务器的配置(configuration)而无须重启 /// </summary> /// <param name="src">主设备节点</param> /// <param name="parameter">配置名称</param> /// <param name="value">配置内容</param> /// <returns></returns> public void ConfigSet(ClusterNode src, string parameter, byte[] value) { InternalClusterNode node = this.CheckMasterNode(src); this.DoExecute(node.Slot.Start, c => c.ConfigSet(parameter, value)); }
/// <summary> /// 清空指定节点数据(删除所有数据库的所有 key ) /// </summary> /// <param name="src">主设备节点</param> /// <returns></returns> public void FlushAll(ClusterNode src) { InternalClusterNode node = this.CheckMasterNode(src); this.DoExecute(node.Slot.Start, c => c.FlushAll()); }
/// <summary> /// 在后台异步(Asynchronously)保存当前节点的数据到磁盘。 /// BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出 /// </summary> /// <param name="src">主设备节点</param> /// <returns></returns> public void BgSave(ClusterNode src) { InternalClusterNode node = this.CheckMasterNode(src); this.DoExecute(node.Slot.Start, c => c.BgSave()); }
/// <summary> /// 配置 REDIS 集群 /// <para>若群集中有指定 password 的节点,必须使用 IEnumerable<ClusterNode> 重载列举出这些节点</para> /// </summary> /// <param name="node">集群节点</param> /// <param name="config"><see cref="RedisClientManagerConfig"/> 客户端缓冲池配置</param> /// <returns></returns> public static RedisCluster Configure(ClusterNode node, RedisClientManagerConfig config) { return(RedisClusterFactory.Configure(new List <ClusterNode> { node }, config)); }
/// <summary> /// 配置 REDIS 集群 /// <para>若群集中有指定 password 的节点,必须使用 IEnumerable<ClusterNode> 重载列举出这些节点</para> /// </summary> /// <param name="node">集群节点</param> /// <returns></returns> public static RedisCluster Configure(ClusterNode node) { return(RedisClusterFactory.Configure(node, null)); }
/// <summary> /// SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标。 /// 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。 /// 当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束 /// </summary> /// <param name="src">主设备节点</param> /// <param name="cursor">游标</param> /// <param name="count">每次返回的键数量</param> /// <param name="match">匹配模式</param> /// <returns></returns> public ScanResult Scan(ClusterNode src, ulong cursor, int count = 10, string match = null) { InternalClusterNode node = this.CheckMasterNode(src); return(this.DoExecute(node.Slot.Start, c => c.Scan(cursor, count, match))); }
/// <summary> /// 从指定节点随机返回(不删除)一个 key /// </summary> /// <returns></returns> public string RandomKey(ClusterNode src) { InternalClusterNode node = this.CheckMasterNode(src); return(this.DoExecute(node.Slot.Start, c => c.RandomKey())); }
/// <summary> /// 实例化 <see cref="RedisCluster"/> 类的新实例 /// <para>若群集中有指定 password 的节点,必须使用 IEnumerable<ClusterNode> 重载列举出这些节点</para> /// </summary> /// <param name="node">随机节点</param> internal RedisCluster(ClusterNode node) : this(new List <ClusterNode> { node }, null) { }