美文网首页
redis初识

redis初识

作者: 镜中无我 | 来源:发表于2019-10-09 16:21 被阅读0次

redis是Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,那我们为什么要使用redis呢?

为什么使用redis
目录
  • Redis为什么速度这么快?
  • 谈谈Redis有哪些应用场景?
  • 一对多的关系表,使用Redis设计会用到哪些数据结构类型?
  • Redis的ZSet集合应用场景有哪些?
  • 如何使用Redis完成订单列表场景?
  • Redis同时打开AOP与RDB持久化操作后,请描述Redis在恢复数据时加载的顺序?
接下来我们来一一解决这些问题

一、redis为什么那么快?

从redis的存储机制:
  • 内存数据库,基于key-value的nosql数据库,内存操作反应迅速
  • 高效的数据类型: 五种值类型对应着七种数据结构,更加细粒度的内存选型使得内存利用率更高,因势利导,充分发挥内存操作的效率
从redis的运行机制:

redis为什么选择单线程?官方解释是因为cpu不是redis的性能瓶颈,而内存和网络带宽才是。所以顺理成章就应该设计成单线程的,但是事实上我觉得原因很简单,因为单线程确实也快,那么单线程更简单为什么不用呢?另外,这个快是没法定义的,所以大可能以后还会在因为某些场景的原因引入多线程
贴士:使用ps -T -p PID可以查看进程底下的线程,在4.0版本以后引入了多线程机制

  • redis是单线程的数据库,数据库访问对应io管理和io处理在一个线程中串行完成,避免了线程或者进程切换的开销,以及数据同步带来的编程复杂性和效率损失;
  • 单线程实现的机制是基于最高效的epoll(不同环境做编译时适配)多路复用机制,该机制本身效率级高;
  • redis的底层模型不太一样(主要是通信机制)
  • 当然redis在面对高并发场景下,也提供了分布式集群(基于主从复制),哨兵等高可用模型

注意:因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也会下降。而单一线程也只能用到一个CPU核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-master或者master-slave的形式,耗时的读命令可以完全在slave进行。

2. redis被用于哪些场景

image.png
补充:redis是一种nosql数据库适合可扩展性强的数据存储,对较大数据处理比较快,分布式方面的应用也比较突出;但是对于结构化查询不太适合,虽然支持事务操作,但是单线程执行效率比较低。

3. 一对多的关系表,使用redis设计的时候会用到哪些数据结构类型

注意:我们在进行数据库转储的时候,更多的是关注value值本身,也就对于关系型数据库我们可能会优先考虑将单个元组的数据作为value值(key可以自定义,也可以使用主键),这个时候使用hashmap的效率相对比较高,但是如果仅仅存储某一列的值,我们又会优先使用set,zset,list等数据类型作为值。

下图是一个使用hash作为值保存数据库关系表的方式


image.png

redis的ZSet,list集合应用场景有哪些

前者按照分值顺序有序排列适合作为排行榜等,后者按照插入时间顺序排列适合当做有序队列

注意:ZSet的底层数据结构会根据数据量的大小进行转储,数据量大的时候采用跳表

redis的两种持久化方式

image.png
AOF持久化
image.png
references:

https://juejin.im/entry/5b7cfe976fb9a01a13366d95

相关文章

  • Redis使用介绍

    目录: 1 Redis初识 1.1 Redis介绍 1.2 Redis功能特性介绍 1.3 Redis...

  • Redis从入门到应用

    初识Redis Redis概念 Redis安装 Redis的五种数据类型 操作Redis PHP的Redsi扩展 ...

  • 初识 Redis

    初识 Redis Redis 全称 REmote Dictionary Server. Redis 是一种基于键值...

  • Redis 初识

    初识 Redis 《 Redis 开发与运维》的学习笔记,希望大家多多指导。 什么是 Redis Redis 的全...

  • redis学习历程

    Redis初识 Redis安装与启动 Redis 常用API 理解与使用 Redis java客户端使用(单机版,...

  • 初识redis

    redis简介 redis是一种基于键值对key、value的NoSQL内存数据库,同时它会把内存的数据利用快照和...

  • 初识Redis

    Redis的安装和启动 这部分在之前的博客已经写过,这里不再赘述,提供两个以前的博客传送门。Redis的安装Red...

  • redis初识

    redis典型应用场景 1. 缓存系统 2. 计数器 3. 消息队列系统 4.排行榜 5.社交网络 6.实时系统 ...

  • Redis初识

    https://coding.imooc.com/learn/list/151.html Redis是什么 1.开...

  • Redis初识

    Redis的作者是Salvatore Sanfilippo(antirez)。该作者在制作一个网站中,发现他一开始...

网友评论

      本文标题:redis初识

      本文链接:https://www.haomeiwen.com/subject/rjfwpctx.html