Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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());
        }
Esempio n. 3
0
        /// <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());
        }
Esempio n. 4
0
 /// <summary>
 /// 配置 REDIS 集群
 /// <para>若群集中有指定 password 的节点,必须使用  IEnumerable&lt;ClusterNode&gt; 重载列举出这些节点</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));
 }
Esempio n. 5
0
 /// <summary>
 /// 配置 REDIS 集群
 /// <para>若群集中有指定 password 的节点,必须使用  IEnumerable&lt;ClusterNode&gt; 重载列举出这些节点</para>
 /// </summary>
 /// <param name="node">集群节点</param>
 /// <returns></returns>
 public static RedisCluster Configure(ClusterNode node)
 {
     return(RedisClusterFactory.Configure(node, null));
 }
Esempio n. 6
0
        /// <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)));
        }
Esempio n. 7
0
        /// <summary>
        /// 从指定节点随机返回(不删除)一个 key
        /// </summary>
        /// <returns></returns>
        public string RandomKey(ClusterNode src)
        {
            InternalClusterNode node = this.CheckMasterNode(src);

            return(this.DoExecute(node.Slot.Start, c => c.RandomKey()));
        }
Esempio n. 8
0
 /// <summary>
 /// 实例化 <see cref="RedisCluster"/> 类的新实例
 /// <para>若群集中有指定 password 的节点,必须使用  IEnumerable&lt;ClusterNode&gt; 重载列举出这些节点</para>
 /// </summary>
 /// <param name="node">随机节点</param>
 internal RedisCluster(ClusterNode node)
     : this(new List <ClusterNode> {
     node
 }, null)
 {
 }