Redis3.x集群部署

1.实现目标

目标清单:

1)192.168.31.220、192.168.31.221和192.168.31.222为三台redis服务器的地址。初始状态下,所有服务器上6379端口的redis节点都为master,而6380端口的节点都为本机master的slave;

2)当某个master节点处于不可用时,则要求集群监控到后将某个slave(不一定是当前master主机上的slave)切换为新的master;

3)如果半数(及以上)节点挂掉,则整个集群进入fail状态。

2.实现过程

2.1安装Redis3.x

     此步骤省略,可参考http://code727.iteye.com/blog/2251399

2.2安装cluster依赖工具

     只需在任意一台主机上(如220)进行如下操作:

yum install ruby
yum install rubygems
gem install redis
2.3 cluster配置
# 为Master和Slave节点拷贝两个配置文件到/etc/redis目录
cp /usr/local/redis/redis.conf /etc/redis/redis-6379.conf
cp /usr/local/redis/redis.conf /etc/redis/redis-6380.conf
 2.3.1修改master节点配置
vi /ect/redis/redis-6379.conf
    主要配置项如下:
# master节点服务端口
port 6379
# 开启集群
cluster-enabled yes
# master节点的配置文件
cluster-config-file nodes-6379.conf
# 集群节点互联超时时间(10秒)
cluster-node-timeout 10000
2.3.2修改slave节点配置
vi /ect/redis/redis-6380.conf
# slave节点服务端口
port 6380
# 开启集群
cluster-enabled yes
# slave节点的配置文件,名称与master的不一样
cluster-config-file nodes-6380.conf
# 集群节点互联超时时间(10秒)
cluster-node-timeout 10000
   完成后,将redis-6379.conf和redis-6380.conf两个配置拷贝到所有主机的/etc/redis/目录下

2.3.2启动redis服务

   在所有主机上进行如下操作:

# 进入redis-server目录
cd /usr/local/redis/src
# 启动master节点服务
./redis-server /etc/redis/redis-6379.conf
# 启动slave节点服务
./redis-server /etc/redis/redis-6380.conf
2.3.3创建集群环境

    在2.2节中安装了cluster依赖工具的主机上进行如下操作:

cd /usr/local/redis/src
./redis-trib.rb create --replicas 1 192.168.31.220:6379 192.168.31.221:6379 192.168.31.222:6379 192.168.31.220:6380 192.168.31.221:6380 192.168.31.222:6380
    创建集群环境的命令格式为./redis-trib.rb create --replicas <slaveCount> masterNode1,masterNode2,masterNodeN,slaveNode1,slaveNode2,slaveNodeN
    Node的格式为"IP:port",slaveCount表示每个masterNode对应的slaveNode个数,在集群环境中可以没有slave(在命令中省略掉slaveNode部分即可)。但如果有slave,则命令中,前n中个节点都为master,后n个节点都为slave,第n个master节点对应的slave应该是第n个。在上面的创建命令中,各节点的顺序正好满足目标清单中的第1)条需求。

    从上图可看出,六个节点都处于"OK"状态,并且前三个6379端口的都为master,而都三个6380端口的都为slave。此时出现提示,键入yes后,各节点将会进行互联操作

     从上图可看出16384个哈希槽已均匀分配给了三个master节点,分别为:
     192.168.31.220:6379(10923-16384)
     192.168.31.221:6379(5461-10922)
     192.168.31.222:6379(0-5460)
2.4定义服务
    在所有的主机上进行如下操作:
2.4.1定义redis-6379服务
vi /etc/init.d/redis-6379 
    输入如下内容:
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
 
REDISPORT=6379
EXEC=/usr/local/redis/src/redis-server
REDIS_CLI=/usr/local/redis/src/redis-cli 

CONF="/etc/redis/redis-6379.conf" 
 
case "$1" in
        start)
                echo "Starting Redis-6379 server..."
                $EXEC $CONF
		sleep 1
	        echo "Redis-6379 is running..."  
                ;;
        stop)
                echo "Stopping..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN      
                sleep 1
                echo "Redis-6379 stopped"              
                ;;
        restart|force-reload)
                ${0} stop
                ${0} start
                ;;
        *)
                echo "Usage: /etc/init.d/redis-6379 {start|stop|restart|force-reload}" >&2
                exit 1
esac
chmod -R 755 /etc/rc.d/init.d/redis-6379
2.4.1定义redis-6380服务
vi /etc/init.d/redis-6380
 输入如下内容:
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
 
REDISPORT=6380
EXEC=/usr/local/redis/src/redis-server
REDIS_CLI=/usr/local/redis/src/redis-cli 

CONF="/etc/redis/redis-6380.conf" 
 
case "$1" in
        start)
                echo "Starting Redis-6380 server..."
                $EXEC $CONF
		sleep 1
		echo "Redis-6380 is running..."  
                ;;
        stop)
                echo "Stopping..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN      
                sleep 1
                echo "Redis-6380 stopped"              
                ;;
        restart|force-reload)
                ${0} stop
                ${0} start
                ;;
        *)
                echo "Usage: /etc/init.d/redis-6380 {start|stop|restart|force-reload}" >&2
                exit 1
esac
chmod -R 755 /etc/rc.d/init.d/redis-6380
2.5设置开机启动
    在所有的主机上进行如下操作:
vi /etc/rc.d/rc.local
    加入如下内容:
service redis-6379 start
service redis-6380 start
3.测试
3.1redis-cli连接
# 常规的连接命令  
./redis-cli -h 192.168.31.220 -p 6379  
# redis set命令  
set name daniele  
    执行set命令后,将会返回MOVED错误,如下图:

    这是因为键(name)应该映射到0-5460范围内,因此不能在220(10923-16384范围)上进行操作,将-h的后ip修改为222重新连接后再进行set操作将会成功处理。
3.2改良后的redis-cli连接
    在redis-cli后加一个-c参数可以避免MOVED错误的发生,如下:
# 具备重定向功能的连接
./redis-cli -c -h 192.168.31.220 -p 6379  
# redis set命令  
set name daniele  
    执行set命令后,将会自动重定向,并返回正确的结果:

3.3宕机测试
1)kill掉222的master节点,再进行3.2节的操作,此时将不会再重定向到已不可用的222的master节点上

    此时重定向到了221的master节点上。这是因为同样的一个键,此时的slot值为5789而不是先前的4808,因此它将存储到221的master节点范围5461-10922内,可以通过如下命令查看到各节点状态
# 查看220上node-6379.conf文件内容
./redis-cli -h 192.168.31.220 -p 6379 cluster nodes
或
# 查看220上node-6380.conf文件内容
./redis-cli -h 192.168.31.220 -p 6380 cluster nodes

    上图展示的结果正好是220上node-6379.conf文件内容
    有时在执行操作时会遇到“ (error) CLUSTERDOWN The cluster is down”错误,见下图:

     在这种情况下,221是可连接的(否则上图中最后一行的转向地址信息不可能会出现),需要对221:6379节点进行修复:
# 格式为./redis-trib.rb fix 被损节点ip:port
./redis-trib.rb fix 192.168.31.221:6379
2)kill掉半数(当前架构为3个)节点,再进行3.2节的操作,将同样会出现“ (error) CLUSTERDOWN The cluster is down”错误:

见上图,最后一行的地址信息表明没有发生转向,说明整个集群环境down掉了。
3)重启被kill掉的节点,再进行3.2节的操作,此时又恢复了正常。
4.Jedis对Redis Cluster的支持
    ShardedJedis是Jedis2.2+提供的基于一致性哈希算法实现的分布式Redis集群客户端,详情可参考 http://www.cnblogs.com/liuling/p/2014-4-21-01.html和 http://blog.youkuaiyun.com/xiaolang85/article/details/12655519
5.总结
       在整个集群环境中,如果有半数的节点处于不可用状态时, 会使整个 集群系统都变为不可用,这是一个相当严重的问题。在上面章节的实施过程,都是人工值守的。对于可靠性高的系统来说,必须要加入自动检测恢复机制来实现,可以为每个节点加入keepalived来满足要求,当检测到某个redis节点不可用时,让它自动调用redis的重启脚本。    
     Redis Cluster目前不支持跨库操作,即在任意一个节点进行select操作是不允许的。个人认为,对于那种需要将数据按库进行分类的系统来说,还是采用Sentinel架构比较好,可参考 http://code727.iteye.com/blog/2251399
从零开始跑通3DGS教程:(四)修改(缩放、空间变换)colmap生成的sfm结果 通过colmap进行的sfm的普通方式会丢失场景的物理尺度信息,并且并不在符合一般认知的坐标系下,本文将读取colmap生成的点云和相机pose,将其进行空间变换和缩放之后,重新保存,新保存的结果仍然可以被colmap读取以及进行后续的稠密重建以及3dgs等工作 阅读详情

相关推荐

STM32 DMA串口重定向printf:高效调试与性能优化实战

本文详细介绍了STM32 DMA串口重定向printf的实现方法与性能优势。通过对比传统方式的CPU高占用问题,阐述了DMA技术如何实现高效数据传输,大幅降低CPU负载。文章包含完整的代码实现、缓冲区管理技巧及实战调试方案,帮助开发者优化嵌入式系统调试效率。

lake5的博客 99

windows 远程桌面连接centos服务器_Docker部署(Windows运行Coolpy7开源单机千万级连接MQTT服务器)...

Coolpy7内核由于使用Epoll技术,所以系统默认支持Linux或MacOS等基于unix内核的操作系统,因此如需要在windows系统中运行Coolpy7需要通过Docker技术进行虚拟化环境部署。因此本手册只说明如何在windows10中通过docker容器技术部署运行Coolpy7,理论上所有Windows系统只要能正常安装docker都可正常使用本说明安装docker到win10htt...

weixin_39552472的博客 253

使用网分对晶体ESR/L1/C1/C0进行测量计算

Use R&amp;S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M...

qq_39138630的博客 2085

Redis3.x集群搭建与使用

一、Redis主从复制        一个Redis服务器可以有多个备份服务器。Resdis主服务器叫做Master,备份服务器叫Slaves;只要网络连接正常,Mster会一直将自己的数据同步给Slaves;Master可以执行写命令,Slaves只能执行读命令; 二、Redis集群搭建 在进行完Redis3.0版简洁安装步骤后,即可搭建集群。 注:此步骤为一台linux系统搭建6台Re...

林海静的博客 420

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1783

Allegro174版本如何关闭模块复用后铜皮自动从动态变成静态操作指导

在用Allegro进行PCB设计的时候,模块复用是使用的十分频繁的操作,当Allegro升级到了174 S034版本的时候,当使用模块复用的功能的时候,模块内的铜皮会自动动静转换,大部分情况是不需要的。版本如何关闭模块复用后铜皮自动从动态变成静态操作指导。如何关闭这个功能,具体操作如下。

weixin_54787054的博客 1260

redis3.x集群的搭建

Redis3.x版本中加入了对集群的支持,其中包括sharding分片,支持master slave,支持atuo failover 自动故障切换。最主要的区别于早期3.x版本之前的是内部支持了atuo failover,当主机宕机后,备机会自动顶上变成主机。HashSolt(哈希槽)其中引入了HashSolt(哈希槽)的概念,即在集群搭建中,redis集群内部会自动地给集群中的各个redis节点...

胡啊呦的博客 745

Burpsuite系列安全渗透--自动扫描生成h5报告

第一章简述 Burpsuite是基于Java的用于web安全的工具,能够进行爬虫、代理、编码、密码爆破等任务,并支持对XSS漏洞、文件包含等漏洞的主动扫描或被动扫描。burpsuite2.0具体分为以下11个模块: Dashboard(仪表盘)——显示任务、实践日志等。 Target(目标)——显示目标目录结构的的一个功能。 Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。 Intruder(...

魔都虫师的博客 2890

rancher Server v2.3.3配置安装一个k8s集群(centos7)

准备4台主机 主机IP 主机名 192.168.31.155 rancher-server 192.168.31.220 rancher-agent01 192.168.31.202 rancher-agent02 192.168.31.222 rancher-agent03 每台主机都安装docker docker安装详见:https...

huenbin的博客 820

[系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析

如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢!同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安

杨秀璋的专栏 7327

从一只龙虾到一支团队:OpenClaw 单 Bot 多 Agent 配置实践

单 Bot 多 Agent只有一个对外的聊天入口(飞书 Bot)内部有多个独立的 AI Agent,各司其职主 Agent(总指挥)负责接收任务并分配给子 Agent子 Agent 完成任务后将结果返回给主 Agent角色Agent ID职责使用场景🎯 总指挥main-agent统筹协调,任务分发接收所有用户请求✍️ 笔杆子内容创作公众号、博客、小红书🔬 参谋canmou深度研究竞品分析、市场调研📋 运营官operations运营管理邮件、日历、社交媒体。

Maynor的博客 1081

Redis集群搭建

文章目录一、Redis集群概述二、快速搭建集群三、自定义搭建集群四、集群散列标签五、打开关闭从节点的读命令权限六、使用redis-cli管理集群 一、Redis集群概述 集群即由多个服务器组成的一群服务器,在Redis集群中,各个Redis服务器被称为节点,其中主节点负责处理客户端发送的读写命令请求,而从节点负责对主节点进行数据复制。 除了主从复制功能之外,Redis集群中的各个节点会互相监视各自的运行状况,并在某个主节点下线时,通过提升该节点的从节点为新的主节点来继续提供服务。 Redis集群将整个数据

qq_38515961的博客 2281

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 364

java redis3集群,Redis3.x cluster集群部署教程

Redis集群部署文档(CentOS7)要让集群正常工作至少要3个主节点,这里需要创建6个节点,三个节点,三个从节点。(因为硬件资源有限,所以在一台机器上使用不同的端口,来模拟集群模式。)192.168.31.99:7000192.168.31.99:7001192.168.31.99:7002192.168.31.99:7003192.168.31.99:7004192.168.31.99:70...

weixin_39632467的博客 194

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

redis3.X部署和集群搭建

redis安装 安装依赖环境 yum install gcc yum install test 编译redis源码 官网下载最新稳定包 tar xzf redis-3.2.0.tar.gz cd redis-3.2.0 make MALLOC=libc 完成后测试 make test 此结果表示安装成功

z634075513的专栏 1775

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署

文章目录Redis 下载地址Redis 编译安装Redis 启停 Redis 下载地址 下载地址: http://redis.io/download 历史版本: http://download.redis.io/releases/ 之前装过4.0.11 ----> Redis-02Redis在linux下的安装及常见问题 Redis 编译安装 第一步 : 安装gcc # 安装gcc...

小工匠 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Redis3.x cluster集群部署教程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34217773的博客 122

Redis-3.x集群配置(RedisCluster+SpringBoot+Jedis)

Redis-3.x集群配置(RedisCluster+SpringBoot+Jedis)部署计划部署6个redis节点,为3主3从。端口IP地址6379192.168.101.1216379192.168.101.1996379192.168.101.1236379192.168.101.1276379192.168.101.1256379192.168.101.126编译安装    (所有关于权...

梦想起飞的地方......... 494

redis3.x cluster设计

《redis3.x cluster》 前言 redis集群后,我们就需要一种数据路由算法将不同key分散存储到不同的redis节点内,通常的做法是获取某个key的hashcode,然后mod,不过这种做法无法很好的支持动态伸缩性需求,一旦节点的增或者删操作,都会导致key无法在redis中命中,所以在redis3.x之前,基本上都是采用编写一致性hash算法实现redis的集群,但是r

bingcool 529

CODIS3.x集群 之 存储集群搭建全过程

作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2017.06.07 转载请注明来自”祁峰”的优快云博客 Codis3.x有如下特点: 1.最新 release 版本为 codis-3.2,codis-server 基于 redis-3.2.8 2.支持 slot 同步

做事先做人! 1万+

wsl中安装redis集群

在 WSL 的 Debian 系统中安装 Redis 8.x 集群需要从源码编译。首先安装编译工具,下载 Redis 8.x 源码并编译安装。通过脚本自动生成 6 个节点配置(7001-7006端口),启动后使用 redis-cli 创建 3主3从集群。WSL2 环境下可通过 127.0.0.1 直接访问集群,但需注意客户端需支持集群模式,且 WSL 关闭后需重新启动节点。该方案适用于开发测试环境快速搭建 Redis 集群。

JumpForce的博客 355

Linux部署Redis集群

Redis (REmote DIctionary Server) 是一个高性能的 key-value 数据库,完全开源,遵守 BSD 协议。Redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启时可以再次加载进行使用。Redis不仅仅支持简单的key-value类型数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。

linjin1234560的专栏 658

Redis集群环境搭建

redis-trib.rb与redis-cli redis-trib.rb和redis-cli部署redis主从集群的异同 redis-trib.rb是在redis3.x版本时所用的一种部署redis集群的工具,redis-cli是redis4.x及更高版本所支持创建集群的工具,在redis3.x版本时redis-cli只是一个客户端连接管理工具。 redis-cli比redis-trib.rb多了一个可以认证集群密码的功能,后者创建的集群不能对有密码的集群节点进行很好的管理,所以后来官方直接废弃了这个工

qq_44309067的博客 177

redis常用部署架构之redis分片集群。

redis 3.x版本后开始支持作用:1.提升数据读写速度2..提升可用性分片集群就是将业务服务器产生的数据储存在不同的机器上。

ZHX2285的博客 620
上一篇: Redis3.x安装配置,Sentinel部署
下一篇: Zookeeper集群配置
心如止水dy
博客等级 码龄19年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值