【精华】Redis的2356要点(一篇就够)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 缓存击穿、缓存穿透、缓存雪崩、二级缓存、原子性、2种持久化策略、3种集群方式、5种数据类型及内存存储方式、6种淘汰策略。

在这里插入图片描述

一、redis和缓存相关概念

redis是C语言开发的一个开源的高性能key-value键值对的内存数据库。单进程单线程,线程安全,采用IO多路复用机制。
  • 缓存击穿:大量请求同一个key,当这个key在失效的瞬间,大并发请求直接打到DB上
  • 缓存穿透:频繁请求缓存和数据库中都不存在的数据。
  • 缓存雪崩:缓存大面积同一时间点失效,所有请求直接打到DB上。
  • 二级缓存:当需要缓存大量数据的时候可以使用Redis缓存数据库来保存Mybatis的二级缓存数据。
  • 原子性
    在单线程中,能够在单条指令中完成的操作都可以认为是原子操作,因为中断只 能发生在指令之间。
    在多线程中,不能被其他进程(线程)打断的操作就叫原子操作。

二、redis的2种持久化策略

Redis支持数据的持久化。为了保证效率,数据缓存在了内存中,但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,以保证数据的持久化。

  1. RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中,定时保存。如果你非常关心你的数据,但仍然可以承受数分钟内的数据丢失,那么可以只使用 RDB持久。
  2. AOF:把所有的对 Redis 的服务器进行修改的命令都存到一个文件里(命令的集合)。AOF的默认策略是每秒钟 Fsync 一次,在这种配置下,就算发生故障停机,也最多丢失一秒钟的数据,但处理巨大的写入会降低Redis的性能,且AOF 的文件体积通常要大于 RDB 文件的体积。

Redis 默认是快照 RDB 的持久化方式,但Redis 支持同时开启 RDBAOF,系统重启后,Redis 会优先使用 AOF 来恢复数据,因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整,这样丢失的数据会最少。

三、redis的3种集群方式

  1. 主从复制:Redis支持数据的备份,即master-slave模式的数据备份,可以一主多从。缺点:主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
  2. 哨兵模式:哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有。哨兵的作用就是监控Redis系统的运行状况。它的功能包括两个:(1)监控主服务器和从服务器是否正常运行。(2)主服务器出现故障时自动将从服务器转换为主服务器。
  3. 集群:redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容。Redis-Cluster采用无中心结构,它的特点如下:

    • 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

      • 节点的fail是通过集群中超过半数的节点检测失效时才生效。
      • 客户端与redis节点直连,不需要中间代理层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

在这里插入图片描述

四、redis的5种数据类型及内存存储方式

redis内部使用redisObject类型表示Key和Value对象。

在这里插入图片描述

如上图所示:type表示一个value对象是何种数据类型,encoding表示不同数据类型再redis内部的存储方式。比如:type=string encoding=raw or int

string

Value 可以是字符串,也可以是数字。String 类型是二进制安全的,意思是 Redis 的 String 类型可以包含任何数据,比如 jpg 图片或者序列化的对象。String 类型的值最大能存储 512M。

hash

是一张 String 的 Key 和 Value 的映射表,Hash 特别适合存储对象。常用命令:hget,hset,hgetall 等。

list

string类型的列表,按照插入顺序排序,可以用做消息队列。可以添加元素到头部或尾部。常用命令:lpush、rpush、lpop、rpop、lrange(获取列表片段)。

set

string类型的无序集合,自动去重,且提供了判断某个元素是否在set中。常用命令:sadd、spop、smembers、suion等。

zset(sotred set)

string类型的有序集合,自动去重,自动排序。通过用户提供的double类型的score参数来为成员排序。
在这里插入图片描述

五、redis的6种淘汰策略

  • 从已设置过期时间的KV集中选择(3种)

    • 最近最少用
    • 剩余时间最短
    • 随机选择
  • 从所有KV集中选择(2种)

    • 最近最少用
    • 随机选择
  • 不淘汰

在这里插入图片描述

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
存储 NoSQL 关系型数据库
【Redis从头学-0】一张思维导图对Redis做出基本介绍
【Redis从头学-0】一张思维导图对Redis做出基本介绍
71 0
|
8月前
|
存储 缓存 NoSQL
头条高级面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现
0%的人知道Redis 5种最基本的数据结构,只有不到10%的人知道8种基本数据结构(5种基本+bitmap+GeoHash+HyperLogLog),只有不到5%的人知道9种基本数据结构(5.0最新版本数据结构Streams),只有不到1%的人掌握了所有9种基本数据结构以及8种内部编码,掌握这篇文章的知识点,让你成为面试官眼中Redis方面最靓的仔! 说明:本文基于Redis-3.2.11版本源码进行分析。
59 0
|
7月前
|
缓存 NoSQL Java
【Redis从头学-完结】Redis全景思维导图一览!耗时半个月专为Redis初学者打造!
【Redis从头学-完结】Redis全景思维导图一览!耗时半个月专为Redis初学者打造!
123 0
|
9月前
|
存储 SpringCloudAlibaba 运维
Redis高级知识点总结
在 Redis 6.0 中,非常受关注的第一个新特性就是多线程。这是因为,Redis 一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF 重写),但是,**从网络 IO 处理到实际的读写命令处理,都是由单个线程完成的**。随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 IO 的处理上,也就是说,单个主线程处理网络请求的速度跟不上底层网络硬件的速度
229 0
Redis高级知识点总结
|
10月前
|
消息中间件 缓存 运维
不要小看一个Redis!从头到尾全是精华,阿里Redis速成笔记太香了
Redis想必大家都听说过,不管是面试还是工作上我们都能见到。但是Redis到底能干什么?又不能干什么呢?(如下图)
腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华
作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。 所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华
|
NoSQL 网络协议 程序员
7年资深后端带你读懂Redis源码,共总结了这7点心得
7年资深后端带你读懂Redis源码,共总结了这7点心得
68764 2
7年资深后端带你读懂Redis源码,共总结了这7点心得
|
SQL NoSQL 安全
|
存储 缓存 监控
Redis学习最终版:面试题合集
Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。
Redis学习最终版:面试题合集
|
存储 监控 NoSQL
2021-Java后端工程师面试指南-(Redis)(下)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
125 0