(一)初识 Redis
本章主要内容
- Redis与其他软件的异同
- Redis的用法
- 使用Python实例代码与Redis进行简单的互动
- 使用Redis解决实际问题
1.1 Redis简介
Redis是一个速度非常快的非关系数据库,它可以存储key与五种不同类型的value之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。
1.1.1 Redis与其他数据库和软件的对比
1.1.2 附加特性
- 数据持久化
Redis是使用内存存储的非关系数据库,那么当服务器被关闭时,服务器存储的数据也需要被保存下来。Redis有两种不同形式的持久化方法,他们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘。
第一种持久化方法是将时间点转储(point-in-time dump),转储操作既可以在“指定时间段内有指定数量的写操作执行”这一条件被满足时执行,又可以通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行。
第二种持久化方法将所有修改了数据库的命令都写入一个只追加(append-only)文件里,用户可以根据数据的重要程度,将只追加写入设置为从不同步(sync)、每秒同步一次或者每写入一个命令就同步一次。
- 主从复制
为了扩展redis的读性能,为Redis提供故障转移支持,Redis实现了主从复制特性:执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本(copy);之后主服务器执行的写命令,都会被发送给所有连接着从服务器去执行,从而实时地更新从服务器的数据集。因为从服务器包含的数据会不断地更新,所以客户端可以向任意一个从服务器发送读请求,以此来避免对主服务器进行集中式的访问。
1.1.3 使用Redis的理由
在Redis里面,用户可以直接使用原子的INCR
命令及其变种来计算聚合数据,并且因为Redis将数据存储在内存里面,而且发送给Redis的命令请求并不需要经过典型的查询分析器(parser)或者查询优化器(optimizer)进行处理,所以对Redis存储的数据执行随机写的速度是很快的。
使用Redis而不是关系数据库或者其他硬盘存储数据库,可以避免写入不必要的临时数据,也免去了对临时数据进行扫描或者删除的麻烦,并最终改善程序的性能。
1.2 Redis数据结构简介
1.2.1 Redis String
String命令
SET、GET、DEL的使用示例
1.2.2 Redis List
List命令
RPUSH、LRANGE、LINDEX、LPOP的使用示例
1.2.3 Redis Set
Set 命令
SADD、SMEMBERS、SISMEMBER、SREM的使用示例
1.2.4 Redis Hashes
Hashes命令
HSET、HGET、HGETALL、和 HDEL的使用示例
1.2.5 Redis Zset
Zset命令
ZADD、ZRANGE、ZRANGEBYSCORE、和ZREM的使用示例