一:redis简介
redis是一种高效的key-valueDB,摒弃了关系型数据库的实体概念,对外提供统一的线程安全API提供调用,基本类型有String(字符串),list(链表,数据结构中前后指针指向),sets(集合,不可重复),sorted sets(有序集合)。这里我们搭建一个redis的本地主从服务器。
redis中文学习网:
http://www.redis.cn/
redis下载地址:
https://github.com/dmajkic/redis/downloads
二:环境搭建
下载下来,我的机器是32位,会有如下exe文件,新建redis.conf文件,目录结构如下:
redis-manage:
redis-slave:
这里多了个dump.rdb,因为我的已经安装运行了。这里是我运行后多的redis数据备份!!!
redis.conf配置:
#是否以后台守护进程运行,默认为no, 取值yes, no
daemonize no
#pid文件存放路径
pidfile /var/run/redis.pid
#配置redis端口,默认6379
port 6379
#绑定ip。默认绑定所有本机ip,一般用在服务器多ip下,可以只监听内网服务器ip,保证服务安全
bind 127.0.0.1
#sock文件
unixsocket /tmp/redis.sock
#客户端超时时间,单位秒
timeout 300
#log级别,支持四个级别,debug,notice,verbose,warning
loglevel verbose
#log文件路径
logfile
#log输出到标准设备,logs不写文件,输出到空设备,/deb/null
logfile stdout
#保存快照的频率,在多长时间内执行一定数量的写操作时,保存快照的频率,可以设置多个条件。如果都注释掉,则不做内存数据持久化。如果只是把redis只用作cache,不开启持久化功能
save <seconds> <changes>
save 900 1
#是否使用压缩
rdbcompression
#快照数据库名称
dbfilename
#数据库存放路径
dir
#redis主从 做法 在从上填上主的IP和端口号 主上不用做任何设置
slaveof <masterip> <masterport>
#主库服务器口令,如果主服务器未打开requirepass,则不需要此项
masterauth <master-password>
#在master服务器挂掉或者同步失败时,从服务器是否继续提供服务
slave-serve-stale-data yes
#设置redis服务密码,如果开启,则客户端连接时需要 -a 指定密码,否则操作会提示无权限
requirepass foobared
#命令改名,相当于linux alias,可以用改功能屏蔽一些危险命令
rename-command
#最大连接数;0 表示不限制
maxclients 128
#最大使用内存(分配的内存),推荐生产环境下做相应调整,我们用的是只用来做高速缓存,限制2G。默认情况下,redis会占用可用的所有内存
maxmemory <bytes>
#过期策略,提供六种策略
maxmemory-policy volatile-lru
volatile-lru //删除过期和lru 的key(默认值)
allkeys-lru //删除lru算法的key
volatile-random //随机删除即将过期key
allkeys->random //随机删除
volatile-ttl //删除即将过期的
noeviction //永不过期,返回错误
#是否开启appendonlylog,开启的话每次写操作会记一条log。相当于mysql的binlog;不同的是,每次redis启动都会读此文件构建完整数据。即使删除rdb文件,数据也是安全的
appendonly
#日志文件的名称,默认appendonly.aof
appendfilename appendonly.aof
#异步写append file 的策略。类似mysql事物log写方式。三种
appendfsync
appendfsync always //同步,每次写都要flush到磁盘,安全,速度慢。
appendfsync everysec //每秒写(默认值,推荐值)同mysql
appendfsync no //交给操作系统去做flush的动作
#虚拟内存开关
vm-enabled no
#swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录
vm-swap-file /tmp/redis.swap
#vm大小限制。0:不限制,建议60-80% 可用内存大小
vm-max-memory 0
#根据缓存内容大小调整,默认32字节
vm-page-size 32
#page数。每 8 page,会占用1字节内存。vm-page-size * vm-pages 等于 swap 文件大小
vm-pages 134217728
#vm 最大io线程数。注意: 0 标志禁止使用vm
vm-max-threads 4
这里我们需要在redis-slave,也就是从redis服务器的redis.conf上重点修改如下几行:
port 7379
同一台机子,端口不能和主服务器的端口冲突
slaveof 127.0.0.1 6379
以主服务器的6379作为数据复制来源
启动redis-manage:
请注意要使用你配置的redis.conf,不能直接点redis-server.exe,否则redis就按照默认的配置启动了。
启动redis-slave:
三:测试
打开redis-manage和redis-slave的
redis-cli.exe: