本章目标

  • Redis配置文件
  • Redis的存储
  • Redis的事务
  • Redis发布订阅
  • Redis安全

Redis配置文件

在针对Redis进行进一步了解之前,我们首先务必需要了解一下Redis的配置文件“redis.conf”,该文件一般位于Redis的安装目录。例如:使用的是Ubuntu安装的Redis,我可以在/etc/redis/redis.conf找到该文件。redis.conf 配置项说明如下所示

http://www.runoob.com/redis/redis-conf.html

Redis存储

对于Redis对于数据的存储保障,可以分为两种方式来存储Redis数据,一种是使用“快照”,另一种是“只追加文件”方式。

  • 快照(RDB存储)
  • 只追加文(AOF存储)

快照(RDB)

我们可以在Redis.conf找到如下段落

#   save ""
save 900 1
save 300 10
save 60 10000

可以看到,Redis的配置中已经默认替我们开启了快照模式的数据存储,根据以上命令,该存储规则是“如果在900秒内存储1条记录,进行快照;如果满足300秒内存储10条记录,进行快照;如果满足60秒内存储10000条记录,进行快照”,我们还可以针对快照存储模式进一步的进行配置。

# The filename where to dump the DB
dbfilename dump.rdb

我们可以在redis.conf配置自定义快照存储的路径,以便我们进行数据恢复。

如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可,如果不知道Redis的安装目录可以在Redis客户端里面使用下面命令获得。

CONFIG GET dir

只追加文件(AOF)

我们可以在配置文件中找到appendonly no ,将no改成yes;代表开启AOF数据存储方式。同样,我们可以自定义备份文件存储的位置。

appendfilename "appendonly.aof"

针对AOF的数据备份方式,有三种模式,分别是;

  • always | 每次写入命令都要写入磁盘
  • everysec | 每秒执行一次同步
  • no | 让操作系统来决定何时同步

我们可以在配置文件中,找到appendfsync everysec 修改适合自己的选择。

备份数据的建议

  • 创建一个定时任务,每小时和每天创建一个快照,保存在不同的文件夹里。
  • 定时任务运行时,把太旧的文件进行删除。例如只保留48小时的按小时创建的快照和一到两个月的按天创建的快照。
  • 每天确保一次把快照文件传输到数据中心外的地方进行保存,至少不能保存在Redis服务所在的服务器。

更多关于Redis数据的存储可以访问:https://segmentfault.com/a/1190000002906345

Redis事务

对于Redis的事务其实和我们在编写JDBC的应用程序时所使用的事务是基本一致的,有一点区别是,当Redis的事务中有一条命令发生异常时,并不会对数据进行回滚;而JDBC会针对事务的回滚。也是说Redis事务并没有维持其原子性

Redis事务流程

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

Redis事务命令

命令 详解
MULTI 标记一个事务块的开始。
EXEC 执行所有事务块内的命令。
DISCARD 取消事务,放弃执行事务块内的所有命令。
UNWATCH 取消 WATCH 命令对所有 key 的监视。

Redis事务演示

Redis发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

发布

订阅

Redis发布订阅命令

命令 详解
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
PUBLISH channel message 将信息发送到指定的频道。
PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。

Redis发布订阅演示

Redis安全

我们可以在Redis的配置文件中设置Redis密码,在客户端进行访问Redis的时候会进行密码验证;

查看是否设置密码

在Redis命令行中输入命令 CONFIG get requirepass

设置密码

我们可以在redis.conf中找到# requirepass foobared 将注释去掉,设置成自己的密码即可。

Redis高级进阶的更多相关文章

  1. Redis高级进阶(二)

    一.消息通知 在一些网站上,经常会有一些发布/订阅或者邮件订阅的功能,尤其一些博客上.其实这种问题很常见,当页面需要进行如发送邮件.复杂的计算时会阻塞页面的渲染.为了避免用户等待太久,应该使用其他进程 ...

  2. Redis高级进阶(一)

    一.redis中的事务 在关系型数据库中事务是必不可少的一个核心功能,生活中也是处处可见,比如我们去银行转账,首先需要将A账户的钱划走,然后存到B账户上,这两个步骤必须在同一事务中,要么都执行,要么都 ...

  3. 潭州学院-JavaVIP的Javascript的高级进阶-KeKe老师

    潭州学院-JavaVIP的Javascript的高级进阶-KeKe老师 讲的不错,可以学习 下面是教程的目录截图: 下载地址:http://www.fu83.cn/thread-283-1-1.htm ...

  4. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  5. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  6. NoSQL之Redis高级实用命令详解--安全和主从复制

    Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...

  7. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  8. 高级进阶DB2(第2版)——内部结构、高级管理与问题诊断

    <高级进阶DB2(第2版)——内部结构.高级管理与问题诊断> 基本信息 作者: 牛新庄    出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版 ...

  9. MEF高级进阶

    MEF高级进阶   好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四 ...

随机推荐

  1. [mysql] mysql-myibatis-整理

    ==================================== insert ========================================== 语句1 <inser ...

  2. 10篇写给Git初学者的最佳教程(转)

    身为网页设计师或者网页开发者的你,可能已经听说过Git这个正快速成长的版本控制系统.它由GitHub维护:GitHub是一个开放性的.存储众人代码的网站.如果你想学习如何使用Git,请参考本文.在文章 ...

  3. 在express项目中使用formidable & multiparty实现文件上传

    安装 formidable,multiparty 模块 npm install formidable,multiparty –save -d 表单上传 <form id="addFor ...

  4. libui-node体验笔记

    简介 libui-node是基于libui库的node封装.libui库是一个简便的将本地原生的GUI封装的C语言库,并支持各平台(Mac,Linux,windows).官网提供了第三方封装文档,开发 ...

  5. c #include "" 和 <>

    <>先去系统目录中找头文件,如果没有在到当前目录下找.所以像标准的头文件 stdio.h.stdlib.h等用这个方法. 而""首先在当前目录下寻找,如果找不到,再到系 ...

  6. swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别

    声明几个类: //动物类 class Animal{ } //陆地动物类 class terricole: Animal { } //海洋动物类 class SeaAnimals: Animal { ...

  7. android素材资源

    这里先给大家 推荐两个 找图标的 搜索引擎    http://findicons.com/ 这个我也在用 大家也可以试试 找个图标还是很easy的.   http://www.iconfinder. ...

  8. Spring装配Bean的过程补充

    对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ...

  9. UE4.16播放全景视频

    全景视频有两种:一种是常见的一帧画面里面包含一张全景图,另外一种是一帧画面里面包含了左眼和右眼两张全景图. 根据种类的不同,选择不同的材质分别对应MAT_Single_Image和MAT_Stereo ...

  10. iOS应用国际化教程(2014版)

    本文转载至 http://www.cocoachina.com/industry/20140526/8554.html 这篇教程将通过一款名为iLikeIt的应用带你了解最基础的国际化概念,并为你的应 ...