
Redis、MQ、kafka等中间件
文章平均质量分 94
原理+实践
本兮言
“任何事情,没有坚持3个月,就没有发言权!没有坚持3年,就不能说自己懂!没有坚持7年,就不可能是专家!没有坚持10年以上,就不会拥有权威!没有坚持一辈子,就不可能有所成就!选择自己真正想做的事情,每天重复做,能坚持下来的人,定会成为某一领域的领航者。成功没有捷径,坚持才能成功!”
展开
-
Memcached内存管理模型分析(转载)
Memcached 是一个高性能的分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而减轻RDBMS的负担,提高服务的速度、提升可扩展性。本文将基于memcached1.4.15版本源码,对其内存模型进行分析。 首先从业务需求出发。我们通过一条命令(如set)将一条键值对(key,value)插入memcached后,需要能够做到:1、对该键值数据的高效索引;2、...转载 2018-11-05 11:22:06 · 202 阅读 · 0 评论 -
Redis的那些最常见面试问题
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知...原创 2018-03-18 23:49:37 · 510 阅读 · 0 评论 -
配置Redis作为缓存(六种淘汰策略)
将 Redis 用作缓存时, 如果内存空间用满, 就会自动驱逐老的数据。 默认情况下 memcached 就是这种方式, 大部分开发者都比较熟悉。LRU是Redis唯一支持的回收算法. 本文详细介绍用于限制最大内存使用量的 maxmemory 指令, 并深入讲解 Redis 所使用的近似LRU算法。maxmemory 配置指令maxmemory 用于指定 Redis 能使用的最大...原创 2018-03-18 18:45:08 · 68418 阅读 · 4 评论 -
Redis实现分布式锁原理与实现分析
一、关于分布式锁关于分布式锁,可能绝大部分人都会或多或少涉及到。 我举二个例子: 场景一:从前端界面发起一笔支付请求,如果前端没有做防重处理,那么可能在某一个时刻会有二笔一样的单子同时到达系统后台。场景二:在App中下订单的时候,点击确认之后,没反应,就又点击了几次。在这种情况下,如果无法保证该接口的幂等性,那么将会出现重复下单问题。 在接收消息的时候,消息推送重复。如果处理消息的...转载 2018-12-20 19:59:24 · 218 阅读 · 0 评论 -
读书笔记:redis开发与运维 基础篇
redis特性1>速度快:redis所有数据都是存放在内存中,是redis速度快的主要原因,是有c编写,一般来说用c编写的程序距离操作系统近,执行速度更快,非阻塞I/O,使用epoll作为I/O多路复用的技术实现,不再网路I/O上浪费过多时间,使用单线程架构,预防了多线程可能产生竞争的问题,对于服务端开发来说,锁和线程切换通常是性能杀手(但是单线程有一个问题就是每个命令执行时间有要...原创 2019-03-18 19:29:38 · 2486 阅读 · 1 评论 -
缓存设计 总结
缓存的收益和成本: 1>加速读写:因为缓存通常都是全内存的例如Redis、Memcache,而存储层通常读写性能不够强悍(例如MySQL),通过缓存的使用可以有效加速读写 2>降低后端访问量和复杂计算 成本: 数据不一致:缓存层和储存层存在一定时间窗口的不一致性,时间窗口跟更新策略有关 加入缓存后需要同时处理缓存层和逻辑层逻辑,增加了开发者维护代码...原创 2019-04-01 18:47:33 · 384 阅读 · 0 评论 -
读书笔记:redis开发与运维 集群篇
集群: Redis Cluster是Redis分布式解决方案 主要解决了单机内存、并发(OPS)、流量等瓶颈,采用Cluster架构方案达到负载均衡的目的,比如虽然redis官网说10万/s条命令,但是有些业务需要100万/每秒,机器内存16-256G但是业务需要500G, 数据分布: 分布式数据首先要解决把整个数据集按照分区规则映射到多个节点的问题常见的分区规...原创 2019-04-02 15:56:42 · 650 阅读 · 0 评论 -
kafka:如何保证消息不丢失不重复
首先要考虑这么几个问题: 消息丢失是什么造成的?(从生产端和消费端两个角度来考虑) 消息重复是什么造成的?(从生产端和消费端两个角度来考虑) 如何保证消息有序? 如果保证消息不重不漏,损失的是什么? 下面是文章详情,这里先简单总结一下: 消费端重复消费:很容易解决,建立去重表。 消费端丢失数据:也容易解决,关闭自动提交offse...转载 2019-05-20 17:49:20 · 1155 阅读 · 0 评论 -
Redis底层数据类型
Redis主要数据结构:简单动态字符串(SDS)、双端链表、字典、跳跃表、整数集合、压缩列表和快速列表;一、简单动态字符串(SDS):Redis没有直接使用C语言中的传统的字节数组保存字符串,而是自行构建了简单动态字符串(SDS),C字符串只是作为简单动态字符串(SDS)的字面量,用于在无需对字符串值进行修改的地方。结构:struct __attribute__ ((__pack...原创 2019-05-22 11:02:15 · 291 阅读 · 0 评论