zoukankan      html  css  js  c++  java
  • Redis高级进阶

    本章目标

    • 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)接收消息。

    发布

    pubsub2

    订阅

    pubsub1

    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 将注释去掉,设置成自己的密码即可。

  • 相关阅读:
    Vcenter虚拟化三部曲----SQL Server 2008 R2 数据库安装
    Vcenter虚拟化三部曲----VMWare ESXi 5.5安装及配置
    SaltStack 自动化工具
    KVM虚拟化
    redis单节点集群
    linux--yum源,源码包
    运维工程师常用命令(持续更新)
    TARS基金会:构建微服务开源生态
    TarsGo新版本发布,支持protobuf,zipkin和自定义插件
    .NET 发送电子邮件
  • 原文地址:https://www.cnblogs.com/jimisun/p/10045772.html
Copyright © 2011-2022 走看看