- 浏览: 60595 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (117)
- RPC相关 (4)
- mvc_controller (3)
- mvc_model (3)
- maven (4)
- mvc_view (5)
- IO (2)
- 业务相关 (2)
- MQ (7)
- 搜索引擎 (3)
- zookeeper (2)
- 工具相关 (4)
- 编辑错误 (1)
- tomcat (1)
- 单元测试 (1)
- 负载均衡 (1)
- ubuntu (1)
- nginx (1)
- dubbo (2)
- 网络站点分发 (1)
- 电商-支付相关 (10)
- 电商订单业务相关 (3)
- Core java1 (3)
- Core Java (12)
- 多线程高并发(并发包/线程/锁) (10)
- 数据库+缓存 (17)
- springcloud (2)
- jvm (5)
- 日志相关 (1)
- 算法 (3)
- spring (2)
- 分布式一致性算法 (1)
最新评论
http://www.redis.cn/topics/cluster-tutorial.html
直接读写在内存,不用磁盘去读,意大利一家公司C语言写的
并且可以持久化 rdb aof
redis集群
string key-value hashmap sortset list
16384哈希槽 从0到16384
马槽 数据槽 哈希值来将我们这个数据槽编号
哈希槽编号->crc16算法 来确定请求哪个节点
内部是怎么请求 派发到我们集群节点上的:
crc16他会根据每一个客户端的key算出一个结果,对16384取余
之后得到的一个值看它落到哪一个区间,然后确定这个请求有哪个节点去处理。
当我们集群搭建好之后,每个节点它的哈希编号分配是怎样:
均匀分布到每个节点
一.安装
1.1 CentOS 6.5 下安装
Redis 3.0.6或稳定版本redis-stable
make成功之后,会在src目录下多出一些文件,如下
可手动拷贝redis-server、redis-cli、redis-check-aof、redis-check-dump等至/usr/local/bin目录下,也可执行make install,此处执行make install。
运行后可查看,/usr/local/bin下已有这些文件。
redis-server:Redis服务器端启动程序
redis-cli:Redis客户端操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具
redis-check-aof:数据修复工具
redis-check-dump:检查导出工具
注意:若此时执行redis-server –v (查看版本命令),若提示redis-server command not found,则需要将/usr/local/bin目录加到环境变量,如何添加,此处不做详细介绍,可查看修改/etc/profile,(查看环境变量命令:echo $PATH)
正常如下:
至此,redis安装完成,接着配置。
参考:http://blog.csdn.net/ludonqin/article/details/47211109
1.2 然后新建目录,存放配置文件
mkdir /etc/redis
mkdir /var/redis
/var/redis运行mkdir data log run
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/data
在redis解压根目录中找到配置文件模板,复制到如下位置。
cp redis.conf /etc/redis/redis.conf
1.3 通过vim命令修改redis.conf文件:
1.修改端口(默认6379)
2.daemonize yes
改成 yes。
# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
3.修改pid目录为新建目录:
pidfile /var/redis/run/redis.pid
4.修改log存储目录为新建目录:
logfile /var/redis/log/redis.log
5.修改dump目录为新建目录:
dir /var/redis/data
1.4 最后运行redis:
$ redis-server /etc/redis/redis.conf
查看redis状态:
ps -ef|grep redis
二.在阿里云做集群
集群管理器将哈希曹连续分布到不同redis中。
crc16算法,然后对我们的key进行去余16384个哈希曹点进行取模->请求散列
1.redis主从 m/s port: 1000/1001 solots:0-5460
2.redis主从 m/s port: 2000/2001 solots:5461-10922
3.redis主从 m/s port: 3000/3001 solots:10923-16383
哈希槽点 从机没有 集群站点槽点自动均为分配
主机来响应客户请求,从机同步我们主机数据备份,读写分离降低主机业务消耗。
2.1 改redis.conf文件里配置
配置每个redis的redis.config配置文件:
port 1000
配置redis作为守护进程运行,daemonize改成 yes。
当redis作为守护进程运行的时候,它会写一个 pid 到 redis.pid 文件里面。
bind 101.200.129.112 阿里云的ip 不要127.0.0.0的地址
pidfile /home/redis-test/samcluter/1000/redis.pid 当前目录:
logfile /home/redis-test/samcluter/1000/redis.log 日志:
appendonly yes 集群aos:
集群相关文件配置:
cluster-enabled yes
cluster-config-file nodes-1000.conf
cluster-node-timeout 5000
2.2开启服务器
redis-server redis.conf
或 ps -ef|grep redis-server 查看启动的服务器
启动集群客服端链接模式:
集群客户端查询集群状态,查看状态
可以发现cluster_state:fail并没有集群成功,每个单台都打开了,但是就是没连接起来。
需要集群大管家redis-trib,此工具安装需要依赖ruby环境。
2.3 集群管理器介绍:
[root@centos64 redis]# redis-3.0.6/src/redis-trib.rb 集群管理器来搭建我们官方最小集群组。
我们在做集群的时候缺少一个redis接口包。
通过安装ruby来获得gem命令,可以查看redis集群接口包有没有安装,没有的话来安装我们redis接口。
redis-trib.rb利用ruby,下环境安装redis集群接口。
查看ruby是否安装:ruby -v
在做redis集群时,ruby至少需要2.0以上版本。
2.4 集群管理器关联主从关系:
slots哈希槽点都是均匀分配在主机上。
赋值取值测试redis集群:
RedisDesktopManager:
停止redis
redis-cli shutdown 或者 kill redis进程的pid
停止redis集群
如果停止集群所有节点,让所有节点都关闭,只能关闭进程了# pkill -9 redis。
如果报错,解决方案 http://blog.csdn.net/wudalang_gd/article/details/52153571
http://blog.csdn.net/zfl092005/article/details/17523945
挂掉之后,哨兵机制如何处理的?如何做监控进程,挂机后自动切换。
通过yun安装
yum -y install mysql-server
/etc/rc.d/init.d/mysqld restart
/usr/bin/mysqladmin -u root password '123456'
#chmod -R 777 /etc/mysql/my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
# root用户登录
$ mysql -u root -p
直接读写在内存,不用磁盘去读,意大利一家公司C语言写的
并且可以持久化 rdb aof
redis集群
string key-value hashmap sortset list
16384哈希槽 从0到16384
马槽 数据槽 哈希值来将我们这个数据槽编号
哈希槽编号->crc16算法 来确定请求哪个节点
内部是怎么请求 派发到我们集群节点上的:
crc16他会根据每一个客户端的key算出一个结果,对16384取余
之后得到的一个值看它落到哪一个区间,然后确定这个请求有哪个节点去处理。
当我们集群搭建好之后,每个节点它的哈希编号分配是怎样:
均匀分布到每个节点
一.安装
1.1 CentOS 6.5 下安装
Redis 3.0.6或稳定版本redis-stable
[root@centos64 ~]# cd /usr/local/ [root@centos64 local]# wget http://download.redis.io/redis-stable.tar.gz [root@centos64 local]# tar xvzf redis-stable.tar.gz [root@centos64 local]# cd redis-stable [root@centos64 redis-stable]# make
make成功之后,会在src目录下多出一些文件,如下
可手动拷贝redis-server、redis-cli、redis-check-aof、redis-check-dump等至/usr/local/bin目录下,也可执行make install,此处执行make install。
运行后可查看,/usr/local/bin下已有这些文件。
redis-server:Redis服务器端启动程序
redis-cli:Redis客户端操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具
redis-check-aof:数据修复工具
redis-check-dump:检查导出工具
注意:若此时执行redis-server –v (查看版本命令),若提示redis-server command not found,则需要将/usr/local/bin目录加到环境变量,如何添加,此处不做详细介绍,可查看修改/etc/profile,(查看环境变量命令:echo $PATH)
正常如下:
[root@centos64 bin]# redis-server -v Redis server v=3.0.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=c9601d54be51bdc7
至此,redis安装完成,接着配置。
参考:http://blog.csdn.net/ludonqin/article/details/47211109
1.2 然后新建目录,存放配置文件
mkdir /etc/redis
mkdir /var/redis
/var/redis运行mkdir data log run
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/data
在redis解压根目录中找到配置文件模板,复制到如下位置。
cp redis.conf /etc/redis/redis.conf
1.3 通过vim命令修改redis.conf文件:
1.修改端口(默认6379)
2.daemonize yes
改成 yes。
# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
3.修改pid目录为新建目录:
pidfile /var/redis/run/redis.pid
4.修改log存储目录为新建目录:
logfile /var/redis/log/redis.log
5.修改dump目录为新建目录:
dir /var/redis/data
1.4 最后运行redis:
$ redis-server /etc/redis/redis.conf
查看redis状态:
ps -ef|grep redis
二.在阿里云做集群
集群管理器将哈希曹连续分布到不同redis中。
crc16算法,然后对我们的key进行去余16384个哈希曹点进行取模->请求散列
1.redis主从 m/s port: 1000/1001 solots:0-5460
2.redis主从 m/s port: 2000/2001 solots:5461-10922
3.redis主从 m/s port: 3000/3001 solots:10923-16383
哈希槽点 从机没有 集群站点槽点自动均为分配
主机来响应客户请求,从机同步我们主机数据备份,读写分离降低主机业务消耗。
2.1 改redis.conf文件里配置
[root@centos64 redis]# cd redis-3.0.6/ [root@centos64 redis-3.0.6]# cp redis.conf /usr/local/redis/cluster/redis-1000 [root@centos64 redis-3.0.6]# cp redis.conf /usr/local/redis/cluster/redis-1001
配置每个redis的redis.config配置文件:
port 1000
配置redis作为守护进程运行,daemonize改成 yes。
当redis作为守护进程运行的时候,它会写一个 pid 到 redis.pid 文件里面。
bind 101.200.129.112 阿里云的ip 不要127.0.0.0的地址
pidfile /home/redis-test/samcluter/1000/redis.pid 当前目录:
logfile /home/redis-test/samcluter/1000/redis.log 日志:
appendonly yes 集群aos:
集群相关文件配置:
cluster-enabled yes
cluster-config-file nodes-1000.conf
cluster-node-timeout 5000
2.2开启服务器
redis-server redis.conf
[root@centos64 redis]# cd cluster/redis-1000 [root@centos64 redis-1000]# ls redis.conf [root@centos64 redis-1000]# redis-server redis.conf [root@centos64 redis-1000]# cd /usr/local/redis/cluster/redis-1001/ [root@centos64 redis-1001]# redis-server redis.conf [root@centos64 redis-1001]# cd /usr/local/redis/cluster/redis-2000/ [root@centos64 redis-2000]# redis-server redis.conf [root@centos64 redis-2000]# cd /usr/local/redis/cluster/redis-2001/ [root@centos64 redis-2001]# redis-server redis.conf [root@centos64 redis-2001]# cd /usr/local/redis/cluster/redis-3000/ [root@centos64 redis-3000]# redis-server redis.conf [root@centos64 redis-3000]# cd /usr/local/redis/cluster/redis-3001/ [root@centos64 redis-3001]# redis-server redis.conf [root@centos64 redis-3001]# ps -ef|grep redis root 2935 1 0 3月14 ? 00:06:14 redis-server *:6379 root 12173 1 0 11:47 ? 00:00:00 redis-server 192.168.92.130:1000 [cluster] root 12178 1 0 11:47 ? 00:00:00 redis-server 192.168.92.130:1001 [cluster] root 12182 1 0 11:48 ? 00:00:00 redis-server 192.168.92.130:2000 [cluster] root 12186 1 0 11:48 ? 00:00:00 redis-server 192.168.92.130:2001 [cluster] root 12190 1 0 11:48 ? 00:00:00 redis-server 192.168.92.130:3000 [cluster] root 12194 1 0 11:48 ? 00:00:00 redis-server 192.168.92.130:3001 [cluster] root 12199 9811 0 11:50 pts/0 00:00:00 grep --color=auto redis
或 ps -ef|grep redis-server 查看启动的服务器
启动集群客服端链接模式:
集群客户端查询集群状态,查看状态
[root@centos64 cluster]# redis-cli -c -h 192.168.92.130 -p 1000 192.168.92.130:1000> cluster info cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:1 cluster_size:0 cluster_current_epoch:0 cluster_my_epoch:0 cluster_stats_messages_sent:0 cluster_stats_messages_received:0
可以发现cluster_state:fail并没有集群成功,每个单台都打开了,但是就是没连接起来。
需要集群大管家redis-trib,此工具安装需要依赖ruby环境。
2.3 集群管理器介绍:
[root@centos64 redis]# redis-3.0.6/src/redis-trib.rb 集群管理器来搭建我们官方最小集群组。
我们在做集群的时候缺少一个redis接口包。
通过安装ruby来获得gem命令,可以查看redis集群接口包有没有安装,没有的话来安装我们redis接口。
redis-trib.rb利用ruby,下环境安装redis集群接口。
查看ruby是否安装:ruby -v
在做redis集群时,ruby至少需要2.0以上版本。
[root@centos64 src]# ruby -v -bash: ruby: 未找到命令 [root@centos64 src]# sudo yum install ruby 已加载插件:fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast ................ [root@centos64 src]# ruby -v ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
2.4 集群管理器关联主从关系:
[root@centos64 src]# pwd /usr/local/redis/redis-3.0.6/src [root@centos64 src]#./redis-trib.rb create --replicas 1 192.168.92.130:1000 192.168.92.130:2000 192.168.92.130:3000 192.168.92.130:1001 192.168.92.130:2001 192.168.92.130:3001
slots哈希槽点都是均匀分配在主机上。
赋值取值测试redis集群:
RedisDesktopManager:
停止redis
redis-cli shutdown 或者 kill redis进程的pid
停止redis集群
如果停止集群所有节点,让所有节点都关闭,只能关闭进程了# pkill -9 redis。
如果报错,解决方案 http://blog.csdn.net/wudalang_gd/article/details/52153571
http://blog.csdn.net/zfl092005/article/details/17523945
挂掉之后,哨兵机制如何处理的?如何做监控进程,挂机后自动切换。
通过yun安装
yum -y install mysql-server
/etc/rc.d/init.d/mysqld restart
/usr/bin/mysqladmin -u root password '123456'
#chmod -R 777 /etc/mysql/my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
# root用户登录
$ mysql -u root -p
发表评论
-
msql主从同步机制
2019-04-12 17:08 335DB主从分离:主服务 更新有线程记录mysq 的blog记录文 ... -
mysql原理分析(可用于培训)
2019-03-29 19:59 3181 ... -
redis主从同步/复制
2019-03-08 14:17 339redis主从是如何同步的 先说已经执行过首次同步(salvo ... -
数据库索引
2019-03-04 11:41 350参考:https://www.cnblogs.com/yelo ... -
数据库死锁&数据库锁知识点
2019-02-28 17:28 459参考:https://www.cnblogs.co ... -
redis 在业务代码应用
2018-08-02 16:30 5631.查库存 public class IndexDatas ... -
redis被动缓存
2018-04-04 18:45 517package com.pingan.haofang.ag ... -
本地缓存类
2018-04-04 18:44 353package com.pingan.haofang.ag ... -
缓存集中形式
2018-03-31 17:11 3531.被动缓存 被动缓存: 当取service服务数据redis ... -
分布式事务
2018-01-25 20:37 953事务 原子性,事务要么全执行,要么全不执行。 一致性,事务开 ... -
数据库死锁
2017-12-26 11:35 332死锁(Deadlock) 所谓死 ... -
redis sentinel & cluster 原理分析
2017-03-20 17:03 402[img][/img]http://lib.csdn.net/ ... -
redis sentinel:使用Spring-data-redis操作Redis的Sentinel
2017-03-20 10:22 653redis整合spring(redisTemplate工具类) ... -
mysql服务端安装(centos)
2017-03-02 18:10 417http://jingyan.baidu.com/articl ... -
mysql服务端与客户端安装(windows)
2016-12-02 11:23 832一.服务端安装5.7版本(zip的方式) 1.下载zip文件 ... -
mysql性能优化与ORM分库分表
2016-12-01 21:08 1339http://www.cnblogs.com/gossip/ ...
相关推荐
实验结果表明,在高并发访问数(例如10000以上)的场景下,RedisCluster的响应时间明显优于Codis系统,验证了RedisCluster分布式缓存系统在处理高并发访问时的高效率和优越性能。 关键词“分布式缓存”指的是分布式...
Redis高可用集群Redis Cluster搭建 Redis高可用集群Redis Cluster搭建是 Redis 官方推荐的高可用性解决方案,于 3.0 版本推出。Redis Cluster 的主要用途是实现数据分片(Data Sharding),同时也可以实现高可用...
使用JFinal Redis Cluster插件时,首先需要将其引入到项目中,这里我们看到有一个名为 "jfinal-rediscluster-plugin-by-shixiaotian-0.0.1.jar" 的文件,这应该是该插件的可执行版本。通常,开发者会将这个JAR文件...
**RedisCluster集群与Spring访问Redis详解** Redis是一个高性能的键值数据库,广泛应用于缓存、消息中间件等场景。在大型分布式系统中,为了提供高可用性和数据冗余,我们通常会采用Redis Cluster来构建集群。本文...
3. `jfinal-rediscluster-plugin-by-shixiaotian-0.0.1.jar`:这应该是JFinal Redis Cluster插件的jar包,由开发者shixiaotian创建,版本为0.0.1,用于在JFinal项目中支持Redis集群。 4. `readme.txt`:通常这个文件...
本文将详细介绍Redis Cluster的工作原理、配置、使用以及与MySQL数据库的配合。 **一、Redis Cluster概述** Redis Cluster是一个无中心架构的分布式系统,每个节点都是平等的,它们共同维护整个数据集。通过数据分...
本示例“rediscluster集群demo”旨在展示如何设置和操作一个简单的Redis Cluster实例,确保在本地环境中的正确运行。 首先,Redis Cluster采用无中心架构,每个节点都是对等的,并且负责一部分数据。它通过槽(slot...
Redis Cluster是Redis官方提供的分布式集群解决方案,它允许用户在多台服务器上部署Redis实例,形成一个高可用、可扩展的数据存储集群。Redis Cluster通过数据分片(Sharding)和槽分区(Slot Partitioning)策略来...
7. **集群(Cluster)**:学习Redis Cluster的搭建和管理,以及在分布式环境中的数据分片和容错机制。 8. **持久化**:掌握RDB和AOF两种持久化方式,以及它们的优缺点和适用场景。 9. **性能优化**:探讨如何通过...
《深入理解resty-redis-cluster:Openresty Lua中的Redis集群客户端》 在现代Web服务开发中,数据存储和缓存扮演着至关重要的角色。Redis作为一款高性能的键值存储系统,广泛应用于缓存、消息队列等领域。而...
Redis Cluster 集群模式部署 本文将详细介绍 Redis Cluster 集群模式部署的步骤和配置过程。Redis Cluster 是 Redis 的一个高可用解决方案,通过将多个 Redis 节点组合成集群,提高 Redis 的可用性和性能。 环境...
3. 使用JedisCluster操作Redis:现在你可以通过jedisCluster对象执行各种Redis命令,如设置和获取键值: ```java String key = "exampleKey"; String value = "exampleValue"; jedisCluster.set(key, value); ...
Redis是一种高性能的键值对数据存储系统,常用于缓存、数据库和消息中间件等场景。在本资源包中,提供了搭建Redis集群所需的各种工具和教程,帮助你在Windows环境下进行操作。 首先,让我们来了解Redis集群的基础...
综上所述,RedisCluster为大型应用提供了强大的分布式缓存和数据库解决方案,但同时也需要注意其特性和限制,合理规划和管理才能充分发挥其优势。在实际使用中,还需要结合具体的业务场景和需求进行调整和优化。
为了确保服务的稳定性和可靠性,Redis提供了多种高可用解决方案,其中最常见的是Redis Cluster集群模式以及自定义的手工搭建的缓存框架。下面将对这两个方面进行详细探讨。 ### Redis Cluster集群 Redis Cluster是...
Redis Cluster 是 Redis 3.0 版本引入的一项重要特性,它允许用户将 Redis 实例分组形成一个集群来提供高可用性和数据分区能力。通过这种方式,可以有效地提高系统的水平扩展能力,并确保即使某个节点出现故障,服务...
在这个例子中,我们首先导入了`RedisCluster`,然后创建了一个连接对象,指定了Redis集群的一个节点(主机和端口)。`decode_responses=True`参数意味着响应将被自动解码为Unicode字符串。 Redis-Py-Cluster支持的...
在Linux-CentOS环境下部署Redis Cluster,是实现分布式缓存和数据库解决方案的重要步骤。以下是对"Linux-CentOS中redisCluster部署指南(redis-5.0.3)"的详细解释和相关知识点: 一、Redis Cluster简介 Redis ...
Redis 是一个高性能的键值数据库,常用于数据缓存、消息队列以及数据库等功能。它以其高效的内存存储机制和丰富的数据结构而闻名。在 Redis 的众多特性中,Redis Cluster 是其分布式集群解决方案,旨在提供高可用性...
Redis,作为一个高性能的键值数据存储系统,常被用作数据库、缓存和消息代理,其高可用性和高并发特性使其在分布式系统中备受青睐。本篇将详细讲解Redis集群如何实现这两个关键特性。 首先,我们要理解Redis的集群...