学习笔记之Redis
Redis是一款将数据通过键值对(k,v)存储并支持多种数据结构的内存存储系统,也可以称之为No-SQL型数据库,Redis的读速度可以达到10W+QPS,写速度可以达到8W+QPS。
支持的数据结构
1.String,字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。
2.Hash,类似于Java中的hashmap,是一个key+Entry的数据结构
3.List,有序的字符串列表,能从list的头部或尾部添加删除元素。
4.Set,类似于Java中的Set,不能有重复的数据
5.ZSet,有序的集合类型,set时关联了一个分数,根据分数排序。
Redis是单进程单线程,性能为什么这么快:
- 与传统的sql数据库不同,redis的读写都是直接操作内存,比访问磁盘快得多。
- 数据结构简单,对数据操作也简单
- 使用了IO多路复用技术,避免了大量的无用操作
持久化
Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF。前者会根据指定的时间间隔把数据保存到硬盘,后者在每次执行命令后将命令本身记录下来。
- RDB
RDB方式持久化数据时会根据用户指定的时间间隔把数据保存到硬盘,保存时会fork出一个子进程来保存数据,不会影响当前线程。保存数据时先将数据写到一个临时文件,写入成功后替换掉原来的文件。适合大规模的数据恢复,缺点服务器宕机时可能造成部分数据丢失。 - AOP
Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。Redis 可以在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写, 重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。AOP的数据完整性和一致性较高,但是随着AOF文件增大,恢复的速度会变慢。