• Like
  • Save

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

高性能No sql数据库redis

on

  • 12,235 views

redis

redis

Statistics

Views

Total Views
12,235
Views on SlideShare
9,122
Embed Views
3,113

Actions

Likes
41
Downloads
483
Comments
2

46 Embeds 3,113

http://www.everalan.com 935
http://www.paitoubing.cn 708
http://blog.wangzhong.me 524
http://www.360doc.com 240
http://www.woyaofeng.com 185
http://www.lapland.name 105
http://blog.everalan.com 96
http://cache.baidu.com 54
http://blog.haohtml.com 50
http://www.cnblogs.com 36
http://allenjoe.net 30
http://wangzhong.me 19
http://www.doumili.com 17
http://everalan.com 16
http://yui.com 11
http://wzblog.sinaapp.com 10
http://www.lookxn.com 9
http://www.techgig.com 8
http://ok16888888.everalan.com 6
http://localhost 5
http://www.caishentemple.com 4
http://www.xn--detv79dyrn.com 4
http://wei.wangzhong.me 4
http://106.187.99.89 3
http://ydoc.com 3
http://baixia.me 3
http://xianguo.com 3
http://cmilu.com 3
url_unknown 2
http://safe.tumblr.com 2
http://gongliyuan.everalan.com 2
http://leer.everalan.com 2
http://wangzhong.me HTTP 1
http://life.wangzhong.me 1
http://nttdocomo.vicp.net 1
http://joria.everalan.com 1
http://www.baidu.com 1
http://filecheck2.360doc.com 1
http://filecheck.360doc.com 1
http://doumili.com 1
http://weibonotice.everalan.com 1
http://lanseyuanwei.everalan.com 1
http://sns.wangzhong.me 1
http://thatime.com 1
http://127.0.0.1 1
http://www. 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Very Good! 盛大V5
    Are you sure you want to
    Your message goes here
    Processing…
  • simple and good
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    高性能No sql数据库redis 高性能No sql数据库redis Presentation Transcript

    • 高性能NoSQL数据库Redis
      盛大在线:徐江涛
      博客:http://www.paitoubing.cn
    • NoSQL 大行其道
      高并发请求
      APP
      海量化数据
      memcached
      Disk
      内存
      图灵奖得主Jim Gray:“内存是新的硬盘,硬盘是新的磁带”
    • Redis分享大纲
      Redis是什么
      Redis的特性
      Redis的API及适用场景
      Redis的使用经验,运维参数
    • Redis是什么
      What is
      sponsored by:
      Redis is...
      an “advanced key-value store”
      b y
      S A LVATO R E S A N F I L I P P O
      ( @ a n t i r e z )
    • Redisvs Memcached
      Memcached 操作实例
      键(keys)
      值(values)
      page:index.html
      <html><head>[...]
      xDrSdEwd4dSlZkEkj+
      user:101:session
      login_count
      “100001”
      user:100:last_login_time
      “102736485756”
      所有的操作都是基于字符串、或者是2进制的数据格式、
      操作起来大部分是GET、SET这2个命令操作,易于使用
    • Redisvs Memcached
      和Memcached 一样、使用简单、性能高效(1G 1M)
      异步持久化存储
      支持多种数据类型;
      Strings(字符)、 Lists(链表)、
      Sets(集合)、ZSets(有序集合)、Hashes(哈希)
      更多、更方便API接口 管理数据;
      More commands
      and More….
      Is Redis
    • Redisvs Memcached
      Redis 数据类型实例
      键(keys)
      值(values)
      page:index.html
      <html><head>[...]
      String
      { 1, 2, 3, 4, 5 }
      users_logged_in_today
      Sets
      latest_post_ids
      [201, 204, 209,..]
      List
      users_and_scores
      joe ~ 1.3483
      bert ~ 93.4
      fred ~ 283.22
      chris ~ 23774.17
      ZSets
    • Redis的API及适用场景
      Strings 字符
      value
      C client
      key
      ./redis-cli SETmystring “ hello world ”
      return
      ./redis-cli GETmystring
      hello world
    • Redis的API及适用场景
      Strings 字符
      GETSET
      MGET
      SETNX
      SETEX
      MSET
      MSETNX
      INCR
      INCRBY
      DECR
      DECRBY
      APPEND
      SUBSTR
    • Redis的API及适用场景
      Expiration
      当把Redis当作缓存服务使用时,你可以设置数据的过期时间,不管是数据类型(string,list,zsets,sets,hash)是什么,
      此系列命令都有效
      EXPIRE paitoubing1234

      TTL paitoubing
      == 1234

    • Redis的API及适用场景
      Deleting Keys
      DEL paitoubing
      EXISTSpaitoubing
      == 0 (false)
    • Redis的API及适用场景
      Lists
      LPUSH
      RPUSH
      a
      b
      c
      d
      e
      f
      RPOP
      LPOP
      LPUSHpaitoubing a
    • Redis的API及适用场景
      Lists
      LLEN == 6
      x
      a
      b
      c
      d
      e
      f
      LRANGE 2 3
      LREM 1 b
      LINDEX 5
    • Redis的API及适用场景
      队列服务Queues
      RPUSH
      a
      b
      c
      d
      e
      f
      LPOP
      RPUSH paitoubing abc
      RPUSH paitoubing def
      LPOP paitoubing == “abc”
      LPOP paitoubing == “def”
      LPOP paitoubing == (nil)
    • Redis的API及适用场景
      集合Sets
      bruce tom zhangsan lisi
      wangermazi xiaoyueyue fengjie
      uid:1:followers
      x
      SREMuid:1:followers wangermazi
      SMOVEuid:1:followers uid:2:followers lisi
      xiaoyueyue fengjie liyuchun
      furongjiejie
      uid:2:followers
      SADD uid:2:followers tom
    • Redis的API及适用场景
      集合Sets
      bruce tom zhangsan lisi
      wangermazi xiaoyueyue fengjie
      uid:1:followers
      SCARD uid:1:followers == 7
      SISMEMBER uid:1:followers xinxin == 0 (meaning false)
      SRANDMEMBER uid:1:followers == “xiaoyueyue”
      xiaoyueyue fengjie liyuchun
      furongjiejie
      uid:2:followers
      SMEMBERS uid:2:followers
      == xiaoyueyue fengjie liyuchun
      furongjiejie
    • Redis的API及适用场景
      集合Sets(交集、并集、差集)
      bruce tom zhangsan lisi
      wangermazi xiaoyueyue fengjie
      uid:1:followers
      xiaoyueyue fengjie
      xiaoyueyue fengjie liyuchun
      furongjiejie
      uid:2:followers
      SINTER uid:1:followers uid:2:followers == xiaoyueyue fengjie
      SINTERSTORE
      SUNION SUNIONSTORE
      SDIFF SDIFFSTORE
    • Redis的API及适用场景
      有序集合ZSets
      Like Sets
      每个元素,增加了rank,或是score
      no time!
    • Redis的API及适用场景
      Hashes(哈希)
      产品:Product 1
      HSET product:1 created_at 1290149988
      HSET product:1 name“盛大点券”
      created_at : 1290149988
      product_id : 1
      name : 盛大点券
      available : 100
      HSET product:1 available 100
      HGETproduct:1 name == 盛大点券
      HLEN product:1== 3
      HKEYS product:1
      == created_at, name,available
      HGETALLproduct:1 ==
      created_at => 102374657
      name=> 盛大点券
      available=> 100
      HVALS HEXISTS HINCRBY HMGET HMSET
    • Redis的API及适用场景
      Redis Social Network (社会化网络)
      UGC
      好友:双向关系
      粉丝:单向关系
      text
      photo
      blog、Message、photo、
      more…..
    • Redis的API及适用场景
      Redis Social Network (社会化网络)
      Int 整形
      新增用户
      username
      userid
      INCR next_user_id
      Return s [uid]
      SET user:[uid]:name [username]
      SET username:[username] [id]
      变量值
      新增日记
      I NCR next_post_id
      Return s [pid]
      content
      author
      SET post:[pid]:content [content]
      SET post:[pid]:author [uid]
      LPUSH user:[uid]:posts [pid]
      LPUSH posts:global [pid]
      Unique IDs
    • Redis的API及适用场景
      Enough commands! (版本更新快)
      SUBSCRIBE
      SORT
      SLAVEOF
      RENAME
      MONITOR
      PUBLISH
      ZCARD
      SELECT
      SAVE
    • Redis的安装
      下载:http://code.google.com/p/redis/
      Redis的安装tar zxvfredis-version.tar.gzcdredis-versionmake由于没有make install,所以得把源代码目录里的关键文件手动复制到适当的位置:cp redis.conf /etc/cp redis-benchmark redis-cliredis-server /usr/bin/
      修改/etc/redis.confdaemonize yes
      启动redis服务
      # /usr/bin/redis-server /etc/redis.conf
    • Redis的安装
      Redis.conf (配置文件)
      daemonize yes => 以守护进程的方式运行
      maxmemory => Redis在启动时会把所有数据加载到内存中 ,设置使用内存限制,
      新的vm机制,key存放内存,value会存放在swap区,不建议
      可通过consistent hashing把数据分布到多个服务器上
      => 900秒内有1个改变,
      300秒内有10个改变,
      60秒内有10000个改变,
      redis就会内存中的key保存到数据库文件中去
      save 900 1save 300 10save 60 10000
      dbfilename dump.rdb
      保存数据的路径
      slaveof 192.168.1.2 6379 => 在启动时,REDIS会自动从MASTER上把数据
      先同步过来,而无需我们手动进行
      MASTER上每有一次落地保存,会自动向SLAVE进行同步。
      当然这里的问题是,如果MASTER不保存,
      SLAVE也就无法得到这些数据,这和REDIS本身的内存写磁盘逻辑是一样
    • Redis的安装
      masterauth <master-password>=>  当本机为从服务时,
      设置主服务的连接密码(注释)
      requirepass => 连接密码(注释)
      rdbcompression  => 存储至本地数据库时是否压缩数据,默认为yes
      maxclients  => 最大客户端连接数,默认不限制(注释)
      appendonly => 是否在每次更新操作后进行日志记录,如果不开启,
      可能会在断电时导致一段时间内的数据丢失。
      因为redis本身同步数据文件是按上面save条件来同步的,
      所以有的数据会在一段时间内只存在于内存中。默认值为no
      appendfsync  => 更新日志条件,共有3个可选值。
      no表示等操作系统进行数据缓存同步到磁盘,
      always表示每次更新操作后手动调用fsync()将数据写到磁盘,
      everysec表示每秒同步一次(默认值)。
      vm-enabled 是否使用虚拟内存
    • Redis的主从-集群
      https://github.com/antirez/redis/raw/master/design-documents/REDIS-CLUSTER
      slave
      slave
      slave
      slave
      Sample demo,
      同步数据
      master
      master
      master
      NO PRODUCT !
      read
      write
      风险!
      CONSISTENT HASH / 定容
      client
      client
      client
      SESSION
    • Redis的开发语言支持
      Language Support
      Ruby, Python, PHP, Erlang,
      Tcl, Perl, Lua, Java, Scala,
      Clojure, C#, C/C++,
      JavaScript/Node.js, Haskell,
      IO, Go
    • Redis端口的故事
      Why?
      6379
      6379在是手机按键上MERZ对应的号码
      MERZ取自意大利歌女Alessia Merz的名字
    • Redis的扩展阅读
      我怎么获得更多,更全的Redis信息?
      1、http://code.google.com/p/redis/
      2、http://redis.io
      3、http://antirez.com/
      4、http://www.google.com
    • END
      &
      QA