Redis相关

Redis相关

redis缓存与数据库一致性问题

概述

Redis简介及相关命令实现

redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value类型的数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,redis在3.0版本推出集群模式。

特点、优势

  • k、v键值存储以及数据结构存储(如列表、字典)
  • 所有数据(包括数据的存储)操作均在内存中完成
  • 单线程服务(这意味着会有较多的阻塞情况),采用epoll模型进行请求响应,对比nginx
  • 支持主从复制模式,更提供高可用主从复制模式(哨兵)
  • 去中心化分布式集群
  • 丰富的编程接口支持,如Python、Golang、Java、php、Ruby、Lua、Node.js
  • 功能丰富,除了支持多种数据结构之外,还支持事务、发布/订阅、消息队列等功能
  • 支持数据持久化(AOF、RDB)

对比memcache

  • memcache是一个分布式的内存对象缓存系统,并不提供持久存储功能,而redis拥有持久化功能
  • memcache数据存储基于LRU(简单说:最近、最少使用key会被剔除),而redis则可以永久保存(服务一直运行情况下)
  • memcache是多线程的(这是memcache优势之一),也就意味着阻塞情况少,而redis是单线程的,阻塞情况相对较多
  • 两者性能上相差不大
  • memcache只支持简单的k、v数据存储,而redis支持多种数据格式存储。
  • memcache是多线程、非阻塞IO复用网络模型,而redis是单线程IO复用模型

Redis sentinel

Redis Sentinel 介绍与部署
sentinel官方文档说明

:Sentinel是根据redis.cnf中的slave-priority值来选择哪个实例是新的 master。slave-priority越小则优先级越高。默认值为100。

Redis详解之-集群方案:高可用(使用Redis Sentinel)
redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
redis及其sentinel配置项详细说明

Redis持久化

Redis实战总结-配置、持久化、复制

redis的持久化方式RDB和AOF的区别:

1. RDB:RDB持久化是把当前进程数据生成时间点快照(point-in-time snapshot)保存到硬盘的过程,避免数据意外丢失。RDB源码剖析和注释
2. AOF:以独立日志的方式记录每次写命令,重启时在重新执行AOF文件中的命令达到恢复数据的目的。AOF源码剖析和注释

Redis 五种数据类型

Redis 内部数据结构详解

Redis常用的五种数据类型:

  1. String
  2. List
  3. HashMap
  4. Set
  5. ZSet

Redis五种数据类型基本命令

Redis之瑞士军刀

https://blog.youkuaiyun.com/jcsyl_mshot/article/details/80274187

1. 慢查询
Redis瑞士军刀慢查询
Redis-慢查询分析慢查询问题排查

2. pipeline
分布式缓存Redis之Pipeline(管道)

3. 发布订阅
Redis Publish 频道订阅详解

4. bitmap
分布式缓存Redis之bitmap、setbit

5. hyperloglog
Redis:HyperLogLog使用与应用场景
布隆过滤器

6. geo
利用redis + GEO解决经纬度定位
GeoHash核心原理解析

Redis主从复制

Redis主从同步原理-SYNC
Redis主从复制

redis复制常见的问题
1、读写分离:
好处:流量可以分摊到不同的从节点上
可能遇到的问题:①复制数据的延迟:例如从节点发生阻塞,就会到值复制数据的延迟②读到过期的数据③从节点也有可能发生故障
2、配置不一致例如maxmemory不一致,容易丢失数据,或者发生诡异的情况数据结构优化参数(例如has-max-ziplist-entries):会出现内存不一致的情况
3、规避全量复制①第一次全量复制:第一次不可避免,但是我们可以使用小的主节点,或者在半夜低峰的时刻做全量复制②节点运营的ID不匹配:例如主节点重启,runid就会变化,我们可以使用自动故障转移,例如哨兵或者集群③复制积压缓冲区不足:网络中断,部分复制功能无法满足,这个时候可以增大复制缓冲区配置rep_backlog_size。
4、规避复制风暴①单主节点复制风暴:由于主节点重启,多个从节点要复制,会产生复制风暴,解决办法是:更换复制0拓扑②单机器复制风暴:由于多个主节点都部署在同一个机器上面,机器宕机后需要大量的全量复制,解决办法是:主节点分配到多台机器上面或者使用一些高可用架构,讲从节点晋升为主节点

Redis 集群搭建

redis集群搭建
三张图秒懂Redis集群设计原理

Redis缓存设计

1. 缓存收益:加速读写,降低后端存储的负载
2. 缓存成本:缓存和存储数据不一致性,增加代码维护成本,运维成本
3. 缓存的更新策略:结合剔除,超时,主动更新三种方案共同完成
4. 缓存的粒度控制:通用型:全量属性更好 占用空间:部分属性更好 代码维护:表面上全量属性更好。具体根据情况而定
5. 缓存穿透问题:使用缓存空对象或者布隆过滤器来解决,注意他们的使用场景和局限性
6. 缓存无底洞问题:分布式缓存中,更多的机器不保证更高的性能,可以采用:串行命令,串行IO,并行IO,hash_tag
7. 缓存的雪崩问题:缓存层高可用,客户端降级,提前演练是解决雪崩问题的重要方法
8. 热点Key问题:互斥锁,永不过期,可以一定程度解决问题,具体根据业务选择,了解他们的使用成本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值