浅浅总结Redis

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis作为开源数据库,为开发者提供了多种语言的API。而Redis应用在实际开发中已经很常见了,不仅能作为缓存存储数据,也由于其键值对存储数据的形式而可以作为持久化数据存储。接下来我们浅谈一下Redis的集群和缓存。

一、redis集群

单台redis有读写的瓶颈,容量的瓶颈,单点故障的问题。所以需要用集群来解决。


1.1 主从模式(读写分离)

主:提供可以读和写操作,

从:可以提供读操作。

这种模式下有角色之分,主从模式本质是数据库备份方案,可以把数据备份多份,在多个地方保存。

全量同步:节点初始化的时候(发送持久化文件)

增量同步:节点初始化完成(发送的命令)


1.2 哨兵模式

哨兵主要解决是单点故障问题,它可以对Master进行心跳监控,master宕机后可以从Slave中选举一个出来做Master。

image.png

哨兵如何选举的?

  • 单台哨兵认为master宕机了是主管下线,多台redis认为master宕机了才是客观下线。
  • 要从哨兵中选举出一个Leader出来,由这个哨兵来选举Master。
  • Master选举优先看偏移量,再看优先级,最后看runId


1.3 Cluster模式

Cluster模式是五中心的,每个节点都是平等的,都可以进行读写操作。所以这里解决了redis的读写和容量的瓶颈。

Redis内存有16384个hash槽(保存数据的地方),它会把这些hash槽平均的分配给每个节点。在操作key时通过一个CRC16(算法)%16348=hash槽,再看这个hash槽被分配到了那个redis的实例,然后做对一的保存。

RedisCluster模式可以整个任何一个节点继续搭建主从


二、redis的淘汰机制

2.1 为什么有淘汰机制?

首先内存是有上限的,其次缓存中保存的都是一些热数据,一般来讲这些数据都是有周期性,可能过段时间就"冷"了。而它还在redis中把保存,此时就是有浪费空间了,需要把这些“冷”数据及时的从redis中删除,从而释放空间来保存更多的数据。

任何一个内存数据库都是有淘汰机制的。

2.2 淘汰机制算法

LRU:淘汰掉最长时间没有被访问的(最后一次访问的时间)。

LFU:淘汰最近很少使用的(key使用的频率)

RANDOM:随机(随便删除一个key)

TTL:过期时间

2.3 配置

image.png

三、redis做缓存服务器

减轻MySQL的压力

1、先查询缓存

2、redis没有然后再去查询数据库

有了缓存必然会出现一致性的问题。数据在Redis中保存了,MySQL中也保存了一份。修改这个数据的时候改完MySQL,删除Redis。这个问题安全(数据不一致)和性能(redis)问题


四、缓存穿透

缓存没有,数据库中也没有,比如查询一个不存在或者已经删除的数据。

使用默认值来解决,设置过期时间。


五、缓存击穿

缓存中没有,数据中有。并发的情况下多个请求同时到redis中没有查询到,所以最终到了MyQL中。

    使用锁来解决这个问题。同时多个请求过来,锁机制保证了只能有一个线程拿到锁,其他的线程只能等待,拿到锁的线程先去缓存中查询,没有去MySQL中查询,查完后放到Redis中,把数据返回,释放锁。其他线程会抢到锁,进去从redis中就肯定能查询到。


六、RestTemplate

  • 发送一个请求调用远程接口。
  • Java这里最底层的就是URL(Java网络编程包)
相关实践学习
基于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
目录
相关文章
|
缓存 监控 NoSQL
Redis高可用总结:Redis主从复制、哨兵集群、脑裂...
在实际的项目中,服务高可用非常重要,如,当Redis作为缓存服务使用时, 缓解数据库的压力,提高数据的访问速度,提高网站的性能 ,但如果使用Redis 是单机模式运行 ,只要一个服务器宕机就不可以提供服务,这样会可能造成服务效率低下,甚至出现其相对应的服务应用不可用。
511 0
Redis高可用总结:Redis主从复制、哨兵集群、脑裂...
|
NoSQL Redis
Redis学习7:按次结算的服务控制、微信会话顺序管理(应用场景总结)
现在数据类型五种基本的已经学完了,现在开始应用一个简单的业务场景。
Redis学习7:按次结算的服务控制、微信会话顺序管理(应用场景总结)
|
存储 SQL NoSQL
新人入坑Redis必会的吐血总结(一)
新人入坑Redis必会的吐血总结
175 0
新人入坑Redis必会的吐血总结(一)
|
缓存 监控 NoSQL
Redis常见面试题总结
Redis常见面试题总结
106 0
Redis常见面试题总结
|
数据采集 分布式计算 NoSQL
爬虫识别-爬虫写入 Redis-效果及总结| 学习笔记
快速学习爬虫识别-爬虫写入 Redis-效果及总结
爬虫识别-爬虫写入 Redis-效果及总结| 学习笔记
|
存储 NoSQL 安全
新人入坑Redis必会的吐血总结(二)
新人入坑Redis必会的吐血总结(二)
134 0
|
存储 缓存 负载均衡
Redis cluster去中心化设计的思考与总结
Redis cluster去中心化设计的思考与总结
277 0
|
存储 缓存 监控
redis总结万能手册,熟悉不等于精通;
日常总结:redis线程模型,多路复用原理;单体,哨兵架构,集群架构的自动化安装,解释说明,集群扩容,缩容,选举,主从自动切换策略,应用程序接入……
284 0
redis总结万能手册,熟悉不等于精通;
|
NoSQL Redis
熬夜爆肝总结Liunx环境源码安装Redis
熬夜爆肝总结Liunx环境源码安装Redis
145 0
熬夜爆肝总结Liunx环境源码安装Redis
|
消息中间件 缓存 NoSQL
【Java】来总结一下Nosql数据库之Redis基础知识点
作为开发的程序员对Redis都应该不陌生,Redis是一个Key-Value键值对数据库,也是一个nosql数据库。 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 有了它可以帮助我们提高系统性能。
146 0