redis-5.0 cluster带腾讯分分彩出售认证及客户端连接

Redis在3.0版腾讯分分彩出售dsluntan.com Q:3393756370 VX:17061863513正式引入redis-cluster集群这个特性。Redis集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的Redis内存K/V服务,集群可以使用的功能是普通单机Redis所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。还有比如set里的并集(unions)和交集(intersections)操作,就没有实现。通常来说,那些处理命令的节点获取不到键值的所有操作都不会被实现。在将来,用户或许可以通过使用MIGRATE COPY命令,在集群上用计算节点(Computation Nodes) 来执行多键值的只读操作, 但Redis集群本身不会执行复杂的多键值操作来把键值在节点间移来移去。Redis集群不像单机版本的Redis那样支持多个数据库,集群只有数据库0,而且也不支持SELECT命令。Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。

Redis集群的优点:

无中心架构,分布式提供服务。数据按照slot存储分布在多个redis实例上。增加slave做standby数据副本,用于failover,使集群快速恢复。实现故障auto failover,节点之间通过gossip协议交换状态信息;投票机制完成slave到master角色的提升。支持在线增加或减少节点。降低硬件成本和运维成本,提高系统的扩展性和可用性。

Redis集群的缺点:

client实现复杂,驱动要求实现smart client,缓存slots mapping信息并及时更新。目前仅JedisCluster相对成熟,异常处理部分还不完善,比如常见的“max redirect exception”。客户端的不成熟,影响应用的稳定性,提高开发难度。节点会因为某些原因发生阻塞(阻塞时间大于clutser-node-timeout),被判断下线。这种failover是没有必要,sentinel也存在这种切换场景。

#hosts文件配置

cat >> /etc/hosts << EOF
192.168.5.65 redis65
192.168.5.66 redis65
EOF

一、搭建redis5.0集群

从redis 3.0之后版本支持redis-cluster集群,redis-4.0.0开始支持module,redis-5.0.0开始支持类似于kafka那样的消息队列,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。这样就可以很好的保证redis的高可用性,下面就来部署个Redis Cluster,在两台服务器上部署6个redis节点

IP和端口配置文件名

192.168.5.65:600165_6001/redis.conf

192.168.5.65:600265_6002/redis.conf

192.168.5.65:600365_6003/redis.conf

192.168.5.66:600166_6001/redis.conf

192.168.5.66:600266_6002/redis.conf

192.168.5.66:600366_6003/redis.conf

1、修改系统参数

#修改最大可打开文件数

cat >> /etc/security/limits.conf << EOF
* soft nofile 102400
* hard nofile 102400
EOF

#TCP监听队列大小

echo "net.core.somaxconn = 32767" >> /etc/sysctl.conf
sysctl -p

#OOM相关:vm.overcommit_memory

echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p

#开启内核的“Transparent Huge Pages (THP)”特性

echo never > /sys/kernel/mm/transparent_hugepage/enabled

#请将“echo never > /sys/kernel/mm/transparent_hugepage/enabled”加入到文件/etc/rc.local中

2、安装redis并配置redis-cluster

[[email protected] /]# cd /opt
[[email protected] /]# wget http://download.redis.io/releases/redis-5.0.0.tar.gz
[[email protected] /]# tar -zxvf redis-5.0.0.tar.gz
[[email protected] /]# cd redis-5.0.0/
[[email protected] /]# make
[[email protected] /]# make install PREFIX=/usr/local/redis-cluster

#创建实例目录

[[email protected] redis-5.0.0]# mkdir -p /usr/local/redis-cluster/{65_6001,65_6002,65_6003}
[[email protected] redis-5.0.0]# mkdir -p /usr/local/redis-cluster/{66_6001,66_6002,66_6003}

#配置官方配置文件,去掉#开头的和空格行

cat redis.conf |grep -v ^# |grep -v ^$

#redis65 6001配置文件

[[email protected] /]#cd /usr/local/redis-cluster
[[email protected] redis-cluster]# cat >> 65_6001/redis.conf << EOF
bind 0.0.0.0
protected-mode no
port 6001
daemonize no
dir /usr/local/redis-cluster/65_6001
cluster-enabled yes
cluster-config-file /usr/local/redis-cluster/65_6001/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /usr/local/redis-cluster/65_6001/redis.pid
logfile /usr/local/redis-cluster/65_6001/redis.log
EOF

#redis65 6002配置文件

[[email protected] redis-cluster]# sed ‘s/6001/6002/g‘ 65_6001/redis.conf > 65_6002/redis.conf

#redis65 6003配置文件

[[email protected] redis-cluster]# sed ‘s/6001/6003/g‘ 65_6001/redis.conf > 65_6003/redis.conf

#写一个启动脚本start-redis-cluster.sh

[[email protected] /]#cat /usr/local/redis-cluster/start-redis-cluster.sh
#!/bin/sh
REDIS_HOME=/usr/local/redis-cluster
$REDIS_HOME/bin/redis-server $REDIS_HOME/65_6001/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/65_6002/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/65_6003/redis.conf
chmod +x /usr/local/redis-cluster/start-redis-cluster.sh
/usr/local/redis-cluster/start-redis-cluster.sh

#redis66 6001配置文件

[[email protected] /]# cd /usr/local/redis-cluster
[[email protected] redis-cluster]# cat >> 66_6001/redis.conf << EOF
bind 0.0.0.0
protected-mode no
port 6001
daemonize no
dir /usr/local/redis-cluster/66_6001
cluster-enabled yes
cluster-config-file /usr/local/redis-cluster/66_6001/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /usr/local/redis-cluster/66_6001/redis.pid
logfile /usr/local/redis-cluster/66_6001/redis.log
EOF

#redis66 6002配置文件

[[email protected] redis-cluster]# sed ‘s/6001/6002/g‘ 66_6001/redis.conf > 66_6002/redis.conf

#redis66 6003配置文件

[[email protected] redis-cluster]# sed ‘s/6001/6003/g‘ 66_6001/redis.conf > 66_6003/redis.conf
[[email protected] /]#cat /usr/local/redis-cluster/start-redis-cluster.sh
#!/bin/sh
REDIS_HOME=/usr/local/redis-cluster
$REDIS_HOME/bin/redis-server $REDIS_HOME/66_6001/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/66_6002/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/66_6003/redis.conf
chmod +x /usr/local/redis-cluster/start-redis-cluster.sh

#启动redis

/usr/local/redis-cluster/start-redis-cluster.sh

#查看redis进程启动状态

ps -ef | grep redis

#创建redis cluster,如果只是想快速创建和启动redis集群,可使用redis官方提供的脚本create-cluster,注意redis-5.0.0版本开始才支持“--cluster”

cd /usr/local/redis-cluster/bin
./redis-cli --cluster create 192.168.5.65:6001 192.168.5.65:6002 192.168.5.65:6003 192.168.5.66:6001 192.168.5.66:6002 192.168.5.66:6003 --cluster-replicas 1

如果配置项cluster-enabled的值不为yes,则执行时会报错“[ERR] Node 192.168.5.65:6001 is not configured as a cluster node.”。这个时候需要先将cluster-enabled的值改为yes,然后重启redis-server进程,之后才可以重新执行redis-cli创建集群。

redis-cli的参数说明:

1) create

表示创建一个redis集群。

2) --cluster-replicas 1

表示为集群中的每一个主节点指定一个从节点,即一比一的复制

#查看redis进程是否已切换为集群状态(cluster)

ps -ef|grep redis

#停止redis实例,直接使用kill命令即可

kill -9 15025

#命令行工具redis-cli

[[email protected] /]# ln -s /usr/local/redis-cluster/bin/redis-cli /bin/redis-cli
[[email protected] bin]# redis-cli -c -p 6001

#查看集群中的节点:

127.0.0.1:6001> cluster nodes

127.0.0.1:6002> set name 65-7001
-> Redirected to slot [5798] located at 192.168.5.66:6001
OK
192.168.5.66:6001> quit
[[email protected] bin]# redis-cli -c -p 6003
127.0.0.1:6003> get name
-> Redirected to slot [5798] located at 192.168.5.66:6001
"65-7001"
[[email protected] bin]# redis-cli -h 192.168.5.66 -p 6002

#检查节点状态

[[email protected] bin]# redis-cli --cluster check 192.168.5.66:6001

#查看集群信息

[[email protected] bin]# redis-cli -c -p 6003
127.0.0.1:6003> cluster info

#给redis cluster集群加上认证,登录到redis节点执行下面的操作

[[email protected] /]# redis-cli -h 192.168.5.65 -p 6001 -c
> config set masterauth zxc789
> config set requirepass zxc789
> auth zxc789
> config rewrite

#各个节点都完成上面的3条config操作,重启redis各节点,看下各节点的redis.conf,可以发现最后多了3行内容

[[email protected] /]# killall redis-server
[[email protected] /]# /usr/local/redis-cluster/start-redis-cluster.sh
[[email protected] ~]# cat /usr/local/redis-cluster/66_6001/redis.conf

#加了认证的redis登录

redis-cli -h 192.168.5.65 -p 6001 -c -a ‘zxc789‘

二、安装php的redis扩展

1、在现有的web服务器上安装php的redis扩展

[[email protected] ~]# cd /opt
[[email protected] opt]# wget -c -t 0 https://github.com/owlient/phpredis/archive/master.zip
[[email protected] opt]# unzip master.zip
[[email protected] opt]# cd phpredis-master/
[[email protected] phpredis-master]# /usr/local/php/bin/phpize
[[email protected] phpredis-master]# ./configure --with-php-config=/usr/local/php/bin/php-config
[[email protected] phpredis-master]# make && make install

#这里进行make的时候报错

2、那是因为最新的 phpredis 分了几大分支,针对最新的PHP稳定发行版 php7 有专门为php7的分支,所以我们从github拉下phpredis 源码 需要切换到PHP7的分支 首先git clone phpredis下来

[[email protected] ~]# cd /opt
[[email protected] ~]# git clone https://github.com/nicolasff/phpredis
[[email protected] ~]# git checkout php7
[[email protected] opt]# cd phpredis
[[email protected] phpredis]# /usr/local/php/bin/phpize
[[email protected] phpredis]# ./configure --with-php-config=/usr/local/php/bin/php-config
[[email protected] phpredis]# make && make install

3、修改php.ini加上“extension=redis.so”

vi /usr/local/php/etc/php.ini
extension = "redis.so"

4、重启php-fpm

/etc/init.d/php-fpm restart

#用phpinfo验证下redis扩展是否安装成功

5、单实例redis通过php连接测试
<?php
    //连接192.168.5.65的Redis服务
   $redis = new Redis();
   $redis->connect(‘192.168.5.65‘, 6001);
   $redis->auth(‘zxc789‘); //redis认证
   echo "Connection to server sucessfully";
         //查看服务是否运行
   echo "Server is running: " . $redis->ping();
?>

#执行脚本,输出结果为:

Connection to server sucessfully

Server is running: PONG

6、Java操作Redis cluster集群可使用jredis,PHP要操作redis cluster集群有两种方式

1)使用phpredis扩展,这是个c扩展,性能更高,但是这个方案参考资料很少

2)使用predis,纯php开发,使用了命名空间,需要php5.3+,灵活性高,我这里用的是predis,下载地址https://github.com/nrk/predis

[[email protected] tmp]# git clone https://github.com/nrk/predis.git
#将predis放到网站根目录下
[[email protected] tmp]# mv predis /data/www/predis
[[email protected] tmp]# cd /data/www/

[[email protected] www]# cat predis.php

<?php
require ‘predis/autoload.php‘;//引入predis相关包
//redis实例
$servers = array(
    ‘tcp://192.168.5.65:6001‘,
    ‘tcp://192.168.5.65:6002‘,
    ‘tcp://192.168.5.65:6003‘,
    ‘tcp://192.168.5.66:6001‘,
    ‘tcp://192.168.5.66:6002‘,
    ‘tcp://192.168.5.66:6003‘,
);
$options = [‘cluster‘ =>‘redis‘,‘parameters‘ => [
        ‘password‘ => ‘zxc789‘
    ]];
$client = new Predis\Client($servers,$options);
$client->set(‘name1‘, ‘1111111‘);
$client->set(‘name2‘, ‘2222222‘);
$client->set(‘name3‘, ‘3333333‘);
$name1 = $client->get(‘name1‘);
$name2 = $client->get(‘name2‘);
$name3 = $client->get(‘name3‘);
var_dump($name1, $name2, $name3);die;
?>

原文地址:https://www.cnblogs.com/ziluolan123/p/9957155.html

时间: 2024-10-06 09:52:32

redis-5.0 cluster带腾讯分分彩出售认证及客户端连接的相关文章

腾讯分分彩源码带龙虎和玩法自言自语Spring依赖注入(XML配置)

至于基于XML依赖注入的过程,首先要找一个比较合适的入口,那就是getBean.那么具体是怎么实现的呢?首先写个测试方法: ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("application-common.xml","application-beans.xml","application_jdbc.xml");Object obj = app.g

关于Unity2018最新杏彩合买源码新增腾讯分分彩完整版带手机端新版ECS框架

关于Unity2018最新杏彩合买源码新增腾讯分分彩完整版带手机端新版ECS框架杏彩源码下载Q212303635 论坛:aqiulian.com先说说和它一同推出的,和ECS没直接关系的新特性:NativeArray<T>按照官方的说法,以后还会有NativeList,NativeHashMap,NativeQueue之类(这些在C#端就能实现). NativeArray内部只能容纳值对象.而且在创建的时候除了指定length外,还需要指定allocator模式: Temp(临时)TempJo

Java程序员腾讯分分彩源码出售的5年职业规划

第1部分 在搭建SSM的腾讯分分彩源码出售(www.1159880099.com)QQ1159880099 过程中,可能会经常接触到一个叫maven的工具.这个工具也是你以后工作当中几乎是必须要使用的工具,所以你在搭建SSM的过程中,也可以顺便了解一下maven的知识.在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随着你工作经验的增加,会逐渐接触到的. 第2部分: 对于参加工作一年以内的同学.恭喜你,这个时候,你已经拥有了一份Java的工作.这个阶段是你成

彩票稳赢计划:腾讯分分彩刷流水方法

简码编程在写<如何提高彩票胜率>系列的过程中,发现某些网站有充值优惠活动,首次充值1000元赠送68元,于是一个彩票稳赢计划随之产生. 此充值优惠活动的规则是首次充值满1000元,赠送68元,所赠送的余额需要在流水够充值额时才能提现,即是实充1000元帐户得1068元,要打够1000元流水才可以提现. 那么可以如下操作.先用一个大号开AB两个小号,每个小号各充1000元,则每个小号的余额都有了1068元.然后两个小号对刷流水,比如小号A投单,则小号B投双,小号A投大,则小号B投小.这样两个小号

企业站点如何做高质量的外链?腾讯分分彩官网

经常做外链的朋友都知道,外链难做.外链掉得快.外链质量低.网站得分也低,垃圾外链.黑链等问题.这些问题直接或是间接影响着网站的权重.那么企业又该如何做高质量的外链呢?我这里有几个建议,可解决企业站问题,供大家参考.(www.txfencai.com腾讯分分彩官网) 一.外链资源多样化,做为企业站.因为行业局限性,资源本来就少,在这种情况之下 就要多样化,注册几个B2B平台.博客平台.百度文库.百度贴吧.行业论坛等高权重的网站上发外链.减少被掉的风险. 二.用站群做外链,以站养站,重点是每个站都要

redis 3.0 cluster 集群 学习之路篇 [1]

周氏一族,整理技术文档,给下一代留点教程...... 目前,项目用的redis主备,感觉超不爽,很多局限性,特别是在 redis master 宕机之后,维护非常麻烦,寻思着弄一个redis集群,可不,总算到了今年10.1,redis发布了cluster版本.开启摸索之路... 很多人,一看到官网有最新的cluster版本,满怀热血,第一件事,就是搭建cluster环境,其实,鄙人却不,还是要从基层走起,先来了解一下官方信息,整理成下面的,大部分都是根据网络上整理出来的,又存在相同,纯属借鉴,往

redis 4.0 cluster方式

每隔一段时间去检查各个节点的状态,主要的函数如下: cluster node信息的存放位置:server.cluster->nodes server.c ->serverCron-> This is executed 10 times every second cluster.c->clusterCron 遍历nodes的后通过网络的连接查看节点是否存活 fd = anetTcpNonBlockBindConnect(server.neterr, node->ip,node-

redis 3.0.7 cluster 集群部署

一.环境描述 DB:redis 3.0.7 最新稳定版 OS:centos 6.6_x64 二.安装步骤 1.基本软件包安装 [[email protected] ~]# yum -y install ruby [[email protected] ~]# yum -y install rubygems 下载路径,上传到/tmp路径下 https://rubygems.org/gems/redis/versions/3.0.0 [[email protected] ~]# cd /tmp [[e

(转)redis 3.0的集群部署

一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/news/49 (ps:跳票了好久,今年貌似加快速度了),目前的最新版本是redis3 beta2(2.9.51). 作者的目标:Redis Cluster will support up to ~1000 nodes. 赞... 目前redis支持的cluster特性(已亲测): 1):节点自动发