第一章 redis快速入门
Redis是一个key-value存储系统。和memcached类似,它支持存储的value数据类型更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave主从同步。
1.1key-value存储系统简介
具备高可靠性及可扩展性的海量数据存储,传统关系型数据库很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的查询,在这种情况下使用关系型数据库使得效率低下,并且扩展也将成为未来很大的难题。
按照分布式领域的CAP理论:Consistency(一致性)、Availability(可用性)、Tolerance to network Partitions(分区容错性)来衡量。传统关系型数据库的ACID只满足了Consistency、Availability,因此Tolerance to network Partitions(分区容错性)很难做得很好。另外传统关系型数据库处理海量数据、分布式架构时候在Performance、Scalability、Availability等负面存在很大的局限性。
而key-value更加注重对海量数据存取的性能、分布式、扩展性支持上,并不需要传统关系型数据库的一些特征,例如:schema、事务、完整SQL查询支持等等,因此分布式环境下的性能相对于传统关系型数据库有了很大的提升。
key-value数据库有很多种:voldemort、dynamo、memcachedb、Cassandra、hypertable。
为什么选择key-value store:
1. 大规模的互联网应用
2. 云存储
1.2初识redis
1.2.1数据类型
作为key-value型数据库,redis也提供了key和value的映射关系。但是除了常规的数值或字符串,redis的键值还可以是一下形式之一:
l Lists 列表
l Sets 集合
l Sorted sets 有序集合
l Hashes 哈希表
键值的数据类型决定了该键值支持的操作。Redis支持注入列表、集合、有序集合的交集、并集、差集等高级原子操作;如果键值是普通数值,redis则提供了自增等原子操作。
1.2.2持久化
通常,redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据的持久化:使用截图的方式,将内存中的数据不断写入磁盘:或使用MySQL的日志方式,记录每次更新的日志。前者性能较好,但是可能会一定程度的引起数据丢失:后者相反。
1.2.3主从同步
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
1.2.4性能
相比需要依赖磁盘记录每个更新的数据库,基于内存的特性给redis带来了非常优秀的性能。读写操作之间有显著的性能差异。
第二章 数据类型及其操作
2.1前言
2.2strings类型及操作
2.2.1