(一)初识 Redis

本章主要内容

  • Redis与其他软件的异同
  • Redis的用法
  • 使用Python实例代码与Redis进行简单的互动
  • 使用Redis解决实际问题

1.1 Redis简介

Redis是一个速度非常快的非关系数据库,它可以存储key与五种不同类型的value之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

1.1.1 Redis与其他数据库和软件的对比

图1-1 一些数据库和缓存服务器的特性与功能
Redis In Action 第一章 初识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 Redis提供的五中数据结构映射
Redis In Action 第一章 初识Redis

1.2.1 Redis String

String命令

图1-3 字符串命令
Redis In Action 第一章 初识Redis

SET、GET、DEL的使用示例

图1-4 SET、GET、DEL的使用示例
Redis In Action 第一章 初识Redis

1.2.2 Redis List

List命令

图1-5 List 命令
Redis In Action 第一章 初识Redis

RPUSH、LRANGE、LINDEX、LPOP的使用示例

图1-6 RPUSH、LRANGE、LINDEX、LPOP的使用示例
Redis In Action 第一章 初识Redis

1.2.3 Redis Set

Set 命令

图1-7 Set命令
Redis In Action 第一章 初识Redis

SADD、SMEMBERS、SISMEMBER、SREM的使用示例

图1-8 SADD、SMEMBERS、SISMEMBER、SREM的使用示例
Redis In Action 第一章 初识Redis

1.2.4 Redis Hashes

Hashes命令

图1-9 Hashes命令
Redis In Action 第一章 初识Redis

HSET、HGET、HGETALL、和 HDEL的使用示例

图1-10 HSET、HGET、HGETALL、和 HDEL的使用示例
Redis In Action 第一章 初识Redis

1.2.5 Redis Zset

Zset命令

图1-11 Zset命令
Redis In Action 第一章 初识Redis

ZADD、ZRANGE、ZRANGEBYSCORE、和ZREM的使用示例

图1-12 ZADD、ZRANGE、ZRANGEBYSCORE、和ZREM的使用示例
Redis In Action 第一章 初识Redis

相关文章: