找了02,03,04三台机器,04做主,02做从,03做客户端。

都使用jumbo install redis安装了Redis(server+client)。

在 02 从的 ~/.jumbo/etc/redis.conf 里

slaveof <masterip> 6379

在04 主的 ~/.jumbo/etc/redis.conf 里

appendonly yes

appendfsync everysec

主从都要改:

daemonize yes

logfile "/home/work/.jumbo/var/log/redis/redis.log"

然后先启动主,再启动从,都使用

redis-server (因为deamonize为true,所以不用&)

报如下错误:

7652:C 05 Oct 16:59:37.203 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

7652:M 05 Oct 16:59:37.207 # Creating Server TCP listening socket *:6379: unable to bind socket

然后发现居然是因为没有指定配置文件:

redis-server ~/.jumbo/etc/redis.conf

这样就可以了。

然后跑到03上,用客户端访问:

redis-cli  -h 10.117.146.16 -p 6379

发现:

Could not connect to Redis at 10.117.146.16:6379: Connection refused
Could not connect to Redis at 10.117.146.16:6379: Connection refused
not connected>

然后也发现从机一直报error log:

36855:S 05 Oct 17:10:57.379 * Connecting to MASTER 10.117.146.16:6379
36855:S 05 Oct 17:10:57.379 * MASTER <-> SLAVE sync started
36855:S 05 Oct 17:10:57.379 # Error condition on socket for SYNC: Connection refused

先把从Redis关了,用客户端:

$ redis-cli
127.0.0.1:6379> shutdown
not connected>
not connected> quit

然后再看Redis配置文件 vi ~/.jumbo/etc/redis.conf

有如下内容:

################################## NETWORK #####################################

# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1

所以,注释掉最后一行。重新启动。

然后又开始报这样的错:

12487:M 05 Oct 17:16:46.170 # Creating Server TCP listening socket *:6379: unable to bind socket

在redis.conf里面加上下面这行:

# bind 127.0.0.1
bind 0.0.0.0

重新启动:redis-server ~/.jumbo/etc/redis.conf

然后 ps xu | grep redis 可以看到:

work     23986  0.0  0.0 79428 2104 ?        Ssl  17:18   0:00 redis-server 0.0.0.0:6379

在03机器上可以访问:

redis-cli -h 10.117.x.x -p 6379
10.117.146.16:6379>

然后可以看到aof文件位置在:

$ ls -la ~/.jumbo/var/lib/redis/appendonly.aof
-rw-r--r-- 1 work work 0 Oct 5 17:06 /home/work/.jumbo/var/lib/redis/appendonly.aof

然后从Redis的日志有:

25089:S 05 Oct 17:22:59.018 * MASTER <-> SLAVE sync started
25089:S 05 Oct 17:22:59.018 * Non blocking connect for SYNC fired the event.
25089:S 05 Oct 17:22:59.019 * Master replied to PING, replication can continue...
25089:S 05 Oct 17:22:59.019 * Partial resynchronization not possible (no cached master)
25089:S 05 Oct 17:22:59.019 * Full resync from master: 64377169e1e5fc029ad8e584e24947a53d4f8fa0:1
25089:S 05 Oct 17:22:59.103 * MASTER <-> SLAVE sync: receiving 76 bytes from master
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Flushing old data
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Loading DB in memory
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Finished with success

主Redis的日志有:

23986:M 05 Oct 17:22:59.020 * Slave 10.117.x.x:6379 asks for synchronization
23986:M 05 Oct 17:22:59.020 * Full resync requested by slave 10.117.146.21:6379
23986:M 05 Oct 17:22:59.020 * Starting BGSAVE for SYNC with target: disk
23986:M 05 Oct 17:22:59.020 * Background saving started by pid 40323
40323:C 05 Oct 17:22:59.076 * DB saved on disk
40323:C 05 Oct 17:22:59.076 * RDB: 0 MB of memory used by copy-on-write
23986:M 05 Oct 17:22:59.104 * Background saving terminated with success
23986:M 05 Oct 17:22:59.104 * Synchronization with slave 10.117.x.x:6379 succeeded

以下是先用客户端访问主,再访问从的结果:

$ redis-cli -h 10.117.146.16 -p 6379
10.117.146.16:6379> zadd page_rank 10 google.com
(integer) 1
10.117.146.16:6379> zadd page_rank 9 baidu.com 8 bing.com
(integer) 2
10.117.146.16:6379> zrange page_rank 0 -1 withscores
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"
10.117.146.16:6379> zrange page_rank 0 -1
1) "bing.com"
2) "baidu.com"
3) "google.com"
10.117.146.16:6379> quit $ redis-cli -h 10.117.146.21 -p 6379
10.117.146.21:6379> zrange page_rank 0 -1 withscores
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"
10.117.146.21:6379> zrange page_rank 0 -1
1) "bing.com"
2) "baidu.com"
3) "google.com"
10.117.146.21:6379> quit

而此时查看主和从的日志,都没有明显的日志,因为日志开在了notice级别:

主:
40323:C 05 Oct 17:22:59.076 * RDB: 0 MB of memory used by copy-on-write
23986:M 05 Oct 17:22:59.104 * Background saving terminated with success
23986:M 05 Oct 17:22:59.104 * Synchronization with slave 10.117.146.21:6379 succeeded

从:
25089:S 05 Oct 17:22:59.019 * Partial resynchronization not possible (no cached master)
25089:S 05 Oct 17:22:59.019 * Full resync from master: 64377169e1e5fc029ad8e584e24947a53d4f8fa0:1
25089:S 05 Oct 17:22:59.103 * MASTER <-> SLAVE sync: receiving 76 bytes from master
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Flushing old data
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Loading DB in memory
25089:S 05 Oct 17:22:59.104 * MASTER <-> SLAVE sync: Finished with success

而aof文件,相比于刚才,已经有了增加:

$ ls -la ~/.jumbo/var/lib/redis/appendonly.aof
-rw-r--r-- 1 work work 149 Oct 5 17:28 /home/work/.jumbo/var/lib/redis/appendonly.aof 刚刚是:

$ ls -la ~/.jumbo/var/lib/redis/appendonly.aof
-rw-r--r-- 1 work work 0 Oct 5 17:06 /home/work/.jumbo/var/lib/redis/appendonly.aof

然后通过客户端分别关掉两个server:

$ redis-cli -h 10.117.146.21 -p 6379
10.117.146.21:6379> SHUTDOWN save
not connected> quit
$ redis-cli -h 10.117.146.16 -p 6379
10.117.146.16:6379> SHUTDOWN save
not connected>
not connected> quit

然后再次分别启动,来监测aof文件是否会自动加载。

用客户端连接,发现数据都还在,如下所示:

$ redis-cli -h 10.117.x.x -p 6379
10.117.x.x:6379> zrange page_rank 0 -1 withscores
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"
10.117.x.x:6379>

所以,aof文件是自动加载的。Redis的持久化是生效的。

再说一下Redis的密码验证:

现在安装的目录里配置文件位置:/home/work/.jumbo/etc/redis.conf

在master上:
# requirepass foobared
requirepass [用户名] 在slave上:
# masterauth <master-password>
masterauth [用户名]

然后重启。重启方法见前文。

之后访问的时候,会出现没有权限的情况,需要在命令前指定权限,或者在redis-cli参数里用 -a 加权限:

$ redis-cli -h 10.117.146.16 -p 6379
10.117.146.16:6379> keys *
(error) NOAUTH Authentication required.
10.117.146.16:6379> auth [用户名]
OK
10.117.146.16:6379> keys *
1) "age"
2) "testName"
3) "newset"
4) "k2"
5) "myhash"
6) "page_rank"
7) "myset"
8) "k1"
9) "myzset"
10) "myset2"
11) "k5"
12) "mylist"
13) "k3"
10.117.146.16:6379> quit $ redis-cli -h 10.117.146.16 -p 6379 -a [用户名]
10.117.146.16:6379> keys *
1) "age"
2) "testName"
3) "newset"
4) "k2"
5) "myhash"
6) "page_rank"
7) "myset"
8) "k1"
9) "myzset"
10) "myset2"
11) "k5"
12) "mylist"
13) "k3"
10.117.146.16:6379> quit $ redis-cli -h 10.117.146.16 -p 6379
10.117.146.16:6379> keys *
(error) NOAUTH Authentication required.
10.117.146.16:6379> auth abc
(error) ERR invalid password

Redis安装、主从配置及aof使用的更多相关文章

  1. docker+redis安装与配置,主从+哨兵模式

    docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...

  2. CentO7 安装 redis, 主从配置,Sentinel集群故障转移切换

        一.Redis的安装(前提是已经安装了EPEL)   安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: systemctl start re ...

  3. linux下安装redis及主从配置

    安装比较简单,确保linux安装有gcc # gcc -v 查看gcc版本,如果没有yum安装即可 安装开始 1.redis-3.2.8.tar.gz 上传至服务器 (百度网盘:http://pan. ...

  4. docker Redis的主从配置

    redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member:score的散列集合,其中member为成员 ...

  5. redis安装和配置(一)

    Redis 的官方下载站是http://redis.io/download 怎么安装 Redis 数据库呢?下面将介绍Linux 版本的安装方法 步骤一: 下载Redis 下载安装包:wget htt ...

  6. CentOS 下 redis 安装与配置

    CentOS 下 redis 安装与配置   1.到官网上找到合适版本下载解压安装 [root@java src]# wget -c http://redis.googlecode.com/files ...

  7. redis 安装及配置

    一.安装Redis 1.到官网下载redis最新版本,我下载的是 http://redis.io/ 2.拷贝redis-3.0.3到/usr/local目录 3.解压缩sudo tar -zxf re ...

  8. Redis入门 -- Redis安装与配置

    Redis入门 -- Redis安装与配置 Redis的安装 Redis的安装,我这里使用的是虚拟机. 为了让主机和虚拟机之间可以顺利通信,按照以下步骤进行: 1. 将网络连接模式改为桥接 2. re ...

  9. windows下redis安装和配置

    windows下redis安装和配置 redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数 ...

  10. Redis安装与配置Redis安装与配置

    今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识.所以又重温了一下Redis,觉得应该写一下Redis的安全和配置. Redis安装与配置Red ...

随机推荐

  1. 【51nod】1594 Gcd and Phi

    题解 跟随小迪学姐的步伐,学习一下数论 小迪学姐太巨了! 这道题的式子很好推嘛 \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} \sum_{d|\phi(i),\phi(j)} ...

  2. run-time setting 中设置simulate browser cache 选项详解

    Browser  Emulation: Simulate  browser  cache:配置Vuser模拟带缓存的浏览器.缺省缓存是被允许的, 可以通过禁止该选项来使得所有VUser模拟的浏览器都不 ...

  3. Linq简单使用

    简单使用 from子查询 关联多个数据源 分组 let 子句 查询对象(上例中为list变量)为IEnumerable<T>或IQueryable<T>类型 查询返回结果同样为 ...

  4. 基于原生JS的jsonp方法的实现

    基于原生JS的jsonp方法的实现 jsonp,相信大家并不陌生,是在js异步请求中解决跨域的方法之一,原理很简单,有不清楚的同学可以google下,这里就补详细解释了.在Jquery库中,jQuer ...

  5. 113. 路径总和 II

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 ...

  6. Screen 常用命令+VNC 启动停止命令总结

    screen -S 名称:创建一个新的会话 screen -r 会话ID:恢复一个Detach状态的会话 screen -xr 会话ID:强制恢复一个Attach状态的会话,常用于掉线时上次的会话没有 ...

  7. HDU 6030 Happy Necklace

    矩阵快速幂. 因为任意素数长度都要满足,所以$3$必须满足,$3$一旦满足,其余的肯定满足,也就是说只要考虑字符串末尾两位即可,$dp$一下就可以算方案数了.$n$较大,可以矩阵加速. #includ ...

  8. Django Rest Framework(版本、解析器、序列化、数据验证)

    一.版本 程序也来越大时,可能通过版本不同做不同的处理 没用rest_framework之前,我们可以通过以下这样的方式去获取. class UserView(APIView): def get(se ...

  9. xss可用事件

    onabort onafterprint onbeforeprint onbeforeunload onblur oncanplay oncanplaythrough onchange onclick ...

  10. 在树莓派3B上安装node.js

    本文主讲如何在树莓派3B上安装node.js 环境描述1. 树莓派安装了`2016-11-25-raspbian-jessie-lite`(PS:在此版本的镜像中,默认禁用了ssh,在烧录好镜像之后, ...