正文
redis服务器选择 redis所需服务器配置
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
redis windows下怎么弄两个服务器
在windows系统下安装多个Redis实例。服务器装有一个Redis实例,随着项目的进行,需要安装多个实例才可以。直接安装是只会有6379端口,需要采用下面的方式来安装。本示例讲解的是:redis-2.4.6-setup-64-bit.exe 和redis-2.8.17 windows MSOpen。工具/原料
Redis安装文件
CMD命令提示符
方法/步骤
下载安装文件,选择稳定版本
点击安装exe文件,进行安装。选择好路径,一直到安装结束即可。
点击Service查看Redis服务是否正确的安装。Windows--》Service.msc。默认的端口为6379。服务已启动。
使用客户端工具进行连接,出现如下画面即成功。
使用CMD工具,安装另一个Redis实例服务,端口为6369. 需要提前建好6369端口使用的conf文件
如:C:\Users\GrayE:\redis-2.8.17\redis-server.exe --service-install E:\redis-2.8.17\redis6369.conf --service-name RedisServer6369 --port 6369
试验了几次都没有提示成功的信息,但是查看服务成功了,而且用客户端连接也成功了。
查看6369端口的redis服务
步骤阅读
7
使用客户端连接6369 redis服务,出现如下界面表示成功
调研Redis高可用两种方案
导读:Redis是被广泛使用的基础软件之一。对于工程师和,架构师,运维人员来说,了解Redis的高可用方案和背后的原理,是必备的基础知识。本文作者深入分析了Redis高可用的方方面面,并且做了有效总结,相信对广大读者可以起到很好的领路作用。
作者 codedump codedump.info 博主,多年从事互联网服务器后台开发工作。可访问作者博客阅读 codedump 更多文章。
Redis中为了实现高可用(High Availability,简称HA),采用了如下两个方式:
Redis中主从节点复制数据有全量复制和部分复制之分。
全量复制使用snyc命令来实现,其流程是:
旧版本全量复制功能,其最大的问题是从服务器断线重连时,即便在从服务器上已经有一部分数据了,也需要进行全量复制,这样做的效率很低,于是新版本的Redis在这部分做了改进。
新版本Redis使用psync命令来代替sync命令,该命令既可以实现完整全同步也可以实现部分同步。
执行复制的双方,主从服务器,分别会维护一个复制偏移量:
主服务器内部维护了一个固定长度的先进先出队列做为复制积压缓冲区,其默认大小为1MB。
在主服务器进行命令传播时,不仅会将写命令同步到从服务器,还会将写命令写入复制积压缓冲区。
每个Redis服务器,都有其运行ID,运行ID由服务器在启动时自动生成,主服务器会将自己的运行ID发送给从服务器,而从服务器会将主服务器的运行ID保存起来。
从服务器Redis断线重连之后进行同步时,就是根据运行ID来判断同步的进度:
有了前面的准备,下面开始分析psync命令的流程:
前面两种情况主服务器收到psync命令之后,会出现以下三种可能:
Redis使用哨兵机制来实现高可用(HA),其大概工作原理是:
以上将Redis节点分为两类:
以上是大体的流程,这个流程需要解决以下几个问题:
以下来逐个回答这些问题。
哨兵节点通过三个定时监控任务监控Redis数据节点的服务可用性。
每隔10秒,每个哨兵节点都会向主、从Redis数据节点发送info命令,获取新的拓扑结构信息。
Redis拓扑结构信息包括了:
这样,哨兵节点就能从info命令中自动获取到从节点信息,因此那些后续才加入的从节点信息不需要显式配置就能自动感知。
这一操作实际上完成了两件事情: * 发现新的哨兵节点:如果有新的哨兵节点加入,此时保存下来这个新哨兵节点的信息,后续与该哨兵节点建立连接。 * 交换主节点的状态信息,作为后续客观判断主节点下线的依据。
每隔1秒,每个哨兵节点向主、从数据节点以及其他sentinel节点发送ping命令做心跳探测,这个心跳探测是后续主观判断数据节点下线的依据。
上面三个监控任务中的第三个探测心跳任务,如果在配置的down-after-milliseconds之后没有收到有效回复,那么就认为该数据节点“主观下线(sdown)”。
为什么称为“主观下线”?因为在一个分布式系统中,有多个机器在一起联动工作,网络可能出现各种状况,仅凭一个节点的判断还不足以认为一个数据节点下线了,这就需要后面的“客观下线”。
当一个哨兵节点认为主节点主观下线时,该哨兵节点需要通过”sentinel is-master-down-by addr”命令向其他哨兵节点咨询该主节点是否下线了,如果有超过半数的哨兵节点都回答了下线,此时认为主节点“客观下线”。
当主节点客观下线时,需要选举出一个哨兵节点做为哨兵领导者,以完成后续选出新的主节点的工作。
这个选举的大体思路是:
可以看到,这个选举领导者的流程很像raft中选举leader的流程。
在剩下的Redis从节点中,按照以下顺序来选择新的主节点:
选择了新的主节点之后,还需要最后的流程让该节点成为新的主节点:
原文地址:
参考阅读:
GIAC全球互联网架构大会深圳站将于2019年6月举行,掌阅资深架构师,畅销图书《Redis 深度历险:核心原理与应用实践》作者钱文品将作为数据库专场的讲师出席2019年GIAC深圳站,并做关于Redis高性能,高可用方面的的演讲。本届GIAC数据库专场邀请阿里云前数据库总负责人余峰作为出品人,议题如下。
参加 GIAC,盘点2019年最新技术,目前 购买7.5折优惠 ,多人购买有更多优惠。识别二维码 了解大会更多详情。
如何在 CentOS 7 上安装 Redis 服务器
一、安装redis
a、在redis官网下载redis:
$ wget
$ tar xzf redis-3.2.6.tar.gz
$ cd redis-3.2.6
$ make
b、在redis安装目录下进入utils目录,执行自动安装脚本
cd utils/
./install_server.sh
一路回车都按照默认设置执行
//执行完脚本后,会出现以下提示:
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
c、添加redis开机自启动
//修改文件权限
chmod 755 /etc/init.d/redis_6379
//添加自启动
chkconfig --add redis_6379
chkconfig --level 345 redis_6379 on
d、检查远程服务器的6379端口是否被防火墙拦截。假如未开启,则添加
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/init.d/iptables restart(视服务器情况而定,如果不知道的话可以选择重启服务器)
也可以在wdcp的后台系统管理--iptables添加规则
使用安骑士等防火墙软件的自行添加6379端口访问通过的规则
e、通过客户端命令行连接redis
//在本地连接
redis-cli -h 127.0.0.1 -p 6379
二、添加phpredis扩展
获取并解压安装包
cd
wget
unzip develop.zip
注意:若提示未找到“unzip”命令
解决办法:运行 yum install unzip -y
//进入目录
cd phpredis-develop
使用phpize命令添加扩展,phpize命令所在路径根据实际情况修改
/www/wdlinux/nginx_php/bin/phpize
注意:可能会有“Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.”错误
解决办法:运行 yum install -y autoconf
再重新运行前面的phpize命令
出现类似下图的提示,则代表成功
//配置。php-config命令所在路径根据实际情况修改
./configure --with-php-config=/www/application/nginx_php-5.4.26/bin/php-config
出现类似下面的内容,说明此步骤没问题
安装
make
出现类似下图,说明此步骤成功:
make install
出现类似下面的内容,说明成功:
代表生成redis.so成功,可以进到该目录去查看是否有生成。该路径也是视实际情况而定。
//php.ini中加入redis.so扩展
//加入这一行,保存退出。路径要使用上面装完redis生成redis.so的路径
extension=/www/wdlinux/nginx_php /lib/php/extensions/no-debug-non-zts-20121212/redis.so
重启web服务(重点是重启php)
通过phpinfo查看是否添加了redis扩展
两台服务器,一个放程序的,一个放数据库换季,redis装在哪个服务器上好
应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中
主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新
失败,则需要及时清除缓存及同步redis主键。Stringtbname="login";//获取mysql表主键值--redis启动时
longid=MySQL.getID(tbname);//设置redis主键值--redis启动时
redisService.set(tbname,String.valueOf(id));System.out.println(id);longl=redisService.incr(tbname);
System.out.println(l);Loginlogin=newLogin();login.setId(l);
login.setName("redis");redisService.hmset(String.valueOf(login.getId()),login);booleanb=MySQL.insert("insertintologin(id,name)values("+login.getId()+",'"+login.getName()+"')");
/****队列处理器更新mysql失败:**清除缓存数据,同时主键值自减*/if(!b)
{redisService.delKeyAndDecr(tbname,"Login:"+String.valueOf(login.getId()));}System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));System.out.println(redisService.get(tbname))
关于redis服务器选择和redis所需服务器配置的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。