Redis在windows下的环境搭建
下载windows版本redis,,官方下载地址:http://redis.io/download,
不过官方没有Windows版本,官网只提供linux版本的下载,目前有个开源的托管在github上, 地址:https://github.com/MicrosoftArchive/redis/tags
上面提供了两种安装方式,一种是解压版,一种是安装版;
图简单省事可以选择安装版,选择解压版为了达到和安装板一样的效果,还得自己去加环境变量,去进行各种设置。
选择安装目录,打钩会帮你添加安装路径的环境变量
选择服务开启的端口号,打钩选择让防火墙放过对这个端口的限制;
指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
Redis存在vm机制,如果打开后,在上面的情况下会把Key存放内存,Value会存放在swap区。
以上是安装好以后的目录
文件名 |
简要 |
redis-benchmark.exe |
基准测试 redis-benchmark为redis性能测试工具 |
redis-check-aof.exe |
aof AppendOnly File的缩写,是Redis系统提供的一种记录Redis操作的持久化方案 |
redischeck-dump.exe |
dump redis的备份和还原,借助了第三方的工具,redis-dump |
redis-cli.exe |
客户端 |
redis-server.exe |
服务器 |
redis.windows.conf |
配置文件 |
在redis.windows.conf文件中设置redis密码,在这里:# requirepass foobared
比如设置密码 test
requirepass test
如果你需要其他机器连接这台机器的redis服务器的话,需要注释掉 #bind 127.0.0.1
双击redis-server.exe,弹出如下界面,可以启动redis。
但是关掉这个UI后,redis也会随之停止,可以采取以redis后台服务的这种方法运行:
选中redis服务,右键启动;
这里有个坑,如果你通过双击redis-server.exe方式访问,redis读取的是redis.windows.conf中的配置信息;
如果你以服务的方式启动,redis读取的是redis.windows-service.conf中的配置信息,你需要重新在redis.windows-service.conf中配置是否绑定ip,以及密码等,
否则就会出现127.0.0.1可以访问,但是通过本机ip却不能访问的现象;
安装redis数据库可视化工具,这里安装 RedisDesktopManager,软件地址:https://github.com/uglide/RedisDesktopManager/releases
下载下来以后,一路next安装,打开软件
测试一下:
双击redis-cli.exe打开redis客户端,存一个key 为name ,value为hello的值进redis,然后取一下,能获取到值,在图形化工具内部,打开连接的redis实例,也能看到刚才存放的值;说明环境搭建成功!
Redis的配置信息在redis.windows.conf文件中,可以根据自己的需要进行修改;
1. Redis默认不是以守护进程的方式运行,默认daemonize no,可以通过该配置项修改,使用yes启用守护进程,不过windows上不支持 daemonize no;
,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
port 6379
.绑定的主机地址
bind 127.0.0.1
绑定后只能该ip访问redis,不绑定可以注释掉;
,表示关闭该功能
timeout 0
5. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose,logfile为日志名字
loglevel verbose
logfile ""
,可以使用SELECT <dbid>命令在连接上指定数据库;
databases 16
7.指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合;
save <seconds> <changes>
Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
8. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
9. 指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
10. 指定本地数据库存放目录
dir ./
11. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
slaveof <masterip> <masterport>
12. 当master服务设置了密码保护时,slav服务连接master的密码
masterauth <master-password>
13. 设置同一时间最大客户端连接数,默认无限制
# maxclients 10000
14. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory <bytes>
15. 如果Redis是只用于内存缓存,不做任何持久化,这时背后AOF/RDB的fork()机制就没必要了;作为一个优化,所有的持久化操作可以在redis的windows版本上被关掉;选择 no 后,不持久数据,数据在服务终止后将消失,此模式下也将不存在"数据恢复"的手段
# persistence-available [(yes)|no]
16. Redis中采取了AOF/RDB两种手段来直接或者间接的持久化数据;
在数据恢复时,如果开启了AOF,那么服务器端将优先使用AOF文件恢复数据,否则才会使用snapshot的RDB文件来恢复数据。
1.AOF
AOF保存了历史所有的操作过程,我们可以简单的认为AOF就是日志文件,此文件只会记录"变更操作"(例如:set/del等),如果server中持续的大量变更操作,将会导致AOF文件非常的庞大,意味着server失效后,数据恢复的过程将会很长;事实上,一条数据经过多次变更,将会产生多条AOF记录,其实只要保存当前的状态,历史的操作记录是可以抛弃的;因为AOF持久化模式还伴生了"AOF rewrite"。
当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和mysql中bin.log、apache.log、zookeeper中txn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析,它和redis-protocol具有一样的格式约束:
##此选项为aof功能的开关,默认为"no",可以通过"yes"来开启aof功能
##只有在"yes"下,aof重写/文件同步等特性才会生效
appendonly no
##指定aof文件名称
appendfilename appendonly.aof
##指定aof操作中文件同步策略,有三个合法值:always everysec no,默认为everysec
always:每一条aof记录都立即同步到文件,这是最安全的方式,也以为更多的磁盘操作和阻塞延迟,是IO开支较大。
everysec:每秒同步一次,性能和安全都比较中庸的方式,也是redis推荐的方式。如果遇到物理服务器故障,有可能导致最近一秒内aof记录丢失(可能为部分丢失)。
no:redis并不直接调用文件同步,而是交给操作系统来处理,操作系统可以根据buffer填充情况/通道空闲时间等择机触发appendfsync everysec
##在aof-rewrite期间,appendfsync是否暂缓文件同步,"no"表示"不暂缓","yes"表示"暂缓",默认为"no"
no-appendfsync-on-rewrite no
##aof文件rewrite触发的最小文件尺寸(mb,gb),只有大于此aof文件大于此尺寸是才会触发rewrite,默认"64mb",建议"512mb"
auto-aof-rewrite-min-size 64mb
##相对于"上一次"rewrite,本次rewrite触发时aof文件应该增长的百分比。
##每一次rewrite之后,redis都会记录下此时"新aof"文件的大小(例如A),那么当aof文件增长到A*(1 + p)之后
##触发下一次rewrite,每一次aof记录的添加,都会检测当前aof文件的尺寸。
auto-aof-rewrite-percentage 100
2. snapshots(RDB);
快照,这种思想被广泛的应用在多个技术领域,主要目的就是对当前数据的状态进行保存到文件中。redis中snapshot最终将内存数据序列化到dump.rdb文件中。
小时备份一次数据,并把snapshot生成的rdb文件保存起来,我们可以根据rdb文件将数据恢复到任意时间点上。此外rdb文件也是作为master-slave中数据同步的一种手段,一个slave加入集群,那么master(也可以是其他"领导者",--slaveof指定)将会立即执行一次"例外"的snapshot,并把snapshot期间的新变更操作收集起来(buffer),snapshot结束后,将rdb文件直接转发给slave,同时把收集的新变更操作依次同步给slave。(SYNC指令)
AOF和snapshot各有优缺点,这是有它们各自的特点所决定:
1) AOF更加安全,可以将数据更加及时的同步到文件中,但是AOF需要较多的磁盘IO开支,AOF文件尺寸较大,文件内容恢复数度相对较慢。
2) snapshot,安全性较差,它是"正常时期"数据备份以及master-slave数据同步的最佳手段,文件尺寸较小,恢复数度较快。
可以通过配置文件来指定它们中的一种,或者同时使用它们(不建议同时使用),或者全部禁用,在架构良好的环境中,master通常使用AOF,slave使用snapshot,主要原因是master需要首先确保数据完整性,它作为数据备份的第一选择;slave提供只读服务(目前slave只能提供读取服务),它的主要目的就是快速响应客户端read请求;但是如果你的redis运行在网络稳定性差/物理环境糟糕情况下,建议你master和slave均采取AOF,这个在master和slave角色切换时,可以减少"人工数据备份"/"人工引导数据恢复"的时间成本;如果你的环境一切非常良好,且服务需要接收密集性的write操作,那么建议master采取snapshot,而slave采用AOF。
1) 如果master失效,那么slave可以人工的方式"提升"为master:
Java代码收藏代码
redis 127.0.0.1:6379> config set appendonly yes
OK
redis 127.0.0.1:6379> BGREWRITEAOF
Background append only file rewriting started
redis 127.0.0.1:6379> SLAVEOF no one
OK
当然可以通过slaveof指令为当前server指定master。提升master的过程,首先开启slave的AOF功能,然后立即执行bgrewriteaof,然后将此slave提升为master。
如果此slave与master之间数据存在很大差异,那么需要把master中的aof文件copy一份到slave中,并重启slave:首先开启slave的appendonly,不执行bgrewriteaof,然后提升master,停止slave,将master的aof文件copy到slave中,然后重启slave。
2) 如果slave失效,这个非常好办,直接重启就行,slave重启后,会首先向master发送"SYNC"指令,那么master将会立即生成一份snapshot文件,并传输给slave,slave根据此snapshot文件恢复内存数据。
3) 在redis中master和slave的角色切换非常简单,可以通过指令将slaveof提升为master,反之亦然;事实上slave也可以接受write操作,只不过这些write操作,在和master进行"SYNC"之后,将会消失;建议将slave作为read-only模式。
4) 在redis中AOF和snapshot可以同时使用,但是在数据恢复时AOF会被优先采用,因为AOF比snapshot中数据更加完整。
参考:http://www.runoob.com/redis/redis-conf.html
http://blog.csdn.net/javahongxi/article/details/54578542
http://blog.csdn.net/erlian1992/article/details/54382443
Redis在windows下的环境搭建的更多相关文章
-
Windows下的环境搭建Erlang
Windows下的环境搭建 Erlang 一.安装编译器 在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装. 二. ...
-
2017.7.18 windows下ELK环境搭建
参考来自:Windows环境下ELK平台的搭建 另一篇博文:2017.7.18 linux下ELK环境搭建 0 版本说明 因为ELK从5.0开始只支持jdk 1.8,但是项目中使用的是JDK 1.7, ...
-
Spark在Windows下的环境搭建(转)
原作者:xuweimdm 原文网址:http://blog.csdn.net/u011513853/article/details/52865076 由于Spark是用Scala来写的,所以Spa ...
-
Windows下Django环境搭建
总体示意图如下: Windows下搭建Django环境 1.安装Python版本 2.安装pip工具,一般Python安装都会自动会有这个,在你python安装命令下Scripts文件夹下 3.dj ...
-
Spark学习笔记--Spark在Windows下的环境搭建
本文主要是讲解Spark在Windows环境是如何搭建的 一.JDK的安装 1.1 下载JDK 首先需要安装JDK,并且将环境变量配置好,如果已经安装了的老司机可以忽略.JDK(全称是JavaTM P ...
-
二、Spark在Windows下的环境搭建
由于Spark是用Scala来写的,所以Spark对Scala肯定是原生态支持的,因此这里以Scala为主来介绍Spark环境的搭建,主要包括四个步骤,分别是:JDK的安装,Scala的安装,Spar ...
-
Spark学习笔记--Spark在Windows下的环境搭建(转)
本文主要是讲解Spark在Windows环境是如何搭建的 一.JDK的安装 1.1 下载JDK 首先需要安装JDK,并且将环境变量配置好,如果已经安装了的老司机可以忽略.JDK(全称是JavaTM P ...
-
windows下cocos2d-x环境搭建
该教程使用的cocos2dx的版本为3.14,3之后的大概都差不多 Python环境搭建: cocos2dx在windows上新建工程需要用到python脚本,安装python-2.7.x,可以上py ...
-
若依微服务版本 Windows下开发环境搭建
看了若依官网的教程,搭建环境还是踩了坑,简单整理一下 1.下载地址:https://gitee.com/y_project/RuoYi-Cloud 2.本地环境(仅供参考) JDK1.8 Mysql ...
随机推荐
-
在input中放对象
var input = $("<input type='hidden' class='hidden-user'/>"); $(input).data("ran ...
-
获取URL参数
function GetQueryString(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)( ...
-
java线程(3)-多线程死锁
产生死锁的条件: 1.有至少一个资源不能共享2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源3.资源不能任务抢占4.必须有循环等待 package com.thread; /* ...
- cpppp
-
【Python编程:从入门到实践】chapter2 变量和简单数据类型
2.1 运行2.2 变量 message = "hello" print(message) 2.2.1 变量的命名和使用 2.2.2 使用变量是避免命名错误2.3 字符串 “Hel ...
-
机房用ROS创建时间服务器
发现机房里的服务器时间老是不同步,虽然都设置为time-a.nist.gov和time-b.nist.gov,仍然有失败的概率.可能是因为国外服务器的缘故.所以打算在机房里创建一个时间服务器.正好RO ...
-
css 各种常见布局整理
在学习各种布局之前我们先来认识各个关键词,理解这些关键词,然后由点到面,这样就简单多了. display属性 页面中每个元素都有一个默认的display属性,它的值与该元素的类型有关,默认值通常是 b ...
-
最新JAVA编程题全集(50题及答案)
[程序1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 pu ...
-
OSPF理论介绍
OSPF协议Open Shortest Path First是链路状态协议.RIP和EIGRP是距离矢量协议只知道邻居,但链路状态可知道全网信息,因此天然免疫环路.距离矢量协议和链路状态协议最大的区别 ...
-
Hydra 8.4/8.5新增功能
Hydra 8.4/8.5新增功能 Kali Linux 2017.1自带的Hydra为8.3,现在Hydra升级到8.5,新增以下功能. (1)为输出文件选项-o,添加一个配套选项-b,允许 ...