上一篇博文讲述了Redis的一些常用命令,可以对数据库及数据库服务器进行操作,本篇将讲述Redis的高级应用及配置

  • 安全性

    • 设置密码:修改redis.conf中的requirepass,在其后面添加密码即可

      • 使用:

        • 进入客户端时,添加参数u;即 redis-cli -u password
        • 进入客户端后,使用命令 auth,即 auth password
  • 主从复制
    • 通过主从复制可以允许多个是slave server拥有和master server相同的数据库副本
    • 特点:
      • Master可以拥有多个slave
      • 多个slave可以连接同一个master外,还可以连接到其他的slave
      • 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
      • 提高系统的伸缩性
    • Redis主从复制过程
    1. Slave与master建立连接,发送sync同步命令
    2. Master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
    3. 后台完成保存后,就将此文件发送给slave
    4. Slave将此文件保存到硬盘上
    • 配置主从服务器

      • 配置slave服务器:
      1. 在slave的配置文件中修改slaveof,在其后面添加master的ip
      2. 在slave的配置文件中修改masterauth,在其后面添加master的密码
  • 事务处理
    • Redis只能保证一个client发起的事务可以连续执行,中间不插入其他client的命令
    • 原理:但一个client在一个连续中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放入一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令
    • 打开事务:multi
    • 执行并关闭事务:exec
    • 关闭并取消事务:discard
    • 监视:watch命令会监视给定的key,当exec时,如果监视的key从调用watch后发生变化,这整个事务将失败
      • 乐观锁:基于数据库表的版本解决方案中,一般是通过为数据库表添加一个“version”字段来实现读取数据时,将此版本号一同读出,之后更新时,对此版 本号+1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据
      • 监视key:watch,如 watch key
      • 关闭监视:unwatch,如 unwatch key
  • 持久化机制
    • Redis两种持久化方式

      • snapshotting(快照)默认方式

        • 将内存中数据以快照的方式写入二进制文件中,默认文件名为dump.rdb。
        • 可通过配置自动化快照持久化的方式,修改redis.conf的save参数,配置redis在n秒内如果超过m个key被修改就自动做快照
      • Append-only file(aof)
        • 将操作写入文件中,当发生操作时,写入磁盘
        • 修改redis.conf的appendonly为yes,开启aof方式
        • 修改redis.conf的appendfsync的参数,设置aof方式
          • always:收到写命令就立即写入磁盘
          • everysec:没秒钟写入磁盘一次
          • no:完全依赖os写入
  • 发布订阅消息
    • 发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,
    • 订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此信息
    • 订阅消息:subscribe/psubscribe,如 subscribe/psubscribe key
    • 发布消息:publish,如 publish key value
  • 虚拟内存的使用
    • 暂时把不经常访问的数据内存交换到磁盘中,从而腾出内存空间用于其他需要访问的数据
    • 提高数据库容量的办法之一是使用虚拟内存把那些不经常访问的数据交换到磁盘中
    • 配置
      • vm-enabled:设置虚拟内存是否开启
      • vm-swap-file:交换出来的value保存的文件路径
      • vm-max-memory:redis使用的最大内存上限
      • vm-page-size:每个页面的大小
      • vm-pages:最多使用多少个页面
      • vm-max-threads:用于执行value对象换入的工作线程数量

Redis高级应用的更多相关文章

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

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

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

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

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

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

  4. 3.Redis高级功能

    3.Redis高级功能3.1 慢查询分析3.1.1 慢查询的两个配置参数3.1.2 最佳实践3.1.3 单线程架构3.2 Redis Shell3.2.1 redis-cli 详解3.2.2 redi ...

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

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

  6. redis 高级特性 不要太好用

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  7. Redis学习第八课:Redis高级实用特性(二)

    Redis高级实用特性 4.持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式:(1).snapshott ...

  8. Redis学习第八课:Redis高级实用特性(一)

    Redis高级实用特性 注:我学习的环境是vmware7.1 + ubantu10.10+ redis 3.0.2 1.安全性 设置客户端连接后进行任何其他指定前需要的密码.因为redis速度相当快, ...

  9. redis高级应用(集群搭建、集群分区原理、集群操作)

    文章主目录 Redis集群简介 Redis集群搭建 Redis集群分区原理 集群操作 参考文档 本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 ...

  10. 架构师养成记--32.Redis高级(安全 主从复制)

    Redis高级命令及特性 keys * 返回满足的所有键值(*表示模糊匹配) exists 是否存在指定的key(返回1表示存在,0表示不存在) expire 设置某个key的过期时间,使用ttl查看 ...

随机推荐

  1. GridView 使用方法总结 (一)

    GridView 使用方法总结 (一) 下载全部代码 http://www.sufeinet.com/thread-431-1-1.html   原文件作者是:csdn.net的清清月儿 她的主页  ...

  2. 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket

    [源码下载] 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 So ...

  3. window10 mysql5.7 解压版 安装

    1. 解压mysql-5.7.11-winx64.zip 到某文件夹, 如C:\DevelopCommon\mysql-5.7.11-winx64. 2. 配置环境变量 变量名 : MYSQL_HOM ...

  4. Web网站数据”实时”更新设计

    请注意这个实时打上了双引号,没有绝对的实时,只是时间的颗粒不一样罢了(1ms,1s,1m). 服务器数据有更新可以快速通知客户端.Web 基于取得模式,而服务器建立大量的和客户端连接来提供数据实时更新 ...

  5. 六个创建模式之简单工厂模式(Simple Factory Pattern)

    定义: 定义一个工厂类,它可以根据参数的不同生成对应的类的实例:被创建的类的实例通常有相同的父类.因为该工厂方法尝尝是静态的,所以又被称为静态工厂方法(Static Factory Method) 结 ...

  6. Linux学习笔记(整理记录)

    1.安装 (1):安装网址:http://www.jb51.net/os/78318.html 2.鸟哥的Linux命令学习 (1):显示系统目前所支持的语言:echo $LANG (2):修改语言成 ...

  7. windows上JSP开发环境全搭建

    JSP开发环境全搭建 最近需要用到JSP做项目,所以要配置JSP的开发环境,总结一下配置步骤以备以后再配置需要. 配置JAVA开发环境,配置JDK 下载JDK,在这里下载开发所需的JDK,可以根据自己 ...

  8. iOS设计模式之中介者模式

    中介者模式 基本理解 中介者模式又叫做调停者模式,其实就是中间人或者调停者的意思. 尽管将一个系统分割成许多对象通常可以增加可复用性,但是对象之间的连接又降低了可复用性. 如果两个类不必彼此直接通信, ...

  9. 【读书笔记】iOS-UIWindow-密码框

    一,工程结构,如下图所示: 二,代码 PasswordInputWindow.h #import <UIKit/UIKit.h> @interface PasswordInputWindo ...

  10. Struts2(十二)使用验证框架验证数据较验

    一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...