数据库随笔 redis

  1. 什么是redis

官网介绍:

Redis is an open source (BSD licensed), in-memory data structure
store, used as a database, cache and message broker.

也就是准确来讲是个内存数据结构存储工具,可以用于充当数据库,缓存,消息代理

  1. redis作为数据库使用时,是属于非关系数据库,即Nosql

  2. 业务中,如果读操作多于写操作,才有使用redis作为读写缓存的必要

  3. Redis作为缓存读取逻辑(读操作的流程
    在这里插入图片描述

当第一次读取数据的时候,读取 Redis 的数据就会失败(redis中没有缓存数据),此时就会触发程序读取数据库,把数据读取出来,并且写入 Redis 中;
当第二次以及以后需要读取数据时,就会直接读取 Redis,读到数据后就结束了流程,这样速度就大大提高了。

  1. 写操作的流程

在这里插入图片描述
由图可知,每次对数据库进行写入更新都要对redis也执行相同的操作,这会大大影响效率

  1. 高速读/写的场合
    在如今的互联网中,越来越多的存在高并发的情况,比如天猫双11、抢红包、抢演唱会门票等,这些场合都是在某一个瞬间或者是某一个短暂的时刻有成千上万的请求到达服务器,如果单纯的使用数据库来进行处理,就算不崩,也会很慢的,轻则造成用户体验极差用户量流失,重则数据库瘫痪,服务宕机,而这样的场合都是不允许的!

所以我们需要使用 Redis 来应对这样的高并发需求的场合,我们先来看看一次请求操作的流程图:
在这里插入图片描述

我们来进一步阐述这个过程:

当一个请求到达服务器时,只是把业务数据在 Redis 上进行读写,而没有对数据库进行任何的操作,这样就能大大提高读写的速度,从而满足高速响应的需求;
但是这些缓存的数据仍然需要持久化,也就是存入数据库之中,所以在一个请求操作完 Redis 的读/写之后,会去判断该高速读/写的业务是否结束,这个判断通常会在秒杀商品为0,红包金额为0时成立,如果不成立,则不会操作数据库;如果成立,则触发事件将 Redis 的缓存的数据以批量的形式一次性写入数据库,从而完成持久化的工作。
PS:也就是在高负载的情况下,现在redis上进行高速读写,业务结束后再把数据异步批量写入数据库

扫描二维码关注公众号,回复: 9838985 查看本文章
  1. redis对不同数据结构(类型)的存储方式
  • string
    在这里插入图片描述
  • list(链表:可以用来实现队列和栈
    在这里插入图片描述

list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。 (也可以从中间插入和直接修改列值)
这使得list既可以用作栈,也可以用作队列。

上进上出 :栈
上进下出 :队列

  • set(集合:可以利用差集,并集,交集等实现好友推荐等功能在这里插入图片描述
  • hash(哈希:经常用于存储比较复杂的结构,Hash只要求键不一样,比如姓名,年龄等等

在这里插入图片描述
上图中的key1 key2等可以称为哈希表的域(field)

  • sort set(有序化集合:经常被用作排名例如 班级成绩排名

在这里插入图片描述
(注意:图中的rank列实际是没有的)

在sort set中,score这列称之为值,value称之为权

通常是根据score值进行排序的

权必须是全局唯一。
sort set类型操作,如果两个元素的值一样,按照字节顺序排列先后
发布了68 篇原创文章 · 获赞 0 · 访问量 1724

猜你喜欢

转载自blog.csdn.net/qj4865/article/details/104751430