资源预览内容
第1页 / 共71页
第2页 / 共71页
第3页 / 共71页
第4页 / 共71页
第5页 / 共71页
第6页 / 共71页
第7页 / 共71页
第8页 / 共71页
第9页 / 共71页
第10页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Redis 实战实战 红丸红丸出品出品 2 71 第一章 Redis 快速入门 7 1 1 Key Value 存储系统简介 7 1 1 1 Voldemort 8 1 1 2 Dynamo 8 1 1 3 memcachedb 9 1 1 4 Cassandra 9 1 1 5 memcached 10 1 1 6 Hypertable 10 1 2 为什么选择 Key Value Store 11 1 2 1 大规模的互联网应用 11 1 2 2 云存储 11 1 2 3 Redis 实际应用案例 12 1 3 初识 Redis 14 1 3 1 数据类型 14 1 3 2 持久化 14 1 3 3 主从同步 14 1 3 4 性能 15 1 3 5 提供 API 的语言 15 1 3 6 适用场合 15 1 4 快速入门 17 1 4 1 安装 Redis 17 1 4 2 配置 Redis 18 1 4 3 操作数据库 21 第二章 Redis 数据类型及操作 22 2 1 前言 22 2 2 strings 类型及操作 23 2 2 1 set 23 2 2 2 setnx 23 2 2 3 setex 24 2 2 4 setrange 24 红丸红丸出品出品 3 71 2 2 5 mset 24 2 2 6 msetnx 25 2 2 7 get 25 2 2 8 getset 25 2 2 9 getrange 26 2 2 10 mget 26 2 2 11 incr 27 2 2 12 incrby 27 2 2 13 decr 27 2 2 14 decrby 27 2 2 15 append 28 2 2 16 strlen 28 2 3 hashes 类型及操作 29 2 3 1 hset 29 2 3 2 hsetnx 29 2 3 3 hmset 29 2 3 4 hget 30 2 3 5 hmget 30 2 3 6 hincrby 30 2 3 7 hexists 30 2 3 8 hlen 31 2 3 9 hdel 31 2 3 10 hkeys 31 2 3 11 hvals 31 2 3 12 hgetall 32 2 4 lists 类型及操作 32 2 4 1 lpush 32 2 4 2 rpush 33 2 4 3 linsert 33 2 4 4 lset 33 红丸红丸出品出品 4 71 2 5 5 lrem 34 2 4 6 ltrim 35 2 4 7 lpop 36 2 4 8 rpop 36 2 4 9 rpoplpush 36 2 4 10 lindex 37 2 4 11 llen 37 2 5 sets 类型及操作 37 2 5 1 sadd 37 2 5 2 srem 38 2 5 3 spop 38 2 5 4 sdiff 39 2 5 5 sdiffstore 39 2 5 6 sinter 40 2 5 7 sinterstore 40 2 5 8 sunion 40 2 5 9 sunionstore 41 2 5 10 smove 41 2 5 11 scard 42 2 5 12 sismember 42 2 5 13 srandmember 42 2 6 sorted sets 类型及操作 42 2 6 1 zadd 43 2 6 2 zrem 43 2 6 3 zincrby 44 2 6 4 zrank 44 2 6 5 zrevrank 44 2 6 6 zrevrange 45 2 6 7 zrangebyscore 45 2 6 8 zcount 46 红丸红丸出品出品 5 71 2 6 9 zcard 46 2 6 10 zscore 46 2 6 11 zremrangebyrank 47 2 6 12 zremrangebyscore 47 第三章 Redis 常用命令 48 3 1 键值相关命令 48 3 1 1 keys 48 3 1 2 exists 49 3 1 3 del 49 3 1 4 expire 49 3 1 5 move 50 3 1 6 persist 50 3 1 7 randomkey 51 3 1 8 rename 51 3 1 9 type 51 3 2 服务器相关命令 52 3 2 1 ping 52 3 2 2 echo 52 3 2 3 select 52 3 2 4 quit 52 3 2 5 dbsize 53 3 2 6 info 53 3 2 7 monitor 53 3 2 8 config get 53 3 2 9 flushdb 54 3 2 10 flushall 54 第四章 Redis 高级实用特性 54 4 1 安全性 54 4 2 主从复制 55 4 2 1 redis 主从复制特点 55 红丸红丸出品出品 6 71 4 2 2 redis 主从复制过程 55 4 2 3 如何配置 56 4 3 事务控制 58 4 3 1 简单事务控制 58 4 3 2 如何取消一个事务 58 4 3 3 乐观锁复杂事务控制 59 4 4 持久化机制 61 4 4 1 snapshotting 方式 61 4 4 2 aof 方式 63 4 5 发布及订阅消息 66 4 6 Pipeline 批量发送请求 67 4 7 虚拟内存的使用 70 红丸红丸出品出品 7 71 第一章第一章 Redis 快速入门快速入门 Redis 是一个 Key Value 存储系统 和 Memcached 类似 它支持存储的 value 类型相对更多 包括 string 字符串 list 链表 set 集合 和 zset 有序集合 这些数据类型都支持 push pop add remove 及取交集并集和差集及更丰富的操作 而且这些操作都是原子性的 在此基础 上 Redis 支持各种不同方式的排序 与 memcached 一样 为了保证效率 数据都是缓存在 内存中 区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 文件 并且在此基础上实现了 master slave 主从 同步 1 1 Key Value 存储系统简介存储系统简介 Key Value Store 是当下比较流行的话题 尤其在构建诸如搜索引擎 IM P2P 游戏服务器 SNS 等大型互联网应用以及提供云计算服务的时候 怎样保证系统在海量数据环境下的高性 能 高可靠性 高扩展性 高可用性 低成本成为所有系统架构们挖苦心思考虑的重点 而 怎样解决数据库服务器的性能瓶颈是最大的挑战 按照分布式领域的 CAP 理论 Consistency Availability Tolerance to network Partitions 这三 部分在任何系统架构实现时只可能同时满足其中二点 没法三者兼顾 来衡量 传统的关系 数据库的 ACID 只满足了 Consistency Availability 因此在 Partition tolerance 上就很难做得好 另外传统的关系数据库处理海量数据 分布式架构时候在 Performance Scalability Availability 等方面也存在很大的局限性 而 Key Value Store 更加注重对海量数据存取的性能 分布式 扩展性支持上 并不需要传统 关系数据库的一些特征 例如 Schema 事务 完整 SQL 查询支持等等 因此在分布式环 境下的性能相对于传统的关系数据库有较大的提升 Key Value 数据库分为很多种类 具体如下图 红丸红丸出品出品 8 71 这些 Key Value 数据库 有的是用 C C 编写的 有的是用 Java 编写的 还有的是用 Erlang 编写的 每个都有自己的独到之处 我们从中挑选一些比较有特色且应用广泛的产品学习和 了解一下 1 1 1 Voldemort Voldemort 是一个分布式 Key Value 存储系统 它具有以下特点 数据自动在多个服务器之间复制 数据自动分区 因此每个服务器只包括整体数据的一个子集 服务器故障处理是透明的 支持插入式序列化 允许丰富的 Key 和 Value 类型 包括列表和元组 也可以集成常见 的序列化框架 如 Protocol Buffers Thrift Avro 和 Java Serialization 数据项支持版本化 即使在故障情况下 数据完整性也可以得到保障 每个节点都是独立的 无需其他节点协调 因此也没有中央节点 单节点性能优秀 根据机器配置 网络 磁盘系统和数据复制因素的不同 每秒可以执 行 10 20k 操作 支持地理分散式部署 1 1 2 Dynamo Dynamo 是亚马逊的 key value 模式的存储平台 可用性和扩展性都很好 性能也不错 读写 访问中 99 9 的响应时间都在 300ms 内 红丸红丸出品出品 9 71 接下来对 Dynamo 需要的一些特性做一下简要的描述 Cost effectiveness 省钱 Dynamo 不像一些商用数据库产品 需要昂贵的服务器来得 到良好的性能 而且可能增加 5 的访问量会需要你花 2 万美刀去买一台新服务器 而 在 Dynamo 上 由于是利用一堆廉价机器来存数据 于是你可能只需要花个 500 刀买 个破机器加入到集群里就行了 Dynamo 是一个 Key Value 存储 因此他不支持外键和关联查询什么的 其 Value 值是 二进制存储的 所以查询条件也只能作用在 Key 上 配置简单的分布式存储 这是由于 Dynamo 是去中心化地设计 在集群中它的每一台 机器都是对等的 不像 MongoDB 这样的中心化设计 于是它也不会有单点问题 1 1 3 memcachedb memcachedb 是 一个由新浪网的开发人员开放出来的开源项目 给 memcached 分布式缓存 服务器添加了 Berkeley DB 的持久化存储机制和异步主辅复制机制 让 memcached 具备了事 务恢复能力 持久化能力和分布式复制能力 非常适合于需要超高性能读写速度 但是 不 需要严格事务约束 能够被持久化保存的应用场景 例如 memcachedb 被应用在新浪博客上 面 1 1 4 Cassandra Apache Cassandra 是一套开源分布式 Key Value 存储系统 它最初由 Facebook 开发 用于储 存特别大的数据 Facebook 目前在使用此系统 主要特性 分布式 基于 column 的结构化 高伸展性 Cassandra 的主要特点就是它不是一个数据库 而是由一堆数据库节点共同构成的一个分布 式网络服务 对 Cassandra 的一个写操作 会被复制到其他节点上去 对 Cassandra 的读操 作 也会被路由到某个节点上面去读取 对于一个 Cassandra 群集来说 扩展性能 是比较 简单的事情 只管在群集里面添加节点就可以了 Cassandra 是一个混合型的非关系的数据库 类似于 Google 的 BigTable 其主要功能比 Dynomite 分布式的 Key Value 存 储系统 更丰富 但支持度却不如文档存储 MongoDB 介 于关系数据库和非关系数据库之间的开源产品 是非关系数据库当中功能最丰富 最像关系 数据库 的 支持的数据结构非常松散 是类似 json 的 bjson 格式 因此可以存储比较复杂 的数据类型 Cassandra 最初由 Facebook 开发 后转变成了开源项目 它是一个网络社交 云计算方面理想的数据库 以 Amazon 专有的完全分布式的 Dynamo 为基础 结合了 Google BigTable 基于列族 Column Family 的数据模型 P2P 去中心化的存储 很多方面都可以称 之为 Dynamo 2 0 红丸红丸
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号