Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

高性能No sql数据库redis

13,466 views

Published on

redis

Published in: Education, Technology
  • Very Good! 盛大V5
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • simple and good
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

高性能No sql数据库redis

  1. 1. 高性能NoSQL数据库Redis 盛大在线:徐江涛 博客:http://www.paitoubing.cn
  2. 2. NoSQL 大行其道 APP 高并发请求 海量化数据 Disk 内存 图灵奖得主Jim Gray :“内存是新的硬盘,硬盘是新的磁带” memcached
  3. 3. Redis分享大纲 Redis是什么 Redis的特性 Redis的API及适用场景 Redis的使用经验,运维参数
  4. 4. Redis是什么 sponsored by: What is 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 )
  5. 5. Redis vs Memcached Memcached 操作实例 键(keys) 值(values) page:index.html <html><head>[...] user:101:session xDrSdEwd4dSlZkEkj+ login_count “100001” user:100:last_login_time “102736485756” 所有的操作都是基于字符串、或者是2进制的数据格式、 操作起来大部分是GET、SET这2个命令操作,易于使用
  6. 6. Redis vs Memcached 和Memcached 一样、使用简单、性能高效(1G 1M) 异步持久化存储 支持多种数据类型; Strings(字符)、 Lists(链表)、 Sets(集合)、ZSets(有序集合)、Hashes(哈希) 更多、更方便API接口 管理数据; More commands and More…. Is Redis
  7. 7. Redis vs Memcached Redis 数据类型实例 键(keys) 值(values) page:index.html <html><head>[...] users_logged_in_today { 1, 2, 3, 4, 5 } latest_post_ids [201, 204, 209,..] users_and_scores joe ~ 1.3483 bert ~ 93.4 fred ~ 283.22 chris ~ 23774.17 String Sets List ZSets
  8. 8. Redis的API及适用场景 Strings 字符 ./redis-cli SET mystring “ hello world ” C client key value ./redis-cli GET mystring hello world return
  9. 9. GETSET MGET SETNX SETEX MSET MSETNX Redis的API及适用场景 Strings 字符 INCR INCRBY DECR DECRBY APPEND SUBSTR
  10. 10. Redis的API及适用场景 Expiration 当把Redis当作缓存服务使用时,你可以设置数据的过 期时间,不管是数据类型(string,list,zsets,sets,hash)是 什么, 此系列命令都有效 EXPIRE paitoubing 1234 TTL paitoubing == 1234 秒 秒
  11. 11. Redis的API及适用场景 Deleting Keys DEL paitoubing EXISTS paitoubing == 0 (false)
  12. 12. Redis的API及适用场景 Lists a b c d e f LPUSH RPUSH LPOP RPOP LPUSH paitoubing a
  13. 13. Redis的API及适用场景 Lists a b c d e f LLEN == 6 x LREM 1 b LRANGE 2 3 LINDEX 5
  14. 14. Redis的API及适用场景 队列服务Queues a b c d e f RPUSH LPOP RPUSH paitoubing abc RPUSH paitoubing def LPOP paitoubing == “abc” LPOP paitoubing == “def” LPOP paitoubing == (nil)
  15. 15. Redis的API及适用场景 集合Sets uid:1:followers bruce tom zhangsan lisi wangermazi xiaoyueyue fengjie uid:2:followers xiaoyueyue fengjie liyuchun furongjiejie SREM uid:1:followers wangermazi x SMOVE uid:1:followers uid:2:followers lisi SADD uid:2:followers tom
  16. 16. Redis的API及适用场景 集合Sets uid:1:followers bruce tom zhangsan lisi wangermazi xiaoyueyue fengjie uid:2:followers xiaoyueyue fengjie liyuchun furongjiejie SCARD uid:1:followers == 7 SISMEMBER uid:1:followers xinxin == 0 (meaning false) SRANDMEMBER uid:1:followers == “xiaoyueyue” SMEMBERS uid:2:followers == xiaoyueyue fengjie liyuchun furongjiejie
  17. 17. Redis的API及适用场景 集合Sets(交集、并集、差集) uid:1:followers bruce tom zhangsan lisi wangermazi xiaoyueyue fengjie uid:2:followers xiaoyueyue fengjie liyuchun furongjiejie xiaoyueyue fengjie SINTER uid:1:followers uid:2:followers == xiaoyueyue fengjie SINTERSTORE SUNION SUNIONSTORE SDIFF SDIFFSTORE
  18. 18. Redis的API及适用场景 有序集合ZSets Like Sets 每个元素,增加了rank,或是score no time!
  19. 19. Redis的API及适用场景 Hashes(哈希) 产品:Product 1 created_at : 1290149988 product_id : 1 name : 盛大点券 available : 100 HSET product:1 created_at 1290149988 HSET product:1 name “盛大点券” HSET product:1 available 100 HGET product:1 name == 盛大点券 HLEN product:1 == 3 HKEYS product:1 == created_at, name,available HGETALL product:1 == created_at => 102374657 name=> 盛大点券 available=> 100 HVALS HEXISTS HINCRBY HMGET HMSET
  20. 20. Redis的API及适用场景 Redis Social Network (社会化网络) UGC 好友:双向关系 粉丝:单向关系 text photo more….. blog、Message、photo、
  21. 21. Redis的API及适用场景 新增用户 username userid INCR next_user_id Return s [uid] SET user:[uid]:name [username] SET username:[username] [id] Int 整形 变量值 新增日记 content author I NCR next_post_id Return s [pid] SET post:[pid]:content [content] SET post:[pid]:author [uid] LPUSH user:[uid]:posts [pid] LPUSH posts:global [pid] Redis Social Network (社会化网络) Unique IDs
  22. 22. SORT ZCARD MONITOR SLAVEOF RENAME SELECT SAVE SUBSCRIBE PUBLISH Redis的API及适用场景 Enough commands! (版本更新快)
  23. 23. Redis的安装 下载:http://code.google.com/p/redis/ Redis的安装 tar zxvf redis-version.tar.gz cd redis-version make 由于没有make install,所以得把源代码目录里的关键文件手动复制到适当的位置: cp redis.conf /etc/ cp redis-benchmark redis-cli redis-server /usr/bin/ 修改/etc/redis.conf daemonize yes 启动redis服务 # /usr/bin/redis-server /etc/redis.conf
  24. 24. Redis的安装 Redis.conf (配置文件) daemonize yes => 以守护进程的方式运行 maxmemory => Redis在启动时会把所有数据加载到内存中 ,设置使用内存限制 , 新的vm机制,key存放内存,value会存放在swap区,不建议 可通过consistent hashing把数据分布到多个服务器上 save 900 1 save 300 10 save 60 10000 => 900秒内有1个改变, 300秒内有10个改变, 60秒内有10000个改变, redis就会内存中的key保存到数据库文件中去 dbfilename dump.rdb 保存数据的路径 slaveof 192.168.1.2 6379 => 在启动时,REDIS会自动从MASTER上把数据 先同步过来,而无需我们手动进行 MASTER上每有一次落地保存,会自动向SLAVE进行同步。 当然这里的问题是,如果MASTER不保存, SLAVE也就无法得到这些数据,这和REDIS本身的内存写磁盘逻辑是一样
  25. 25. Redis的安装 requirepass => 连接密码(注释) rdbcompression => 存储至本地数据库时是否压缩数据,默认为yes masterauth <master-password> => 当本机为从服务时, 设置主服务的连接密码(注释) maxclients => 最大客户端连接数,默认不限制(注释) appendonly => 是否在每次更新操作后进行日志记录,如果不开启, 可能会在断电时导致一段时间内的数据丢失。 因为redis本身同步数据文件是按上面save条件来同步的, 所以有的数据会在一段时间内只存在于内存中。默认值为no appendfsync => 更新日志条件,共有3个可选值。 no表示等操作系统进行数据缓存同步到磁盘, always表示每次更新操作后手动调用fsync()将数据写到磁盘, everysec表示每秒同步一次(默认值)。 vm-enabled 是否使用虚拟内存
  26. 26. Redis的主从-集群 client client client master master master slave slave slave CONSISTENT HASH / 定容 read write 同步数据 https://github.com/antirez/redis/raw/master/design-documents/REDIS-CLUSTER 风险! SESSION slave
  27. 27. Redis的开发语言支持 Language Support Ruby, Python, PHP, Erlang, Tcl, Perl, Lua, Java, Scala, Clojure, C#, C/C++, JavaScript/Node.js, Haskell, IO, Go
  28. 28. 6379在是手机按键上MERZ对应的号码 MERZ取自意大利歌女Alessia Merz的名字 6379 Redis端口的故事 Why?
  29. 29. Redis的扩展阅读 1、http://code.google.com/p/redis/ 我怎么获得更多,更全的Redis信息? 2、http://redis.io 3、http://antirez.com/ 4、http://www.google.com
  30. 30. END & QA

×