# redis-cluster **Repository Path**: yanglong.com/redis-cluster ## Basic Information - **Project Name**: redis-cluster - **Description**: Docker构建Redis cluster示例 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker运行Redis 提供Docker运行Redis示例,分单机和单机伪集群。 ## 运行Redis单独实例 根目录下运行以下命令运行单机Redis。 > docker-compose -f docker-compose-redis.yml up 控制台看输出信息,判断是否启动成功。 如果需要后台启动,运行以下命令: > docker-compose -f docker-compose-redis.yml up -d 如果需要自定义配置,修改根目录下redis.conf文件即可。 ## 单机构建Redis sentinel集群 此节工作目录为sentinel。 修改.env文件,将IP地址改为部署机器IP。 修改sentinel-*文件夹下配置文件,将 > sentinel monitor mymaster 10.192.32.47 6379 2 中IP地址修改为部署机器IP。 运行 > docker-compose up 查看日志,确认启动成功。 ```txt redis支持使用命令行传入配置,但经过测试,sentinel有的配置无法通过命令行传入。 另外配置文件支持使用include引入子配置文件,但在docker下测试没有通过,include会报找不到子配置文件的异常。 ``` ## 单机构建redis cluster 此节工作目录为cluster。 首先修改.env文件中的值,修改为你机器的IP地址,示例以10.192.32.47为所有节点机器所在IP,修改完IP后,在根目录运行 > docker-compose up -d 使用以下命令确认6个redis实例启动成功: > docker ps 确认启动成功后,运行以下命令构建集群,注意*将IP地址替换为本机地址*: > docker run --rm -it goodsmileduck/redis-cli redis-cli --cluster-replicas 1 --cluster create 10.192.32.47:4379 10.192.32.47:5379 10.192.32.47:6379 10.192.32.47:7379 10.192.32.47:8379 10.192.32.47:3379 连接其中一个节点,进行测试: docker run --rm -it goodsmileduck/redis-cli redis-cli -h 10.192.32.47 -p 4379 如果需要自定义配置,自行修改对应文件夹中的redis.conf文件,文件仅做了集群所需少量必要配置。 ## Redis cluster集群命令 ### 集群信息 > cluster info 打印集群的信息 > cluster nodes 列出集群当前已知的所有节点( node),以及这些节点的相关信息。 ### 节点 > cluster meet 将ip和port所指定的节点添加到集群当中,让它成为集群的一份子。 > cluster forget 从集群中移除node_id指定的节点。 cluster replicate 将当前从节点设置为node_id 指定的master节点的slave节点。只能针对slave节点操作。 > cluster saveconfig 将节点的配置文件保存到硬盘里面。 ### 槽(slot) > cluster addslots [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 > cluster delslots [slot ...] 移除一个或多个槽对当前节点的指派。 > cluster flushslots 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 > cluster setslot node 将槽slot指派给node_id指定的节点,如果槽已经指派给 另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 > cluster setslot migrating 将本节点的槽slot迁移到node_id指定的节点中。 > cluster setslot importing 从node_id指定的节点中导入槽slot到本节点。 > cluster setslot stable 取消对槽slot的导入(import)或者迁移(migrate)。 ### 键 > cluster keyslot 计算键key应该被放置在哪个槽上。 > cluster countkeysinslot 返回槽slot目前包含的键值对数量。 > cluster getkeysinslot 返回count个slot槽中的键 。