redis系列(01):redis简介

发布时间 2023-12-04 10:11:29作者: 全栈测试笔记

 

本系列汇总,请查看这里https://www.cnblogs.com/uncleyong/p/10950727.html

出现背景

关系型数据库的不足:数据是存储在磁盘上的,磁盘的 I/O 读写瓶颈会直接影响性能

所以,我们可以用速度更快的内存来存储常用但数据量不算大、且结构简单的数据

这样可以较大程度缓解关系型数据库带来的磁盘 I/O 读写瓶颈

 

什么是非关系型数据库

非关系型数据库也称为NoSQL,NoSQL的全称是Not only SQL

没有表结构,用简单的键值方式来存储数据

相比于关系型数据库,由于其存储结构相对简单,在适用于缓存数据库的场景中,可以获得比较高的效率

Key作为数据检索的唯一标识,value作为数据存储的对象,每一个Value都有一个Key与之关联

 

种类:下图可以看到,redis排第一

 

redis介绍

官网:https://redis.io/docs/about/

Redis是一个开源的内存数据库,功能很强大

主要特点是:

1.支持多种数据结构

 

  

  常用的5种:strings, hashes, lists, sets, sorted sets

  说明:

在redis中,key永远都是string类型,value可以是上面列举的类型

命令不区分大小写,但key和value区分大小写

命令可以通过tab补全,补全的命令都是大写

  

2.线程机制

  4.0之前使用单线程,避免了上下文切换

  4.0以及之后开始慢慢支持多线程,直到redis6/7之后才稳定;多线程可以分摊Redis同步读写I/O的压力,以及充分利用多核CPU资源

3.可持久化

  可以把数据从内存永久存储到磁盘,这样可以防止断电等异常情况下数据丢失等问题

  支持RDB(快照)与 AOF(append-only file,完整记录修改数据的命令)

4.支持 Lua 脚本

  当需要保证原子性的时候需要使用 lua 脚本

  lua 脚本能够保证操作的原子性,即所有的操作当作一个操作,要么全部失败要么全部成功

5.支持分布式锁

  可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行

6.支持事务

7.支持发布/订阅

  功能不如专业的mq强大

8.支持主从复制

9.支持sentinel:自动故障转移

10.提供了多种语言的API(java、python...)