Redis知识补充

在上一篇博客《Redis基础认识及常用命令使用(一)--技术流ken》中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持久化和备份。

一. 启用redis的认证功能

第一步:登录redis并创建几个字符串,并退出

[root@ken ~]# redis-cli
127.0.0.1:> set name zhangsan
OK
127.0.0.1:> set addr jiangsu
OK
127.0.0.1:> set tel
OK
127.0.0.1:> MGET name addr tel
) "zhangsan"
) "jiangsu"
) ""

127.0.0.1:6379> exit

第二步:修改redis配置文件

大约在80行处启动protect-mode,并添加一行requirepass及密码

[root@ken ~]# vim /etc/redis.conf
...
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode yes
requirepass # Accept connections on the specified port, default is (IANA #).
# If port is specified Redis will not listen on a TCP socket.
...

第三步:重启redis

[root@ken ~]# systemctl restart redis

第四步:登录redis

可以发现登录时可以正常登录,但是已经无法查看里面的key了

[root@ken ~]# redis-cli
127.0.0.1:> get name
(error) NOAUTH Authentication required.

第五步:验证登录

使用auth加上配置文件中定义的密码即可进行验证,再次获取key就会成功了

127.0.0.1:> auth
OK
127.0.0.1:> get name
"zhangsan"

二.Redis的消息模式

订阅的基本格式:

SUBSCRIBE channel [channel ...]    #订阅给定的一个或多个频道的信息

发送消息基本格式:

PUBLISH channel message    #将信息 message 发送到指定的频道 channel

第一步:xshell开启两个窗口,并登陆redis

第二步:订阅频道

在一个窗口中执行如下命令,开启订阅

127.0.0.1:> SUBSCRIBE ken
Reading messages... (press Ctrl-C to quit)
) "subscribe"
) "ken"
) (integer)

第三步:频道发布内容

在另外一个窗口中在此频道发布内容

127.0.0.1:> PUBLISH ken "my name is ken"
(integer)
127.0.0.1:> PUBLISH ken "welcome to my homepage"
(integer)

第四步:在另外一个窗口进行查看

在订阅窗口查看。可以发现已经接收到订阅频道的信息了

127.0.0.1:> SUBSCRIBE ken
Reading messages... (press Ctrl-C to quit)
) "subscribe"
) "ken"
) (integer)
) "message"
) "ken"
) "my name is ken"
) "message"
) "ken"
) "welcome to my homepage"

三.Redis事务

redis和mysql一样也支持事务

MULTI

标记一个事务块的开始。

事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行

EXEC

执行所有事务块内的命令

第一步:启动事务

127.0.0.1:> MULTI
OK

第二步:输入命令、指令

127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED

127.0.0.1:6379> get tel
  QUEUED

第三步:执行

127.0.0.1:> EXEC
) (integer)
) (integer)
) (integer)
) (integer)
) ""

完整演示如下

127.0.0.1:> MULTI
OK
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> INCR tel
QUEUED
127.0.0.1:> get tel
QUEUED
127.0.0.1:> EXEC
) (integer)
) (integer)
) (integer)
) (integer)
) ""

Redis持久化

RDB持久化

一.redis持久化会在磁盘上依赖两个文件

数据文件:rdb

日志文件:aof

二.redis实现持久化两种机制

RDB:周期的将内存中的数据备份到磁盘

AOF:借助于一个日志文件,这个文件会记录每次操作

RDB:基于快照的方式实现的,数据文件dump.rdb

三.实现RDB持久化的方式有两种

1. save,bgsave

save,同步的方式,持久化操作完成前,系统会被阻塞

bgsave,异步方式

2. 依赖提前做好的计划任务来实现

异步:子进程来完成持久化操作,持久化会将快照中的内容写入到一个临时文件中,当持久化完成了,那么就将这个临时文件改名成dump.rdb

四./etc/redis.conf配置文件中关于rdb持久化参数介绍

save  1                 #900秒和至少1个键改变才会被保存
save 10 #300秒和至少10个键改变才会被保存
save 10000 #60秒和至少10000个键改变才会被保存
stop-writes-on-bgsave-error yes #错误发生时停止写入
rdbcompression yes #启用压缩
rdbchecksum yes #检验
dbfilename dump.rdb #rdb文件名
dir /var/lib/redis #rdb文件保存路径

AOF持久化

AOF:比rdb方式更可靠

如果想要启动aof持久化,只要启动appendonly yes即可

appendonly yes                             #是否启用aof持久化
auto-aof-rewrite-percentage #当aof文件的大小增张了指定比例的时候,执行一次重写操作
auto-aof-rewrite-min-size 64mb #指定aof文件做重写最小值
appendfilename "appendonly.aof" #aof持久化信息保存在哪个文件中(相当于mysql的二进制日志文件)
# appendfsync always #一旦执行了操作,会立刻将操作的语句记录到aof文件中
appendfsync everysec #每秒向aof文件进行一次写入操作
# appendfsync no #不主动向aof执行写入操作,由系统自行判断何时向磁盘执行写入操作
no-appendfsync-on-rewrite no
aof-load-truncated yes

Redis备份

备份持久化所生成的数据(rdb文件)

注意:生产环境中备份rdb文件需要关闭持久化

第一步:查看rdb文件是否存在

[root@ken ~]# ls /var/lib/redis/dump.rdb

第二步:查看redis中的key

[root@ken ~]# redis-cli
127.0.0.1:> keys *
) "name"
) "tel"
) "addr"

第三步:关闭rdb持久化

配置文件200行处,save后面为空,并注释掉202 203 204

 #   like in the following example:
#
save "" #save
#save
#save

第四步:重启redis

[root@ken ~]# systemctl restart redis

第五步:移动rdb文件至home下

[root@ken ~]# mv /var/lib/redis/dump.rdb /home
[root@ken ~]# ls /var/lib/redis/

第六步:重启redis

[root@ken ~]# systemctl restart redis

第七步:再次登录redis查看key

发现已经为空

[root@ken ~]# redis-cli
127.0.0.1:> keys *
(empty list or set)

第八步:复制home下的rdb文件至/var/lib/redis下

[root@ken ~]# cp /home/dump.rdb /var/lib/redis/

第九步:重启redis加载rdb文件

[root@ken ~]# systemctl restart redis

第十步:再次查看keys

发现所有的keys又回来了

[root@ken ~]# redis-cli
127.0.0.1:> keys *
) "name"
) "tel"
) "addr"

所以我们日常备份中只要备份这个文件即可

Redis基础知识补充及持久化、备份介绍(二)--技术流ken的更多相关文章

  1. Redis基础知识补充及持久化、备份介绍

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)–技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持 ...

  2. 【进阶之路】Redis基础知识两篇就满足(二)

    导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第二篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...

  3. 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化

    引言 今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个 ...

  4. MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken

    xtrabackup简介 xtrabackup是一个用来对mysql做备份的工具,它可以对innodb引擎的数据库做热备.xtrabackup备份和还原速度快,备份操作不会中断正在执行的事务,备份完成 ...

  5. Redis主从复制、多实例、高可用(三)--技术流ken

    Redis主从复制 在开始实现redis的高可用之前,首先来学习一下如何实现redis的主从复制,毕竟高可用也会依赖主从复制的技术. Redis的主从复制,可以实现一个主节点master可以有多个从节 ...

  6. Redis Cluster集群架构实现(四)--技术流ken

    Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)--技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)--技术流ken>,< ...

  7. 【进阶之路】Redis基础知识两篇就满足(一)

    导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第一篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...

  8. redis基础知识详解

    一.redis基础知识 1.Redis是什么Redis是一个开源的key-value存储系统. 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...

  9. redis笔记之两种持久化备份方式(RDB & AOF)

    Redis支持的两种持久化备份方式(RDB & AOF) redis支持两种持久化方式,一种是RDB,一种是AOF. RDB是根据指定的规则定时将内存中的数据备份到硬盘上,AOF是在每次执行命 ...

随机推荐

  1. linux vsftp 简单配置

    查看自己是否安装vsftp rpm -qa | grep vsftp rpm -qa 查看自己已安装的包 过滤vsftp systemctl rsetart vsftpd 重启服务 先关闭防火墙 sy ...

  2. 长见识-python小知识

    操作系统:桌面操作系统,服务器操作系统,嵌入式操作系统,移动设备操作系统. 作用:1直接控制计算机不同的硬件比如cpu,硬盘等进行工作. 2 把操作这些硬件的方法封装成一个又一个的系统调用, 供其他成 ...

  3. 大数据之hiveSQL

    最近增加了学习java基础算法,包括几种排序算法,二叉树(前序,后序,中序),队列和栈,bmp搜索,广义搜索算法,迭代等等一些技巧(自己动手绝对比单纯的理论要强的多,多练练) HIVE是hadoop生 ...

  4. Dubbo 源码分析 - 自适应拓展原理

    1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心.Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol.Clu ...

  5. 【洛谷4172】 [WC2006]水管局长(LCT)

    传送门 洛谷 BZOJ Solution 如果不需要动态的话,那就是一个裸的最小生成树上的最大边权对吧. 现在动态了的话,把这个过程反着来,就是加边对吧. 现在问题变成了怎么动态维护加边的最小生成树, ...

  6. Go语言map

    map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典.这是一种快速寻找值的理想结构:给定 k ...

  7. Day4:html和css

    Day4:html和css 规范注意 链接里面不能再放链接. a里面可以放入块级元素. 空格规范 选择器与{之间必须包含空格. 如: .class {} 属性名与之后的:符号之间不允许包含空格, 而: ...

  8. Python学习笔记【第六篇】:迭代器、生成器、高阶函数、装饰器

    迭代器 迭代器是访问集合元素的一种方式,迭代器从对象的第一个元素开始访问,知道所有元素被访问完成.迭代器只能往前访问,不能通过索引访问. 类型内部使用__iter__()方法转为迭代器,使用__nex ...

  9. rabbitmq系统学习(三)集群架构

    RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen r ...

  10. 人生苦短,我用Python(1)

    一.人生苦短,我用Python 在文章的开头给大家介绍一下Python语言,作者Guido von Rossum.对,就是图中的“人生苦短我用Python”那哥们.你可能以为我会用很多文字介绍Pyth ...