redis学习笔记

目录

redis简介

redis特性

redis应用场景

Redis使用方式

Redis底层原理

自建集群和云产品的特点与区别

云数据库Redis容灾架构演进

云redis特性

1.架构灵活

2.数据安全

3.高可用性

4.弹性扩展

5.智能运维

云redis应用场景

1.游戏行业应用

2.电商行业应用

3.视频直播类应用

Redis常见问题


redis简介

redis是一个nosql(not only sql不仅仅只有sql)数据库,翻译成中文叫做非关系型型数据库。

redis特性

  • 存取速度快,Redis的所有数据都是存放在内存中的,所以把数据放在内存中是Redis速度快的最主要原因。Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。String, List, Hash, Set, Sorted Set, Geo, HyperLogLog, Bitmap, Stream 等。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • Redis哨兵模式,监控、提醒、自动故障转移

  • Redis事务MULTI:开启事务,其后执行的命令都将被存入命令队列,直到执行EXEC,这些命令才会被原子执行[begin transaction],DISCARD:事务回滚[rollback],WATCH监视key

redis应用场景

  1. 实现会话缓存(session cache)
  2. 队列,由于redis中value数据结构的特性,可以实现一些缓存队列(秒杀,抢购,12306等)关于redis队列的实现方式有两种:1、生产者消费者模式。2、发布者订阅者模式。【redis】Redis中的队列list实现秒杀活动抢购_天涯共明月的博客-CSDN博客_redis队列实现秒杀
  3. 排行榜,同样的sorted set能轻易地帮我们实现这一功能(微博热搜)使用redis进行排行榜的小秘诀 - 简书
  4. 发布/订阅,redis支持这一特性,但是使用较少,订阅新闻频道(体育,军事等),关注大V,关注好友,系统消息广播。你还不了解Redis的发布/订阅功能与Redis的Stream吗_Hollis的技术博客_51CTO博客
  5. 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等Redis实现计数器---接口防刷_当年的春天的博客-CSDN博客_redis实现计数器
  6. cookie自动过期,限时优惠价格,限制每分钟的访问次数
  7. 分布式锁  Redis分布式锁_冯小鸟的探戈的博客-CSDN博客_redis分布式锁 
  8. 位图,签到记录,redis内构建一个足够长的数组,每个数组元素只能是0和1两个值,然后这个数组的下标index用来表示用户id(必须是数字哈),那么很显然,这个几亿长的大数组就能通过下标和元素值(0和1)来构建一个记忆系统。Redis位图实现7天连续签到_weixin_45970536的博客-CSDN博客_redis 连续签到
  9. 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用) 分布式集群架构中的session分离。 聊天室的在线好友列表。 任务队列。(秒杀、抢购、12306等等) 应用排行榜。 网站访问统计。
  10. 数据过期处理(可以精确到毫秒)(发送验证码)

Redis使用方式

SpringBoot集成Redis

1.在pom里导入一个jar包

2.配置redis的ip和端口号,密码,连接池

3. 注入Template开始用

Redis底层原理

1.数据持久化原理?

redis的持久化分为两种方法,在通常使用的过程有RDB和AOF两种最常使用

AOF模式默认条件下是封闭状态,如果需要开启则需要修改配置文件

只要开启了AOF模式,则持久化的方式以AOF模式为主

开启AOF持久化方式:appendonly yes

(1)数据要求不严谨的时候,可以选用RDB模式

(2)不允许数据丢失,则选用AOF模式

(3)双选,需要搭建主从结构,主机RDB,从机AOF,可以保证业务允许。

 2.redis主从备份模式机器原理?

 redis集群方式中,为了避免单点故障,通常在实际中需要建立分布式集群来维护实际生产业务。在redis服务中提供了一种主从备份模式,就是一台主服务可以有从节点服务,一旦主服务因为意外而宕机了,系统立马就将从节点身份变成主节点服务,这样继续提供服务,就不会出现因主节点宕机而产生单点故障的情况。
主从备份模式是单向数据拷贝的,只能从主节点向从节点备份数据。

主从备份模式的作用?

 a>数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

 b>故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

 c>负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

 d>高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,所以说主从复制是Redis高可用的基础。

手动操作:
slaveof <masterip> <masterport>,直接再启动服务是就指定要成为谁的从属节点。

在从属服务客户端使用命令:slaveof  no  one ,即可解除该服务的从属关系,就是自身也是一个主服务,可以行自由的读写操作。

主从模式的哨兵监控机制?

哨兵模式实际使用中,根据实际情况至少使用三个哨兵机制来监控主从模式结构。比如说,在一台服务上可以启动多个redis服务,多台机器,每台机器至少启动一个哨兵服务来监控主从模式结构,目的是为保证系统能持续性的提供服务,不至于因为宕机造成终端服务,从而影响业务。

redis哨兵模式的配置方法参考:Redis哨兵(Sentinel)模式的配置方法及其在Java中的用法

3.redis key 过期清理的原理?

定期清理+懒汉式清理。隔一段时间进行一次清理,清除掉过期的 key。比如一分钟或者是十分钟清理一次。同时使用懒汉式清理,每次获取key的时候能判断一下,是否过期,是否需要清理。

4.内存策略

redis服务器运行在内存中,数据也在内存中保存. 如果一直往里存,总有一天内存资源不够用,所以需要研究如何优化内存.

(1)LRU算法
维度:T 时间
LRU:least recently used,最近最少使用
(2)LFU算法
维度:引用的次数,最不常使用
LFU:least frequently used
(3)随机算法
随机算法:灭霸的响指

(4)TTL算法
说明:将设定了超时时间的数据提前删除
key1:ttl 100秒
key2:ttl 10秒
先删除key2

自建集群和云产品的特点与区别

云数据库Redis版(ApsaraDB for Redis)是兼容开源Redis协议标准、提供混合存储的数据库服务,基于双机热备架构及集群架构,可满足高吞吐、低延迟及弹性变配等业务需求。

硬件部署在云端,提供完善的基础设施规划、网络安全保障和系统维护服务,用户可以专注于业务创新。

相比自购服务器搭建Redis数据库,云数据库Redis在数据安全、运维投入、内核优化等方面都有一定的优势。

对比项云数据库Redis自建Redis
安全防护事前防护: 事前防护:
  • 需自行构建网络安全体系,成本高,难度大。
  • 社区版Redis的默认访问配置存在安全漏洞,可能导致Redis数据泄露。
  • 无账号鉴权体系。
事中保护:SSL加密访问事中保护:需要自行通过第三方工具实现SSL加密访问。
事后审计:审计日志事后审计:无审计功能。
备份恢复企业版(性能增强型)支持数据闪回功能,可以恢复指定时间点的数据。更多信息,请参见通过数据闪回按时间点恢复数据仅支持一次性全量恢复。
运维管理
  • 支持十余组监控指标,最小监控粒度为5秒。更多信息,请参见监控指标说明
  • 支持报警设置
  • 可根据需求创建多种架构的实例,支持变配到其它架构和规格。
  • 提供基于快照的大key分析功能,精度高,无性能损耗。更多信息,请参见离线全量Key分析
  • 需使用管理方式复杂的第三方监控工具实现服务监控。
  • 改变规格或架构的操作复杂,且需要停止服务。
  • 支持基于采样的大key分析,统计粗糙,精度较低。
部署和扩容即时开通,弹性扩容。需要自行完成采购硬件、机房托管、部署机器等工作,周期较长,且需要自行维护节点关系。
高可用
  • 需要自行部署基于哨兵模式的机房内高可用架构。
  • 可基于哨兵模式搭建同城容灾架构。
  • 高可用性由哨兵机制保障,搭建成本高,且在业务高峰期决策效率低,可能发生脑裂导致业务受损。
内核优化
  • 6.0以上版本支持多IO线程以增强性能,性能至多提升2倍,且CPU资源消耗高。
  • 可采用SSDB、Pika等持久化存储方案,但对Redis协议的兼容度低,仅支持key级别冷热数据管理,大key交换成本高,管理困难。

云数据库Redis容灾架构演进

当云数据库Redis实例因不可预料的原因(例如设备故障、机房断电等)发生故障,容灾机制可用于保障数据的一致性和业务可用性。云数据库Redis提供多种灾备方案供您选择,可满足不同的业务场景。

图 1. Redis容灾架构演进

云redis特性

云数据库Redis版支持多种架构,数据可持久化存储,可用性高,且支持弹性扩展和智能运维。

1.架构灵活

  • 双机热备架构 

    系统工作时主节点(Master)和备节点(Replica)数据实时同步,主节点故障时系统自动进行秒级切换,备节点接管业务(期间会有秒级的闪断),主备架构保障系统服务具有高可用性。详情请参见标准版-双副本

  • 集群架构 

    集群(Cluster)实例采用分布式架构,每个节点都采用一主一从的高可用架构,能够进行自动容灾切换和故障迁移。多种集群规格可适配不同的业务压力,可按需扩展数据库性能。详情请参见集群版-双副本

  • 读写分离架构 

    读写分离(Read-Write Splitting)实例由Proxy服务器、主备节点及只读节点组成提供高可用、高性能、高灵活的读写分离服务,解决热点数据集中及高并发读取的业务需求,最大化地节约用户运维成本。详情请参见读写分离版

2.数据安全

  • 数据持久化存储 

    采用内存加硬盘的混合存储方式,在提供高速数据读写能力的同时满足数据持久化需求。

  • 备份及一键恢复 

    每天自动备份数据,数据容灾能力强,免费支持数据一键恢复,有效防范数据误操作,极大地降低发生业务损失的可能性。

  • 多层网络安全防护
    • VPC私有网络在TCP层直接进行网络隔离保护。
    • DDoS防护实时监测并清除大流量攻击。
    • 持1000个以上IP白名单配置,直接从访问源进行风险控制。
    • 支持密码访问鉴权方式,确保访问安全可靠。
  • 深度内核优化 

    阿里云专家团队对源码Redis进行深度内核优化,有效防止内存溢出,修复安全漏洞,为您保驾护航。

3.高可用性

  • 主从双节点 

    标准版与集群版的双副本实例均有主从双节点,避免单点故障引起的服务中断。

  • 自动检测与恢复 

    自动侦测硬件故障,发生故障时能够进行故障转移,在数秒内恢复服务。

  • 资源隔离 

    实例级别的资源隔离可以更好地保障单个用户服务的稳定性。

4.弹性扩展

  • 数据容量扩展 

    云数据库Redis版支持多种内存规格的产品配置,您可以根据业务量升级内存规格。

  • 性能扩展 

    支持集群架构下弹性扩展数据库系统的存储空间及吞吐性能,突破海量数据高QPS性能瓶颈,轻松应对每秒百万次的读写需求。

相关操作方法请参见变更实例配置

5.智能运维

  • 监控平台 

    提供CPU使用率、连接数、磁盘空间利用率等实例信息实时监控及报警,随时随地了解实例动态,更多信息请参见云数据库Redis可观测性能力介绍

  • 可视化管理平台 

    管理控制平台对实例克隆、备份、数据恢复等高频高危操作可便捷地进行一键式操作。

  • 可视化DMS平台 

    专业的DMS数据管理平台,提供可视化的数据管理,全面提升研发、运维效率。

  • 数据库内核版本管理 

    主动升级,快速修复缺陷,免去日常版本管理苦恼;优化Redis参数配置,最大化利用系统资源。

云redis应用场景

云数据库Redis版适合多种场景中的数据存储,尤其是请求并发量大的场景。

1.游戏行业应用

游戏行业可以选择云数据库Redis版作为重要的部署架构组件。

  • 场景一:Redis作为存储数据库使用 

    游戏部署架构相对简单,主程序部署在ECS上,所有业务数据存储在Redis中,作为持久化数据库。云数据库Redis版支持持久化功能,主备双机冗余数据存储。

  • 场景二:Redis作为缓存加速应用访问 

    Redis作为缓存层,加速应用访问。数据存储在后端的数据库中(RDS)。

Redis的服务可靠性至关重要,一旦Redis服务不可用,将导致后端数据库无法承载业务访问压力。云数据库Redis版提供双机热备的高可用架构,保障极高的服务可靠性。主节点对外提供服务,当主节点出现故障,系统自动切换备用节点接管服务,整个切换过程对用户全部透明。

2.电商行业应用

电商行业中对于Redis大量使用,多数在商品展示、购物推荐等模块。

  • 场景一:秒杀类购物系统 

    大型促销秒杀系统,系统整体访问压力非常大,一般的数据库根本无法承载这样的读取压力。云数据库Redis版支持持久化功能,可以直接选择Redis作为数据库系统使用。

  • 场景二:带有计数系统的库存系统 

    底层用RDS存储具体数据信息,数据库字段中存储具体计数信息。云数据库Redis版来进行计数的读取,RDS存储计数信息。云数据库Redis版部署在物理机上,底层基于SSD高性能存储,可以提供极高的数据读取能力。

3.视频直播类应用

视频直播类业务往往会重度依赖Redis业务去存储用户数据及好友互动关系。

  • 双机热备保障高可用 

    云数据库Redis版提供双机热备的方式,可以极大的提高服务可用性。

  • 集群版解决性能瓶颈 

    云数据库Redis版提供集群版实例,破除Redis单线程机制的性能瓶颈,可以有效的应对视频直播类流量突起,有效地支撑高性能的需求。

  • 轻松扩容应对业务高峰 

    云数据库Redis版可支持一键扩容,整个升级过程对用户全透明,可以从容应对流量突发对业务产生的影响。

Redis常见问题

缓存雪崩:redis中大量数据过期,同时大量请求访问,直接请求数据库,导致数据库崩了。
解决方案:过期时间设置随机,防止大量数据同时过期。

缓存击穿:缓存没有数据但是数据库有数据,导致大量请求直接访问数据库,导致数据库挂掉。
解决方案:热点数据不过期,互斥锁

缓存穿透:大量请求恶意访问数据库没有的数据,导致数据库崩掉。
解决方案:参数异常校验,eg:id小于0直接返回,或者第一次访问数据库没有的数据就在缓存创建一条数据,然后设置一个返回值,过期时间短一点。    
        布隆过滤器,将需要的数据放到过滤器,缓存不存在该数据就去过滤器查,如果有就去DB查然后更新缓存KV,没有直接return,主要是利用高效的算法判断数据是否存在。缺点:一定的误识别和删除困难。
        
        
如何避免:
        事前:Redis 高可用,主从+哨兵,Redis cluster,避免全盘崩溃。

        事中:本地 ehcache 缓存 + Hystrix 限流+降级,避免MySQL 被打死。       

        事后:Redis 持久化 RDB+AOF,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值