一.redis持久化RDB

1.在配置文件中添加参数,开启rdb功能

redis.conf 写入

port 6379
daemonize yes
logfile /data/6379/redis.log
dir /data/6379
dbfilename s15.rdb
save 900 1 #rdb机制 每900秒 有1个修>改记录
save 300 10 #每300秒 10个修改
记录
save 60 10000 #每60秒内 10000修>改记录

创建文件夹

mkdir -p /data/6379

2.开启redis服务端,测试rdb功能

redis-server redis.conf

二.redis持久化之aof

1.开启aof功能,在redis.conf中添加参数

port 6379
daemonize yes
logfile /data/6379/redis.log
dir /data/6379
#后面区分添加的两行代码
appendonly yes
appendfsync everysec

2.启动redis服务端,指定aof功能,测试持久化数据

三.redis不重启之rdb数据切换到aof数据

1.准备rdb的redis服务端 redis-server s15-redis.conf (注明这是在rdb持久化模式下)

2.切换rdb到aof

redis-cli 登录redis,然后通过命令,激活aof持久化

3.127.0.0.1:6379> CONFIG set appendonly yes   #用命令激活aof持久化(临时生效,注意写入到配置文件)

4.127.0.0.1:6379> CONFIG SET save "" #关闭rdb持久化

5.将aof操作,写入到配置文件,永久生效,下次重启后生效

 port 6379
daemonize yes
logfile /data/6379/redis.log
dir /data/6379
#dbfilename s15.rdb
#save 900 1
#save 300 10
#save 60 10000
appendonly yes
appendfsync everysec

6.测试aof数据持久化 ,杀掉redis,重新启动

kill 杀死进程

redis-server s15-redis.conf

7.写入数据,检查aof文件

四 redis的主从同步

1.检查redis数据库信息,主从状态的命令

redis-cli -p 6379 info 检查数据库信息

redis-cli -p 6379 info replication 检查数据库主从信息

1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制

redis-6379.conf

 port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379

redis-6380.conf

#通过命令快速生成配置文件

sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf

slaveof 127.0.0.1 6379 #指明主库的身份ip 和端口  #这步需要进入redis-cli -p -6380 后

同上创建redis-6381.conf

2.启动三个数据库实例,检测redis主从同步方案

3.redis主从赋值,故障手动切换,

3.1.杀死6379的主库实例  #这里发现从库无法创建redis

3.2.手动切换主从身份
    1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接
        slaoveof no one  
    2.登录redis-6381 ,通过命令,生成新的主任
        slaveof 127.0.0.1 6380

3.3.测试新的主从数据同步

五 redis哨兵

1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步

2.redis哨兵的安装配置

2.1 准备三个redis数据库实例(三个配置文件,通过端口区分)

[root@localhost redis-4.0.10]# redis-server redis-6379.conf

[root@localhost redis-4.0.10]# redis-server redis-6380.conf

[root@localhost redis-4.0.10]# redis-server redis-6381.conf

2.2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381)

redis-sentinel-26379.conf

 port 26379
dir /var/redis/data/
logfile "26379.log"
sentinel monitor s15master 127.0.0.1 6379 2
sentinel down-after-milliseconds s15master 30000
sentinel parallel-syncs s15master 1
sentinel failover-timeout s15master 180000
daemonize yes

redis-sentinel-26380.conf

快速生成文件

sed "s/26379/26380/g" redis-sentinel-26379.conf >  redis-sentinel-26380.conf

redis-sentinel-26381.conf

快速生成文件

sed "s/26379/26381/g" redis-sentinel-26379.conf >  redis-sentinel-26381.conf

3.添加后台运行参数,使得三个哨兵进程,后台运行

[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf

[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf

[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf

4.启动三个哨兵

redis-sentinel redis-sentinel-26379.conf
 redis-sentinel redis-sentinel-26380.conf
 redis-sentinel redis-sentinel-26381.conf

5.检查哨兵的通信状态

redis-cli -p 26379  info sentinel

查看结果如下之后,表示哨兵正常
    [root@localhost redis-4.0.10]# redis-cli -p 26379  info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3


6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态
kill 6379主节点
redis-cli -p 6380 info replication
redis-cli -p 6381 info replication
如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份)

7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份

六 redis-cluster安装配置

1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件

-rw-r--r-- 1 root root 151 Jan 2 19:26 redis-7000.conf

-rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7001.conf

-rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7002.conf

-rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7003.conf

-rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7004.conf

-rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7005.conf

redis.conf

 port 7000
daemonize yes
dir "/opt/redis/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes #开启集群模式
cluster-config-file nodes-7000.conf  #集群内部的配置文件
cluster-require-full-coverage no  #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no

2.启动6个redis数据库实例

[root@localhost s15rediscluster]# redis-server redis-7000.conf [root@localhost s15rediscluster]# redis-server redis-7001.conf [root@localhost s15rediscluster]# redis-server redis-7002.conf [root@localhost s15rediscluster]# redis-server redis-7003.conf [root@localhost s15rediscluster]# redis-server redis-7004.conf [root@localhost s15rediscluster]# redis-server redis-7005.conf

3.配置ruby语言环境,脚本一键启动redis-cluster

1.下载ruby语言的源码包,编译安装 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

2.解压缩 ./configure --prefix=/opt/ruby/ 释放makefile make && make install 编译且安装

3.下载安装ruby操作redis的模块包 wget http://rubygems.org/downloads/redis-3.3.0.gem

3.1 gem install redis    选yes

4.配置ruby的环境变量
echo $PATH

vim /etc/profile
写入最底行
PATH=$PATH:/opt/ruby/bin/
读取文件
source /etc/profile

5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令
一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配
/opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

6.检查节点主从状态
redis-cli -p 7000  info replication

7.向redis集群写入数据,查看数据流向
redis-cli  -c -p 7000    #这里会将key自动的重定向,放到某一个节点的slot槽位中
set  name  s15
set  addr shahe 

linux (07) redis详解的更多相关文章

  1. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...

  2. linux iostat命令详解 磁盘操作监控工具

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  3. Linux find命令详解

    转自Linux find命令详解 一.find 命令格式 1.find命令的一般形式为: find pathname -options [-print -exec -ok ...] 2.find命令的 ...

  4. Linux curl 命令详解

    命令概要 该命令设计用于在没有用户交互的情况下工作. curl 是一个工具,用于传输来自服务器或者到服务器的数据.「向服务器传输数据或者获取来自服务器的数据」 可支持的协议有(DICT.FILE.FT ...

  5. Redis详解(二)——AOF

    Redis详解(二)--AOF 前言 RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严格的需求 ...

  6. 基础拾遗------redis详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  7. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  8. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  9. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

随机推荐

  1. CF343D Water Tree 树链剖分

    问题描述 LG-CF343D 题解 树剖,线段树维护0-1序列 yzhang:用珂朵莉树维护多好 \(\mathrm{Code}\) #include<bits/stdc++.h> usi ...

  2. 【转】struts2的ActionInvocation分析(action调度者)

    一个ActionInvocation实例代表一个action的执行状态,持有拦截器和将要执行的action的实例. defaultActionInvocation是其默认实现.下面是定义在该类中的部分 ...

  3. 游戏设计艺术 第2版 (Jesse Schell 著)

    第1章 太初之时,有设计师 (已看) 第2章 设计师创造体验 第3章 体验发生于场景 第4章 体验从游戏中诞生 第5章 游戏由元素构成 第6章 元素支撑起主题 第7章 游戏始于一个创意 第8章 游戏通 ...

  4. Word论文

    粘贴图片不完整,只显示一行? 问题:行距被固定了 临时解决:设置多倍行距,推荐值1.5 1. 点一下图片,然后选择样式-正文 即可, 2. 或者为图片创建专用样式,需要时就点一下: 开始-样式(点样式 ...

  5. django 使用HttpResponse返回json数据为中文

    之前我用django一般用JsonResponse来返回json数据格式 但是发现返回中文的时候会乱码 from django.http import JsonResponse def test(re ...

  6. J2EE中的过滤器和拦截器

    过滤器和拦截器的相似之处就是拦截请求,做一些预处理或者后处理. 而过滤器和拦截器的区别在于过滤器是相对HTTP请求而言的,而拦截器是相对Action中的方法的. 过滤器:访问web服务器的时候,对一个 ...

  7. Office365激活方法(无需密钥)

    @echo off title Activate Office 365 ProPlus for FREE - MSGuides.com&cls&echo =============== ...

  8. .net core session部分浏览器或移动客户端不可用

    .net core session使用有很多文章,这里不再赘述. 问题现象为大部分浏览器或者移动客户端(例如微信.支付宝.钉钉)等都可以正常使用.但部分支付宝用户及钉钉用户确无法使用. 写入后读取不到 ...

  9. JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数

    引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判 ...

  10. jQuery 源码解析(七) jQuery对象和DOM对象的互相转换

    jQuery对象是一个类数组对象,它保存的是对应的DOM的引用,我们可以直接用[]获取某个索引内的DOM节点,也可以用get方法获取某个索引内的DOM节点,还可以用toArray()方法把jQuery ...