-
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
-
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
与Mysql的区别:
- Redis是非关系型数据库(NoSql),和memcached都是缓存数据库。
- redis用于存储使用相对频繁的数据到内存中,mysql用于存放持久化数据到磁盘中。
- redis读取速度快,mysql相对速度较慢。
- redis数据类型:字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset);mysql数据类型,大致三类:数值,日期,字符
- Redis不支持ACID(原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability))
- Redis基于sql的结构化查询存储,处理复杂的关系,需要即席查询。
一般来说,mysql用于写入和更新,redis用于读取。 这样就说 mysql->redis的同步用的比较多。 mysql作为数据持久化和管理比redis好太多,redis大多只用来做 数据读取缓存、队列、锁、等等的使用. 因为需求的不同,要根据具体业务场景去选型,一般都是配合使用。
与memcached的区别:
- Redis支持更丰富的数据类型
- memcached不支持持久化
Redis的持久化
Redis持久化分为两种:
- 半持久化(RDB):把修改的操作写入追加的记录文件
- 全持久化(AOF):把更新的数据紫萼如磁盘
并在此基础上实现了主从复制(master-slave 同步)。
Redis的主从复制
目的:实现读写分离(能写的也能读,但能读的只能读)。
Redis的应用场景
- 配合关系关系型数据库做高速缓存。
如:存储高频词,热门访问的数据,降低数据库IO;
用于分布式架构,做session共享。 - 由于其拥有持久化能力,利用其多样的数据结构存储特定的数据