1 / 30

高性能 NoSQL 数据库 Redis

高性能 NoSQL 数据库 Redis. 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

awen
Download Presentation

高性能 NoSQL 数据库 Redis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 高性能NoSQL数据库Redis

  2. NoSQL 大行其道 高并发请求 APP 海量化数据 memcached Disk 内存 图灵奖得主Jim Gray:“内存是新的硬盘,硬盘是新的磁带”

  3. Redis分享大纲 Redis是什么 Redis的特性 Redis的API及适用场景 Redis的使用经验,运维参数

  4. 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 )

  5. 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个命令操作,易于使用

  6. Redisvs Memcached 和Memcached 一样、使用简单、性能高效(1G 1M) 异步持久化存储 支持多种数据类型; Strings(字符)、 Lists(链表)、 Sets(集合)、ZSets(有序集合)、Hashes(哈希) 更多、更方便API接口 管理数据; More commands and More…. Is Redis

  7. 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

  8. Redis的API及适用场景 Strings 字符 value C client key ./redis-cli SETmystring “ hello world ” return ./redis-cli GETmystring hello world

  9. Redis的API及适用场景 Strings 字符 GETSET MGET SETNX SETEX MSET MSETNX INCR INCRBY DECR DECRBY APPEND SUBSTR

  10. Redis的API及适用场景 Expiration 当把Redis当作缓存服务使用时,你可以设置数据的过期时间,不管是数据类型(string,list,zsets,sets,hash)是什么, 此系列命令都有效 EXPIRE paitoubing1234 秒 TTL paitoubing == 1234 秒

  11. Redis的API及适用场景 Deleting Keys DEL paitoubing EXISTSpaitoubing == 0 (false)

  12. Redis的API及适用场景 Lists LPUSH RPUSH a b c d e f RPOP LPOP LPUSHpaitoubing a

  13. Redis的API及适用场景 Lists LLEN == 6 x a b c d e f LRANGE 2 3 LREM 1 b LINDEX 5

  14. 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)

  15. 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

  16. 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

  17. 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

  18. Redis的API及适用场景 有序集合ZSets Like Sets 每个元素,增加了rank,或是score no time!

  19. 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

  20. Redis的API及适用场景 Redis Social Network (社会化网络) UGC 好友:双向关系 粉丝:单向关系 text photo blog、Message、photo、 more…..

  21. 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

  22. Redis的API及适用场景 Enough commands! (版本更新快) SUBSCRIBE SORT SLAVEOF RENAME MONITOR PUBLISH ZCARD SELECT SAVE

  23. Redis的安装 下载:http://code.google.com/p/redis/ Redis的安装tar zxvf redis-version.tar.gzcd redis-versionmake由于没有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. 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本身的内存写磁盘逻辑是一样

  25. Redis的安装 masterauth <master-password>=>  当本机为从服务时, 设置主服务的连接密码(注释) requirepass=> 连接密码(注释) rdbcompression  => 存储至本地数据库时是否压缩数据,默认为yes maxclients  => 最大客户端连接数,默认不限制(注释) appendonly=> 是否在每次更新操作后进行日志记录,如果不开启, 可能会在断电时导致一段时间内的数据丢失。 因为redis本身同步数据文件是按上面save条件来同步的, 所以有的数据会在一段时间内只存在于内存中。默认值为no appendfsync  => 更新日志条件,共有3个可选值。 no表示等操作系统进行数据缓存同步到磁盘, always表示每次更新操作后手动调用fsync()将数据写到磁盘, everysec表示每秒同步一次(默认值)。 vm-enabled是否使用虚拟内存

  26. 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

  27. Redis的开发语言支持 Language Support Ruby, Python, PHP, Erlang, Tcl, Perl, Lua, Java, Scala, Clojure, C#, C/C++, JavaScript/Node.js, Haskell, IO, Go

  28. Redis端口的故事 Why? 6379 6379在是手机按键上MERZ对应的号码 MERZ取自意大利歌女Alessia Merz的名字

  29. Redis的扩展阅读 我怎么获得更多,更全的Redis信息? 1、http://code.google.com/p/redis/ 2、http://redis.io 3、http://antirez.com/ 4、http://www.google.com

  30. END & QA

More Related