第1章 初识Redis

推荐书籍

《Redis实战》Josiah L.Carlson 著

Redis

Redis是一个内存数据库(或者说内存数据结构)服务器

  1. Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。
  2. Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库
  3. 通过复制、持久化和客户端分片(client-side sharding)等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。

用Redis对自己的项目进行一些简单的优化

Redis简介

  • Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能
  • Redis属于人们常说的NoSQL数据库或者非关系数据库:Redis不使用表,它的数据库也不会预定义或者强制要求用户对Redis存储的不同数据进行关联
  • 许多用户只会在Redis的性能或者功能是必要的情况下,才会将 数据存储到Redis里面:如果程序对性能的要求不高,又或者因为费用原因而没办法将大量数据存储到内存里面,那么用户可能会选择使用关系数据库,或者其他非关系数据库。

一些数据库和缓存服务器的特性与功能

Redis特性

持久化

在使用类似Redis这样的内存数据库时,一个首先要考虑的问题就是当服务器被关闭时,服务器存储的数据将何去何从?

  • 时间点转储:point-in-time dump,转储操作既可以在 “指定时间段内有指定数量的写操作执行” 这一条件被满足时执行。
  • 追加: append-only 将所有修改了数据库的命令都写入一个追加文件里面,用户可以根据数据的重要程度,将只追加写入设置为 从不同步、每秒同步一次或者每写入一个命令就同步一次

主从复制特性

为了扩展Redis的读性能,并为Redis提供故障转移(failover)支持,Redis实现了主从复制特性:执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本(copy);之后主服务器执行的写命令,都会被发送给所有连接着的从服务器去执行,从而实时地更新从服务器地数据集。
因为从服务器包含的数据会不断地进行更新,所以客户端可以向任意一个服务器发送读请求,以此来避免对主服务器进行集中式的访问。

使用Redis的原因

  • 对大部分数据库来说,对表里面的行进行更新是一个速度相当慢的操作,因为这种更新除了会引起一次随机读之外,还可能会引起一次随机写。而在Redis里面,用户可以直接使用原子的(atomic)INCR命令及其变种来计算聚合数据,并且因为Redis将数据存储在内存里面,而且发送给Redis的命令请求并不需要经过典型的查询分析器或者查询优化器进行处理,所以对Redis存储的数据执行随机写的速度总是非常迅速的
  • 使用Redis而不是关系数据库或者其他硬盘存储数据库,可以避免写入不必要的临时数据,也免去了对临时数据进行扫描或者删除的麻烦,并最终改善程序的性能。

Redis的五种数据结构

Redis拥有5种数据结构以及操作这5种数据结构的命令

  • 字符串 STRING(可以时字符串、整数或者浮点数
  • 列表 LIST
  • 集合 SET
  • 散列 HASH (包含键值对的无序散列表)
  • 有序集合 ZSET
    Redis提供的5中结构

术语

non-relational database: 非关系数据库
primary database: 主数据库
auxiliary database: 辅助数据库
primary storage: 主存储
secondary storage: 二级存储
in-memory: 内存存储
bulk operation: 批量操作
master/slave replication: 主从复制
master/master replication: 主主复制
multi-master replication: 多主复制
parser: 查询分析器
optimizer: 查询优化器
semantics: 语义

参考链接

完整的Redis命令列表

猜你喜欢

转载自blog.csdn.net/DMW2016/article/details/83713251