基于内存操作的Redis数据库--详解

news/2024/11/17 1:39:23/

目录

基本概念

基本操作

redis的五个基本类型

Redis-key(不区分大小写)

字符串 string

Redis的特殊类型

geospatial地理空间

 事务

Redis的持久化

RDB(.rdb)

触发机制

优点

 缺点

AOF(.aof)

优点

缺点

Redis发布订阅

相关命令

Redis主从复制

哨兵模式

哨兵在做什么?

Redis缓存穿透和雪崩

缓存穿透

解决办法

缓存击穿

解决办法

缓存雪崩

解决办法


基本概念

Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。(使用内存存储的非关系型数据库)

默认有16个数据库

核心:单线程操作很快,Redis是将所有数据全部放在内存中的,所以说使用单线程去操作,效率就是最高的,相比于多线程,减少了CPU上下文切换的耗时。对于内存系统来说,没有上下文切换效率就是最高的,多次读写都是在一个CPU上的。

Redis是C语言实现的,官方数据:读:110000/s 写: 80000/s,完全不比同样使用key-value的Memcached差,速度与内存和网络带宽有关

基本操作

select                      切换数据库

dasize                     查看数据大小

keys *                      查看所有的key值

flushdb   flushall      清空当前数据库和清空所有数据库

redis的五个基本类型

Redis-key(不区分大小写)

SET               设置key

GET               查看key的值

EXPIRE         设置过期时间(实时刷新返回量较高的数据)

TTL                查询过期时间

EXISTS          判断当前的key是否存在

KEYS *           查看当前所有的key

DEL KEY        删除当前的key

TYPE              查看key存储的value的类型

字符串 string

列表 list

集合 set

srandmember set value 做抽奖很容易

Redis的特殊类型

geospatial地理空间

 geoadd         添加地理位置

geopos           返回给定名称和经纬度

geodist           返回给定的两个位置之间的距离

geohash          返回一个11个字符的geohash字符串

georadius        以给定的经纬度为中心,寻找某一半径内的元素

 事务

  1. 开启事务···multi
  2. 命令入队···...
  3. 执行事务···exec

Redis的持久化

redis是内存数据库,如果不将内存中的数据保存到磁盘中,一旦服务器进程退出,服务器中的数据库状态就会消失,所以redis提出了持久化功能。

RDB(.rdb)

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是快照,恢复时将快照文件直接读到内存中。单独创建一个子进程,先将数据写入到一个临时文件中,等到持久化结束,再用这个新的临时文件替换上一次的持久化好的文件。

就是在做文件复制

触发机制

  1. 保存时
  2. flushall
  3. 退出redis

优点

  1. 适合大规模的数据恢复
  2. 对数据的完整性要求不高

 缺点

  1. 需要一定的时间间隔,如果redis宕机,最后一次保存的持久化文件之后的数据都没有了
  2. fork进程的时候,需要占用一定的内存空间

AOF(.aof)

将所有的写操作的命令都记录下来,在回复的时候将所有的命令都执行一遍

也就是保存命令

优点

  1. 每一次修改都会同步,文件的完整性比较好
  2. 每秒同步一次,可能只会丢失1s的数据

缺点

  1. 相对于数据文件,aof远远大于rdb(因为aof要保存整条命令,然后重新运行,rdb只需要保存已经运行好的临时文件)
  2. 修复速度慢
  3. 运行效率慢

Redis发布订阅

类似一种消息队列

  1. 订阅者订阅通道
  2. 发布者发布
  3. 订阅者接收

相关命令

Redis主从复制

将一个Redis服务器的数据复制到其他的redis服务器。前面的是主节点,后面的是从节点。

主节点写数据,从节点读数据,从节点每次从主节点处更新所读数据

作用

  1. 数据冗余:实现了数据的热备份
  2. 故障恢复:主节点出现问题,从节点便可转变为服务的提供者,从节点提供主节点的数据备份
  3. 负载均衡:读写分离,写场景连接主节点,读场景连接从节点,分担服务器负载
  4. 高可用的基石:是哨兵和集群的实现基础

默认下,每台Redis服务器都是主机,只需要配置从机和从库 

哨兵模式

 自动投票选举主机:当主服务器宕机后,需要把从服务器切换为主服务器,优先考虑哨兵模式,自动版本的从库切换主库模式。

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个单独的进程,作为进程,他会独立运行。哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

哨兵在做什么?

  1. 发送命令
  2. 切换主机
  3. 注:多个哨兵监控Redis服务器(怕误判)

Redis缓存穿透和雪崩

缓存穿透

缓存中没有查到,向持久层(数据库)发出查询请求,发送请求的太多了就会给数据库造成很大的压力,这时候就相当于缓存穿透。

解决办法

  1. 布隆过滤器···布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合的则丢弃,从而避免持久层数据库的查询压力
  2. 缓存空对象···当存储层不命中后,及时返回的空对象也将其缓存起来,同时会设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护后端数据源(第二次以及后几次查询时,直接返回第一次保存的查询返回

缓存击穿

一个key非常热点,在不断扛着大量并发,大并发集中对这个点进行访问,在这个key失效的瞬间,持续的大并发穿破缓存,直接请求数据库

解决办法

  1. 热点数据永不过期···不设置过期时间,就不会出现热点key过期后产生的问题
  2. 加互斥锁···使用分布式锁,保证对于每一个key来说同时只有一个线程去查询后端服务,等于把高并发的压力转移给了分布式锁,对于分布式锁的要求比较高

缓存雪崩

指在某一时间段内,缓存集中过期失效,或者Redis宕机,造成数据库的周期性压力波峰

 致命的雪崩是缓存服务器的某个节点宕机或断网,对数据库服务器造成的压力是不可预估的,很有可能就把数据库压宕机

解决办法

  1. Redis高可用···增设几台Redis,搭建缓存服务器集群
  2. 限流降级···加锁或者队列,转移压力
  3. 数据预热···给不同的key设置不同的过期时间,让缓存失效的时间点尽量均匀。

http://www.ppmy.cn/news/191204.html

相关文章

3GPP R16 HST

3GPP R16高铁场景为了能够支持最高3.6GHz载波频率以及最高500km/h的速度,提出了增强RRM要求和终端解调能力要求。 在增强RRM要求的维度,对intra-RAT和inter-RAT测量提出了新的要求。其中,intra-RAT测量包括NR小区重选要求、NR小区识别要求、波…

i51155g7和i710510u哪个好

英特尔i7-10510U仍然以14nm工艺生产,四核八线程,主频4.3GHz,最大睿频为4.89GHz,英特尔i5-1135G7 4核 8线程,主频 2.4GHz,睿频 4.2GHz,8MB 三级缓存。 选i7 10510u还是i51155g7这些点很重要!看完…

win11和win10哪个好?

随着电脑的不断更新迭代,现在新出来的电脑都是win11系统,很多人会疑问win11和win10哪个比较好?哪个更稳定,今天您带来win11和win10两大系统对比。 1.win11和win10流畅性 现在经过不断的测试实验,发现win11在单线程和多线程运行…

i710700和i510400f哪个好

I7 10700单核频率可达4.7G,全核频率可达4.6G;i5 10600KF单核频率可达4.8G,全核频率为4.5G。 组装电脑选i710700还是i510400f怎么搭配更合适这些点很重要http://www.adiannao.cn/du 从规格来看,还是i7 10700稍微占优,但…

i7 10700k和10700kf哪个好 i7 10700k和10700kf区别

i7-10700K拥有8核16线程,基础频率3.8GHz,全核睿频4.7GHz,在Turbo Boost MAX 3.0技术加持下可以把两个核心睿频至5.1GHz,L3缓存16MB,TDP 125W,整合UHD 630核显。 选i7 10700K还是i7 10700Kf 这些点很重要!看…

i3 10100f对比i7 4790k哪个好

i3-10100F基于祖传的14nm制程工艺采用4核8线程设计,基础频率3.6GHz,最大睿频可达4.3GHz,搭配6MB共享L3高速缓存,支持双通道DDR4-2666内存,TDP为65瓦。 组装电脑选i3 10100f还是i7 4790k,怎么搭配更好 这些点…

达人评测 i3 13100f和i3 12100F选哪个好 i312100F和13100f差距

i3 13100f采用10nm工艺 主频 3.3GHz 最高睿频 4.3GHz 四核心 八线程 三级缓存 12MB 热设计功耗(TDP) 60W支持最大内存 128GB 内存类型 DDR4 3200MHzDDR5 4800MHz内置核显UHD 730 组装电脑选i3 13100f还是i3-12100F怎么搭配更合适这些点很重要http://www.adiannao.cn/du i3-1210…

i7 10700kf和i9 10900kf 哪个好

i9-10900KF 为 10 核 20 线程,主频 3.7GHz,睿频可达 5.30 GHz,20MB 三级缓存,125W TDP。 选i7 10700kf还是i9 10900kf这些点很重要!看完你就知道了 https://list.jd.com/list.html? i7-10700KF 拥有 8 核 16线程,基…