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的五种数据类型

Redis 与数据库 redis和数据库_Redis 与数据库

数据类型

存储的值

读写能力

String

可以是字符串、整数或浮点数,统称为元素

对字符串操作;对整数类型加减

List

一个序列集合且每个节点都包好了一个元素

序列两端推入、或弹出元素、修剪、查找或移除元素

Set

各不相同的元素

从集合中插入或者删除元素

Hash

有key-value的散列组,其中key是字符串,value是元素

按照key进行增加删除

Sort Set

带分数的score-value有序集合,其中score为浮点,value为元素

集合插入,按照分数范围查找

3.1 string类型

key

value(string/int/float)

Redis 与数据库 redis和数据库_数据_02

3.2 list类型

list类型是一个有序列表,允许在左边和右边进行pop和push操作

Redis 与数据库 redis和数据库_Redis 与数据库_03

Redis 与数据库 redis和数据库_持久化_04

3.3 set类型

set类型存储的是无序的元素,且每个元素各不相同

Redis 与数据库 redis和数据库_数据_05

3.4 hash类型

hash也叫散列类型,可以将多个键值对存储到Redis键中去

Redis 与数据库 redis和数据库_持久化_06

3.5 sort set类型

也叫有序分数集,和hash类型相似,它存储的也是映射

Redis 与数据库 redis和数据库_数据_07

4. Redis的特性

  • 速度快(10w OPS)。
  • Redis的数据存储在内存中,服务器内存读取是非常快的
  • 基于C语言编写的(5000line)
  • 单线程
  • 持久化
  • Redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘上。
  • 多种数据结构
  • 支持多种编程语言
  • 功能丰富
  • 简单
  • 主从复制
  • 高可用、分布式