redis 学习问题总结 |
http://aperise.iteye.com/blog/2310639 |
ehcache memcached redis 缓存技术总结 |
http://aperise.iteye.com/blog/2296219 |
redis-stat 离线安装 |
http://aperise.iteye.com/blog/2310254 |
redis cluster 非ruby方式启动 |
http://aperise.iteye.com/blog/2310254 |
redis-sentinel安装部署 |
http://aperise.iteye.com/blog/2342693 |
spring-data-redis使用 |
http://aperise.iteye.com/blog/2342615 |
redis客户端redisson实战 |
http://blog.csdn.net/zilong_zilong/article/details/78252037 |
redisson-2.10.4源代码分析 |
http://blog.csdn.net/zilong_zilong/article/details/78609423 |
tcmalloc jemalloc libc选择 |
http://blog.csdn.net/u010994304/article/details/49906819 |
redis cluster 非ruby方式启动
1.主要解决问题
redis cluster在redis官网介绍是用ruby脚本启动(我在之前博客有介绍ehcache memcached redis 缓存技术总结)。
ruby脚本干了啥??1)首先将集群节点进行握手 2)握手完毕后分配槽位 3)分配完槽位后就指定主从,ruby脚本的好处是这些细节我们不用去过多关注。
缺失了ruby脚本,我们如何玩转redis cluster?????
这里就是要解决此问题。
2.非ruby方式启动redis cluster
2.1 独立启动各个redis节点
#杀redis进程
pkill redis
#删除AOF RDB文件
rm -rf /home/hadoopmanage/rediscluster/conf/*/nodes.conf
rm -rf /home/hadoopmanage/rediscluster/conf/*/dump.rdb
rm -rf /home/hadoopmanage/rediscluster/conf/*/appendonly.aof
#独立启动各个redis节点
cd /home/hadoopmanage/rediscluster/conf/7000/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7001/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7002/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7003/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7004/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7005/
/opt/redis-3.2.0/src/redis-server redis.conf
pkill redis
#删除AOF RDB文件
rm -rf /home/hadoopmanage/rediscluster/conf/*/nodes.conf
rm -rf /home/hadoopmanage/rediscluster/conf/*/dump.rdb
rm -rf /home/hadoopmanage/rediscluster/conf/*/appendonly.aof
#独立启动各个redis节点
cd /home/hadoopmanage/rediscluster/conf/7000/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7001/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7002/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7003/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7004/
/opt/redis-3.2.0/src/redis-server redis.conf
cd /home/hadoopmanage/rediscluster/conf/7005/
/opt/redis-3.2.0/src/redis-server redis.conf
2.2 集群节点握手
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7000
CLUSTER MEET 192.168.202.131 7000
CLUSTER MEET 192.168.202.131 7001
CLUSTER MEET 192.168.202.131 7002
CLUSTER MEET 192.168.202.131 7003
CLUSTER MEET 192.168.202.131 7004
CLUSTER MEET 192.168.202.131 7005
redis-cli -h 192.168.202.131 -p 7000
CLUSTER MEET 192.168.202.131 7000
CLUSTER MEET 192.168.202.131 7001
CLUSTER MEET 192.168.202.131 7002
CLUSTER MEET 192.168.202.131 7003
CLUSTER MEET 192.168.202.131 7004
CLUSTER MEET 192.168.202.131 7005
2.3 集群节点槽位分配
#设置好主从关系之后,就可以用cluster addslots命令指派16384个槽的位置了。有点恶心的是,
#ADDSLOTS命令需要在参数中一个个指明槽的ID,而不能指定范围。
#这里用Bash 3.0的特性简化了,不然就得用Bash的循环来完成了:
redis-cli -h 192.168.202.131 -p 7000 cluster addslots {0..5461}
redis-cli -h 192.168.202.131 -p 7001 cluster addslots {5462..10922}
redis-cli -h 192.168.202.131 -p 7002 cluster addslots {10923..16383}
#ADDSLOTS命令需要在参数中一个个指明槽的ID,而不能指定范围。
#这里用Bash 3.0的特性简化了,不然就得用Bash的循环来完成了:
redis-cli -h 192.168.202.131 -p 7000 cluster addslots {0..5461}
redis-cli -h 192.168.202.131 -p 7001 cluster addslots {5462..10922}
redis-cli -h 192.168.202.131 -p 7002 cluster addslots {10923..16383}
2.4 查看集群节点ID,目的是后面分配主从会用到
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7000
cluster nodes
redis-cli -h 192.168.202.131 -p 7000
cluster nodes
查看的信息如下:
0ba73a42688039745f71adc4eb9bd33d96ec6067 192.168.202.131:7002 master - 0 1465648931751 2 connected 10923-16383
6815d0291ec49f0a96c5ab6bf9f8dd622c16a9e5 192.168.202.131:7000 myself,master - 0 0 5 connected 0-5461
12352c839c530280a41da265ac821bc1014e8162 192.168.202.131:7001 master - 0 1465648929712 1 connected 5462-10922
3b7c9618bf909f88247f171184ba24841d5a87f4 192.168.202.131:7004 master - 0 1465648927677 4 connected
081afc3f41c603e6364d77a9ec63840cdf90f4f3 192.168.202.131:7003 master - 0 1465648926652 3 connected
7250093127bc8bce64a5f47b2dd13b4ac8c3fa4c 192.168.202.131:7005 master - 0 1465648930733 0 connected
6815d0291ec49f0a96c5ab6bf9f8dd622c16a9e5 192.168.202.131:7000 myself,master - 0 0 5 connected 0-5461
12352c839c530280a41da265ac821bc1014e8162 192.168.202.131:7001 master - 0 1465648929712 1 connected 5462-10922
3b7c9618bf909f88247f171184ba24841d5a87f4 192.168.202.131:7004 master - 0 1465648927677 4 connected
081afc3f41c603e6364d77a9ec63840cdf90f4f3 192.168.202.131:7003 master - 0 1465648926652 3 connected
7250093127bc8bce64a5f47b2dd13b4ac8c3fa4c 192.168.202.131:7005 master - 0 1465648930733 0 connected
2.5 分配主从关系
#将节点192.168.202.131:7003设置为192.168.202.131:7000的从节点,6815d0291ec49f0a96c5ab6bf9f8dd622c16a9e5是192.168.202.131:7000的标识
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7003
cluster replicate 6815d0291ec49f0a96c5ab6bf9f8dd622c16a9e5
quit
#将节点192.168.202.131:7004设置为192.168.202.131:7001的从节点,12352c839c530280a41da265ac821bc1014e8162 是192.168.202.131:7001的标识
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7004
cluster replicate 12352c839c530280a41da265ac821bc1014e8162
quit
#将节点192.168.202.131:7005设置为192.168.202.131:7002的从节点,0ba73a42688039745f71adc4eb9bd33d96ec6067 是192.168.202.131:7002的标识
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7005
cluster replicate 0ba73a42688039745f71adc4eb9bd33d96ec6067
quit
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7003
cluster replicate 6815d0291ec49f0a96c5ab6bf9f8dd622c16a9e5
quit
#将节点192.168.202.131:7004设置为192.168.202.131:7001的从节点,12352c839c530280a41da265ac821bc1014e8162 是192.168.202.131:7001的标识
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7004
cluster replicate 12352c839c530280a41da265ac821bc1014e8162
quit
#将节点192.168.202.131:7005设置为192.168.202.131:7002的从节点,0ba73a42688039745f71adc4eb9bd33d96ec6067 是192.168.202.131:7002的标识
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.202.131 -p 7005
cluster replicate 0ba73a42688039745f71adc4eb9bd33d96ec6067
quit
3.redis命令
3.1 redis常见命令
集群
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
键
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
键
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
3.2 客户端常用命令(待完善)
3.2.1 清理数据
flushdb // 清除当前数据库的所有keys
flushall // 清除所有数据库的所有keys
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.23 -p 6379
flushall
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.23 -p 6380
flushall
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.24 -p 6380
flushall
flushall // 清除所有数据库的所有keys
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.23 -p 6379
flushall
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.23 -p 6380
flushall
cd /opt/redis-3.2.0/src/
redis-cli -h 192.168.173.24 -p 6380
flushall
相关推荐
- Ruby,因为 `redis-trib.rb` 是用于创建和管理 Redis Cluster 的工具。 - 至少三台服务器或虚拟机,每个节点运行一个 Redis 实例。 ### 2. 安装 Redis 在每台服务器上安装 Redis。这通常涉及下载源代码,编译并...
**Ruby 对 RedisCluster 的支持** Ruby 社区提供了 `redis-trib.rb` 工具来帮助创建和管理 Redis 集群。在 Ruby 应用中,可以使用 `redis` gem 的集群模式与集群通信,它会处理槽映射和失败重试。在代码中,只需...
`redis-rb` gem不仅支持基本的Redis命令,还提供了对RedisCluster的支持,使得开发者能够轻松地在Ruby应用中利用RedisCluster的分布式特性。 要使用RedisCluster,首先需要在Ruby环境中安装`redis-rb-cluster` Gem...
总结起来,要在 Ruby 环境下搭建和管理 Redis 集群,你需要安装 Ruby、Redis 及其集群管理工具,然后配置和启动集群,并使用 Ruby 的 Redis 集群客户端与集群通信。过程中可能会用到 `jar` 文件,可能是为了运行或...
### Redis Cluster 部署与配置详解 #### 一、Redis Cluster 概述 Redis Cluster 是 Redis 3.0 版本引入的一项重要特性,它允许用户将 Redis 实例分组形成一个集群来提供高可用性和数据分区能力。通过这种方式,可以...
Ruby RedisCluster 深度解析 Ruby是一种动态、面向对象的开发语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在后端开发中,Ruby常常与Rails框架结合,构建高效、可维护的Web应用。Redis是一款高性能的...
总结,本压缩包提供的资源使你能够在本地快速搭建一个简单的RedisCluster测试环境,了解其工作原理和操作方式。在实际生产环境中,你需要考虑网络配置、持久化策略、故障转移机制等更复杂的因素。
1. `rubyinstaller-2.7.1-1-x64.exe`: 这是Ruby编程语言的Windows安装程序,Redis Cluster的初始化脚本`redis-trib.rb`就是用Ruby编写的。因此,为了运行这个脚本,你需要先在Windows环境中安装Ruby。运行此exe文件...
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。
3. `redis-trib.rb`:Ruby 脚本,用于集群的创建和管理,如添加、删除节点,检查集群状态等。 4. `redis.conf`:Redis 服务器的配置文件模板,可以在此基础上修改以适应集群环境。 5. `cluster-config-file.nodes-*`...
总的来说,Ruby和Redis接口是Ruby开发中的强大工具,它让开发者可以便捷地利用Redis的数据存储和处理能力,同时,对于需要搭建和管理RedisCluster的场景,特定的Ruby接口能简化这一过程,提高开发效率。通过深入理解...
这个脚本通常在Redis的`tools`目录下,但由于Windows环境不支持Ruby,你可能需要借助如RubyInstaller这样的工具来运行它。或者,你可以使用`redis-cli`命令行工具配合`--cluster create`命令手动创建集群。 5. **...
Ruby在这里的作用是作为创建和管理Redis-Cluster的工具,因为官方的`redis-trib.rb`脚本就是用Ruby编写的。 首先,让我们深入了解一下Ruby。Ruby是一种面向对象的、动态类型的编程语言,它强调简洁性和可读性,适合...
### Redis Cluster 4.0.8 配置与管理知识点详解 #### 一、环境准备与Redis安装 **1.1 Redis安装包获取** - **版本选择:** 文档推荐使用Redis 4.0.8版本。 - **下载地址:** ...
2. 启动 Redis 服务:在每个节点上启动 Redis 服务,配置文件 `redis.conf` 中应开启集群模式,设置 `cluster-enabled yes`。 3. 创建集群:使用 `redis-trib.rb` 脚本创建集群。在任意一个节点上,执行以下命令: ...
在本文中,我们将深入探讨如何使用Ruby脚本来部署Redis Cluster集群...这种方式适合在开发和测试环境中快速搭建Redis Cluster,但在生产环境中,可能需要考虑更复杂的部署策略和自动化工具,如使用Ansible或Docker等。