redis多实例介绍

接上一篇redis、创建数据存放的目录

vim redis.conf +187
dir /application/data/

重新启动

mkdir /application/data/
redis-cli shutdown
redis-server /application/redis/conf/redis.conf &
[root@redis01 conf]# redis-cli
127.0.0.1:6379> auth zsq
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set names sisi
OK
127.0.0.1:6379> get sisi
(nil)
127.0.0.1:6379> save
[34960] 03 Dec 20:29:54.318 * DB saved on disk
OK
127.0.0.1:6379> quit
[root@redis01 conf]# ll /application/data/
总用量 4
-rw-r--r-- 1 root root 32 12月 3 20:29 dump.rdb

Redis AUTH命令是用来向服务器验证给定的密码。 如果密码与在配置文件中的口令相匹配,则服务器会返回OK状态码,并开始接受命令。否则,将返回一个错误,并且客户需要尝试新的密码。

在配置文件中指定的密码

requirepass zsq

创建实例

[root@redis01 conf]# mkdir /data/6380/data -p
[root@redis01 conf]# mkdir /data/6381/data -p
[root@redis01 conf]# cp redis.conf /data/6380/
[root@redis01 conf]# cp redis.conf /data/6381/
[root@redis01 conf]# cd /data/6380
[root@redis01 6380]# ll
总用量 36
drwxr-xr-x 2 root root 4096 12月 3 20:35 data
-rw-r--r-- 1 root root 31236 12月 3 20:35 redis.conf

跟源文件对比,两个实例修改以下对应的几项

[root@redis01 6380]# diff redis.conf /application/redis/conf/redis.conf
41c41
< pidfile /data/6380/redis.pid
---
> pidfile /var/run/redis.pid
45c45
< port 6380
---
> port 6379
187c187
< dir /data/6380/data/
---
> dir /application/data/
449c449
< appendonly yes #开启这项是记录持久化日志
---
> appendonly no

开启6380

[root@redis01 6380]# redis-server /data/6380/redis.conf &
[root@redis01 6380]# lsof -i :6380
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 35011 root 4u IPv6 2604853 0t0 TCP *:6380 (LISTEN)
redis-ser 35011 root 5u IPv4 2604855 0t0 TCP *:6380 (LISTEN)

测试

[root@redis01 6380]# redis-cli -p 6380
127.0.0.1:6380> auth zsq
OK
127.0.0.1:6380> set name oldgirl
OK
127.0.0.1:6380> get name
"oldgirl"
127.0.0.1:6380> save
[35011] 03 Dec 20:51:25.324 * DB saved on disk
OK
127.0.0.1:6380> quit
[root@redis01 6380]# ll data/
总用量 8
-rw-r--r-- 1 root root 109 12月 3 20:51 appendonly.aof
-rw-r--r-- 1 root root 34 12月 3 20:51 dump.rdb #要save才有这个文件
appendonly.aof 文件记录的操作记录
[root@redis01 6380]# cat data/appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
Set

开启6381

redis-server /data/6381/redis.conf &
[root@redis01 6380]# lsof -i :6381
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 35034 root 4u IPv6 2609259 0t0 TCP *:6381 (LISTEN)
redis-ser 35034 root 5u IPv4 2609261 0t0 TCP *:6381 (LISTEN)

redis复制

复制

Redis复制很简单易用,它通过配置允许slave Redis Servers或者Master Servers的复制品。接下来有几个关于redis复制的非常重要特性:

一个Master可以有多个Slaves。

Slaves能接受其他slave的链接,除了可以接受同一个master下面slaves的链接以外,还可以接受同一个结构图中的其他slaves的链接。

redis复制是在master段是非阻塞的,这就意味着master在同一个或多个slave端执行同步的时候还可以接受查询。

复制在slave端也是非阻塞的,假设你在redis.conf中配置redis这个功能,当slave在执行的新的同步时,它仍可以用旧的数据信息来提供查询,否则,你可以配置当redis slaves去master失去联系是,slave会给客户端发送一个错误。

为了有多个slaves可以做只读查询,复制可以重复2次,甚至多次,具有可扩展性(例如:slaves对话与重复的排序操作,有多份数据冗余就相对简单了)。

通过复制可以避免master全量写硬盘的消耗:只要配置 master 的配置文件redis.conf来“避免保存”(注释掉所有”save”命令),然后连接一个用来持久化数据的slave即可。但是这样要确保masters 不会自动重启(更多内容请阅读下段)

redis复制是怎么进行工作

如果设置了一个slave,不管是在第一次链接还是重新链接master的时候,slave会发送一个同步命令 sync,然后master开始后台保存,收集所有对修改数据的命令。当后台保存完成,master会将这个数据文件传送到slave,然后保存在磁盘,加载到内存中;master接着发送收集到的所有的修改数据的命令,这好比一个流命令,是redis协议本身来实现的。

你可以自己通过远程登录来进行尝试,当服务器在做一些工作并发送同步命令的时候链接到redis端口,你将会看到大量的数据传输,然后收到的每个命令会显示在远程登录的会话中。

当master和slave因一些故障当机时,slaves会自动的重链,如果master收到多个slave的同步请求,master会执行一个后台保存,以确保所有的slaves都是正常的。

当master和slave能够维持链接,就会有一个完整的同步进行。

redis主从同步实战

开启两个实例,指定端口,有密码的指定密码

cd /data/6380

配置文件redis.conf搜索REPLICATION关键字

slaveof 192.168.179.161 6379
masterauth zsq

重新启动

redis-cli -p 6380 -a zsq shutdown

启动的时候会有同步信息输出,如master的IP,端口等信息

主库也有信息输出

从库对主库也有个ping的操作过程,每隔10秒发送一个PING,确认是否OK

monitor类似tcpdump,可以监控其操作

在主库操作

从库可以看到其输出信息

查看从库的数据同步情况

Slave的几个参数

Slave是不能写数据的

默认检测是10秒

如果连不上的时候,主库是通过backlog来实现slave库的增量同步,以下参数是其大小

Backlog的生成期,当主库和slave连接断开的时候,backlog在内存里多长时间释放

优先级,给不同的slave优先级,主库宕机把哪个slave提升为主

查看redis的状态信息

同步状态信息

CPU状态信息

info是查看全部的状态 ,内存,客户端连接等等

服务端master的信息,主从,cpu等

Redis持久化存储(二)的更多相关文章

  1. Part_three:Redis持久化存储

    redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RD ...

  2. Redis持久化存储(AOF与RDB两种模式)

    Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...

  3. Redis持久化存储与复制功能简述

    一.分布式系统基础理论 分布式系统的两个基础理论: 1.CAP理论 如图: Consistency(强一致性):数据一致更新,所有数据变动都是同步的.Availability(可用性):好的响应性能. ...

  4. Redis持久化存储详解(一)

    > 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存.我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的 ...

  5. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  6. Redis持久化存储(三)

    redis高级特性-发布订阅消息服务功能 Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消 ...

  7. Redis持久化存储——>RDB & AOF

    Redis中两种持久化存储机制RDB和AOF redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB ...

  8. Redis持久化存储与主从复制

    4. redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 4.1 ...

  9. Linux实战教学笔记46:NoSQL数据库之redis持久化存储 (二)

    第3章 Redis数据类型详解 3.1 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如"foo"的简单字符串到一个JPG ...

随机推荐

  1. Python中的编码及操作文件

    ------------恢复内容开始------------ 1,字符编码 ASCII  用1个字符来表示所有的英文字母和特殊符号 GB2313(GBK)用2个字符来表示英文字母及中文字符,且决定如果 ...

  2. Django之extra过滤

    extra extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 有些 ...

  3. java数据库 DBHelper

    package com.dangdang.msg.dbutil; import com.dangdang.msg.configure.*; import com.mysql.jdbc.Connecti ...

  4. Aircoinst 三层架构ASP.NET开源

    <注意! 本源码为我本人所写,可能有点烂.仅供学习使用,请勿进行商业用途~!> <本源码永久归于MineLSG 及 Aircoinst_慈 所拥有> 使用方法:直接拷贝 一.结 ...

  5. 从 Linux 操作系统谈谈 IO 模型(终)

    Linux 为什么要区分内核空间与用户空间? Linux 操作系统的 IO 模型有哪几种?有啥区别? 常说的阻塞现象,到底是咋回事? 网络编程研发时,那块到底耗时最多,代码是否还有优化空间? 前几期的 ...

  6. Mac下Web切图常用PS快捷命令

    Mac下 Z 放大镜 双击放大镜   图片会回到100%大小 C 切片工具 B 画笔    alt 在B模式下 吸取颜色 M   选区(默认) 点击第二次M   矩形选区 可以固定大小 shift+c ...

  7. 如何使你的PPT更高调

    PPT是什么? 俗话说的好,PPT就是"屁屁踢"/笑脸. PPT是微软office三件套之一,也就是演示文稿,用于演示(说了给没说一样). PPT的用途 视觉辅助 自动演示 阅读 ...

  8. python工业互联网监控项目实战2—OPC

    OPC(OLE for Process Control)定义:指为了给工业控制系统应用程序之间的通信建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范.它给工业控制领域提供了一种标准 ...

  9. leetcode【1403. 非递增顺序的最小子序列】(01)

    题目描述: 给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和. 如果存在多个解决方案,只需返回 长度最小 的子序列.如果仍然有多个解决方 ...

  10. 同步工具类—— CountDownLatch

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 CountDownLatch简介 CountDownLa ...