zoukankan      html  css  js  c++  java
  • redis的那些事

    redis的那些事 - 轩脉刃 - 博客园

    redis的那些事

     

    持久化 

    redis支持RDBAOF两种持久化方式

     

    The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.

    RDB是一种即时快照的存储方式,定时对数据库进行snapshot

    RDB优点:

    1 RDB对于数据备份非常容易。你可以设置1天或者30天对数据进行一次备份,这样当发生数据灾难的时候能很容易恢复

    2 由于RDB对数据备份时redis只做备份操作,所以备份最大化的使用了redis的性能,同时也导致了对于大的数据集,RDB备份快于AOF

     

    RDB缺点:

    1 如果你的需求只是要知道两个时间段中redis的变化,RDB是弱于AOF

    2 由于RDB经常使用子进程fork()进行数据备份,所以如果当数据比较大的时候,数据备份会比较耗时

     

    AOF优点:

    1 你必须有一个AOFfsync的策略:

    或者是不进行fsync 或者每秒fsync一次,或者每次query查询的时候fsync

    2 AOF只记录修改log,当存储的时候由于某种原因写log失误了,使用redis-check-aof能很好的修复

    3 redis数据太大的时候,AOF可以很好被重写到新的redis

     

    AOF缺点:

    1 AOF通常比RDB

    2 AOFRDB

     

     --------------------------

    流水线

    redis是客户端和服务器端的通信交互TCP协议

     

    当客户端发送请求,服务器端接受请求并发送回复,客户端接收回复,这个过程叫做RTT(Round Trip Time)

    比如如果RTT时间是250微秒,既是服务器端每秒能处理10万个请求,那么,我们只能认为redis每秒处理4个请求

     

    server不需要等待client接收了消息之后再处理新request的技术叫做pipelining(流水线)。这个技术早在几十年前就应用在了各种协议上(比如pop3),redis也很早使用了这个技术。

     

    实验:

    $ (echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379

    当调用这个例子的时候:

    server一次返回:

    +PONG

    +PONG

    +PONG

     

    而不是返回一次PONG,过了RTT时间再返回PONG,这个例子就说明了redis使用pipelining

     

    注:nc命令说明请看:

    http://www.cnblogs.com/faraway/archive/2008/08/30/1280070.html 

     

     

    ---------------------------------

    订阅 

     redis支持订阅(subscribe

    当一个client订阅一个或多个变量,其他客户端修改了变量并publish之后,这个客户端会收到消息

     

    例子:

    Client1:

    SUBSCRIBE first second

     

    Client2:

    PUBLISH second Hello

     

    client1显示:

    message

    second

    Hello2

     

     

    redis还支持模式订阅(psubscribe命令)

    PSUBSCRIBE f*

     

    ---------------------------------

    参考文档:

    ---------------------------------

    作者:yjf512(轩脉刃)

    出处:http://www.cnblogs.com/yjf512/

    本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明 

  • 相关阅读:
    Linux
    数据库
    第一篇文章
    解决VMware虚拟机Ubuntu 无法上网问题
    mybatis之sql标签与include标签
    第一个只出现一次的字符
    位运算 -- 只出现一次的的数字
    Oracle递归 start with...connect by...prior
    MyBatis中#{ }和${ }的区别
    表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
  • 原文地址:https://www.cnblogs.com/lexus/p/2362392.html
Copyright © 2011-2022 走看看