Redis介绍:

1、开源的NoSql数据库

2、C语言编写

3、基于内存运行,并且支持持久化

4、Key value存储

5、是主流的Nosql数据库之一

Redis优点:

1、内存使用方面,表现优异

2、数据读写快速高效

3、持久化性能相比其他Nosql数据库要好

4、扩展性和移植性强

5、分布式中不可或缺的一员

Redis 安装(单个):点我下载redis包   点我下载redis客户端

安装依赖:

yum install gcc-c++ 

安装!

1):解压redis包到指定目录

[root@admin tools]# tar -zxvf redis-3.2.10.tar.gz -C ../redis/

2):进入redis的解压目录输入make

3):安装 make install  PREFIX="安装路径" 

如果在安装的位置看到一个bin目录 说明安装成功了。

可能会出现的问题:

1):如果make报错

make[1]: 进入目录“/software/redis-3.2.10/src”
CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/software/redis-3.2.10/src”
make: *** [all] 错误 2 问题 少cc组件!

解决办法:

yum install gcc-c++ 
安装!

1-1):如果yum安装过程中出现镜像的问题

解决办法:

1、清空自带的yum源

rm -rf /etc/yum.repos.d/*

2、创建本地yum源

vim /etc/yum.repos.d/xx.repo

后缀名必须是以 repo结尾的!
xx是文件名,自拟!

3、编辑文件xx.repo

[local]
name=local
baseurl=file:///mnt
gpgcheck=0

4、挂载光盘 光盘的挂载点必须是 上面的baseurl

mount /dev/cdrom /mnt/

只有挂载只有才有 /mnt/目录

5、实现永久挂载光盘

vim /etc/fstab

在文件中的最后一行输入

/dev/cdrom /mnt iso9660 defaults 0 0

6、让文件立即生效

mount -a

可以使用yum了。

2):如果遇到 CC adlist.o

In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>

解决办法:

make MALLOC=libc

解决完错误 重新 make 就 OK 了。

4):启动 redis

5):redis 连接测试

  打开新的创建 进入redis的命令行模式

  注意另一个启动redis的窗口,现在不能关闭。

6):修改 配置redis.conf文件 后台运行

修改pid的文件位置:

修改 bind 添加主机 IP 连接客户端:之后重启redis服务

测试连接:

 

7):关闭 redis 服务

Redis Cluster集群设计:

  Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis3.0之后版本支持Redis-Cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

其redis-cluster架构图如下:

结构特点:

1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

2、节点的fail是通过集群中超过半数的节点检测失效时才生效。

3、客户端与redis节点直连,不需要中间proxy层。客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster负责维护node<->slot<->value。

5、Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

redis cluster节点分配:

假如现在有三个主节点分别是:A, B, C三个节点,它们可以是一台机器上的三个端口,也可以是三台不同的服务器。

那么,采用哈希槽 (hash slot)的方式来分配16384个slot的话,它们三个节点分别承担的slot区间是:

节点A覆盖0-5460;

节点B覆盖5461-10922;

节点C覆盖10923-16383.

获取数据:

如果存入一个值,按照redis cluster哈希槽的算法: CRC16('key')%16384 = 6782。 那么就会把这个 key 的存储分配到节点B上了。

同样,当我连接(A,B,C)任何一个节点想获取'key'这个key时,也会这样的算法,然后内部跳转到B节点上获取数据。

新增一个主节点:

新增一个节点D,redis cluster的这种做法是从各个节点的前面各拿取一部分slot到D上,我会在接下来的实践中实验。大致就会变成这样:

节点A覆盖1365-5460

节点B覆盖6827-10922

节点C覆盖12288-16383

节点D覆盖0-1364,5461-6826,10923-12287

同样删除一个节点也是类似,移动完成后就可以删除这个节点了。

Redis Cluster主从模式(选举和容错)

Redis Cluster为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会从从节点选取一个来充当主节点,从而保证集群不会挂掉。

上面那个例子里, 集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。

所以我们在集群建立的时候,一定要为每个主节点都添加从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。

B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。

不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。

Redis 安装(集群)

Redis伪分布式集群搭建在一台服务器上搭建6个redis!

1):首先关闭上一个的 redis 服务。

[root@admin bin]# ./redis-cli -h 192.168.31.206 -p 6379 shutdown

2):清除dump.rdb文件

rm -rf dump.rdb

3):创建一个集群文件夹

[root@admin opt]# mkdir redis-cluster

4):集群文件夹中创建6个redis目录

[root@admin redis-cluster]# mkdir redis01 redis02 redis03 redis04 redis05 redis06

5):把之前的 redis/bin 分别拷贝到6个redis目录下 、把之前的redis.conf 文件拷贝到bin下

1、先将之前的 redis bin 拷贝到 redis01下;redis.conf 拷贝到 bin 下

[root@admin opt]# cp -r ./redis/redis-3.2.10/bin ./redis-cluster/redis01/
[root@admin opt]# cp -r ./redis/redis-3.2.10/redis.conf ./redis-cluster/redis01/bin/

2、修改 redis.conf 文件【集群设置】

注意6379端口对应的这个集群设置 不要取消注释,方便后续演示单机版操作!

3、修改redis.conf文件中的port端口

4、修改 bind IP 地址

5、依次拷贝 redis01下的bin  到 redis02-redis06 中

[root@admin redis-cluster]# cp -r redis01/bin ./redis02/
[root@admin redis-cluster]# cp -r redis01/bin ./redis03/
[root@admin redis-cluster]# cp -r redis01/bin ./redis04/
[root@admin redis-cluster]# cp -r redis01/bin ./redis05/
[root@admin redis-cluster]# cp -r redis01/bin ./redis06/

6、依次修改 redis-02-redis06  bin/redis.conf 中的port端口号

   分别为:7002  7003  7004  7005  7006

[root@admin redis-cluster]# vim redis02/bin/redis.conf
[root@admin redis-cluster]# vim redis03/bin/redis.conf
[root@admin redis-cluster]# vim redis04/bin/redis.conf
[root@admin redis-cluster]# vim redis05/bin/redis.conf
[root@admin redis-cluster]# vim redis06/bin/redis.conf

7、写个批处理文件一次把所有的redis启动

start-all.sh:

cd redis01/bin
./redis-server redis.conf
cd ../../
cd redis02/bin/
./redis-server redis.conf
cd ../../
cd redis03/bin/
./redis-server redis.conf
cd ../../
cd redis04/bin/
./redis-server redis.conf
cd ../../
cd redis05/bin/
./redis-server redis.conf
cd ../../
cd redis06/bin/
./redis-server redis.conf
cd ../../

stop-all.sh:

cd redis01/bin/
./redis-cli -h 192.168.31.206 -p 7001 shutdown
cd ../../
cd redis02/bin/
./redis-cli -h 192.168.31.206 -p 7002 shutdown
cd ../../
cd redis03/bin/
./redis-cli -h 192.168.31.206 -p 7003 shutdown
cd ../../
cd redis04/bin/
./redis-cli -h 192.168.31.206 -p 7004 shutdown
cd ../../
cd redis05/bin/
./redis-cli -h 192.168.31.206 -p 7005 shutdown
cd ../../
cd redis06/bin/
./redis-cli -h 192.168.31.206 -p 7006 shutdown
cd ../../

8、启动集群测试

[root@admin redis-cluster]# ./start-all.sh
-bash: ./start-all.sh: 权限不够
[root@admin redis-cluster]# chmod 700 start-all.sh
[root@admin redis-cluster]# ./start-all.sh
[root@admin redis-cluster]# ps -ef|grep redis

停止:(开启后 这里先不用关闭  可省略此步骤)

[root@admin redis-cluster]# ./stop-all.sh
-bash: ./stop-all.sh: 权限不够
[root@admin redis-cluster]# chmod 700 stop-all.sh
[root@admin redis-cluster]# ./stop-all.sh

6):安装ruby Ruby可以把我们所有的redis连接在一起

yum  install  ruby

redis-3.0.0.gem 这个文件放在 redis-cluster 目录下即可!

yum  install  redis-3.0.0.gem
或者
gem install redis-3.0.0.gem

7):安装集群

./redis-trib.rb  create --replicas 1 192.168.31.206:7001 192.168.31.206:7002 192.168.31.206:7003 192.168.31.206:7004 192.168.31.206:7005 192.168.31.206:7006

 如果没有 redis-trib.rb  点我提供好了

8):测试集群

客户端也成功连接:

分享知识-快乐自己:redis集群搭建的更多相关文章

  1. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  2. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  3. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  4. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  5. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  6. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  7. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  8. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

  9. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

随机推荐

  1. dwr文件上传

    配置FileService映射: dwr.xml <create creator="new"> <param name="class" val ...

  2. java实体类如果不重写toString方法,会如何?

    先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符“@”和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返 ...

  3. shell脚本注释方法

    [1]单行注释 利用“#”对单行进行注释. 示例应用,新建文本,命名为test_single.sh 输入内容: # 单行注释 echo '单行注释' echo '123' # echo '456' e ...

  4. CSU 1663: Tree(树链剖分)

    1663: Tree Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 26  Solved: 11 [Submit][id=1663"> ...

  5. ftp put get 的使用方法

    首先:ftp user@ip 登录到远程主机 成功后,输入ls,如下: ftp> ls 可以得到远程主机的本地目录. 一:get命令(从远程主机下载文件到本机): ftp> get (re ...

  6. PHP-Manual的学习----【语言参考】----【类型】-----【Interger类型】

    2017年7月20日15:48:46Integer 整型 1.什么是整数?正数 0 负数2.整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +). 二进制表达的 ...

  7. C语言基础知识【函数】

    C 函数1.函数是一组一起执行一个任务的语句.每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数.您可以把代码划分到不同的函数中.如何划分代码到不同的函数 ...

  8. linux的文件夹权限

    r:读取文件夹结构清单的权限,可以列出该文件夹下的所有文件. w:更改目录结构清单的能力,可以新建文件和目录,删除文件和目录(不管这个文件是否属于你),对文件和目录更名,移动文件和目录. x:具有x权 ...

  9. centos7.0 安装php

    1:去php官网下载对应版本的php包 2:解压php包 3:进入解压后的php包 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --wit ...

  10. Solr6.5查询参数说明

    q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是 ...