1. 什么是Redis
- Redis是远程的。 它有客户端和服务端两个部分,客户端和服务端可以部署在不同的机器上,它们之间是通过Redis自定义的协议进行传输和交互的。我们平时说的Redis,通常指的是服务端,只有特殊的错误定位时,才会提及客户端。
- Redis是基于内存的。 它的所有数据和结构都是存储在内存中,这就代表的Redis的所有操作都是非常高速的,性能远远优于硬盘运行的MySQL,但是它是一个比较吃内存的软件。
- Redis是非关系型数据库。 本质是一个数据库,存储数据的,但它和mysql是不同的,mysql是关系型数据库,redis不是。关系型数据库在存储之前必须定义好所谓的数据字典,后续的数据按照数据字典进行存储,而redis就不需要定义存储数据字典。
2. Redis的应用场景?
- 缓存。 鉴于Redis的高性能,通常会将它当作一个缓存来使用,当系统接口速度比较慢时,可以把某个接口的数据缓存起来,当下次请求时,就不需要去mysql数据库中做比较耗时的sql操作了,而是直接去Redis缓存中将我们需要的数据库数据提取出来,这个是提升系统性能最常用的方法之一。
- 队列。 Redis中提供了一个list接口,这个接口提供了pop和push操作。Redis保证了pop和push是原子性,基于这个结构和原子性,我们就可以把Redis当作队列来使用,使用push来插入队列的元素,使用pop来弹出队列的元素。
- 数据存储。 可以直接把Redis当作数据存储来使用,所有的增删改查都直接在Redis中操作,不需要再借用mysql进行数据存储。我们可以直接这么做是因为Redis有非常完备的硬盘持久化的机制。它有两种持久化的机制,配合这两种持久化的机制,我们可以把我们的Redis数据定期持久化到硬盘中,这样就可以保证Redis数据的完整性和安全性。
windows安装Redis
3. Redis的五种数据类型
数据类型 | 存储的值 | 读写能力 |
String | 可以是字符串、整数或浮点数,统称为元素 | 对字符串操作;对整数类型加减 |
List | 一个序列集合且每个节点都包好了一个元素 | 序列两端推入、或弹出元素、修剪、查找或移除元素 |
Set | 各不相同的元素 | 从集合中插入或者删除元素 |
Hash | 有key-value的散列组,其中key是字符串,value是元素 | 按照key进行增加删除 |
Sort Set | 带分数的score-value有序集合,其中score为浮点,value为元素 | 集合插入,按照分数范围查找 |
3.1 string类型
key | value(string/int/float) |
3.2 list类型
list类型是一个有序列表,允许在左边和右边进行pop和push操作
3.3 set类型
set类型存储的是无序的元素,且每个元素各不相同
3.4 hash类型
hash也叫散列类型,可以将多个键值对存储到Redis键中去
3.5 sort set类型
也叫有序分数集,和hash类型相似,它存储的也是映射
4. Redis的特性
- 速度快(10w OPS)。
- Redis的数据存储在内存中,服务器内存读取是非常快的
- 基于C语言编写的(5000line)
- 单线程
- 持久化
- Redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘上。
- 多种数据结构
- 支持多种编程语言
- 功能丰富
- 简单
- 主从复制
- 高可用、分布式