redis使用场景: 1.高并发点赞 2.收藏与取消收藏 3.排行榜 4.消息队列 配合swoole可以实现实时聊天室,图文直播,实时排行榜等功能
RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都..
#Redis开发与运维#知识梳理:redis的使用场景;数据结构:字符串;哈希(字典,关联数组);列表(索引数组,栈和队列);集合(应用场景:tag);有序集合;慢查询;pipeline(批量命令);事务处理(lua);bitmaps(位操作);持久化:RDB;AOF;redis..
技术整合项目备注:1.redis:快速评论;2.mq:通知;3.搜索引擎:查询;4.git:开发工具;5.缓存方案设计;6.设计模式;7.linux;8.钩子,驱动编程;9.其他:swoole(异步网络通信引擎);
#Redis开发与运维#核心要点:redis使用场景;api的理解和使用(数据类型):单线程架构;字符串;哈希;列表;集合;有序集合;重要功能:慢查询;shell;pipeline(批量命令);事务与lua(脚本);bitmaps(位操作);hyperloglog(数据算法);分..
#Redis开发与运维#redis sentine(哨兵),是redis高可用实现方案:故障发现,故障自动转移,配置中心,客户端通知;尽可能在不同的物理机上部署redis sentinel所有节点;通过三个定时任务实现了对于主节点,从节点,其余节点的监控;故障转移日志;
#Redis开发与运维#理解内存:redis实际内存消耗:键值对象,缓冲区内存,内存碎片;通过调整maxmemory控制redis最大可用内存;合理优化内存思路:精简键值对大小;使用对象共享池;优化字符串使用;只用ziplist压缩编码优化hash,list;使用intset编码..
#Redis开发与运维#阻塞:客户端最先感知阻塞,加入日志监控报警工具;查找内在原因:检查慢查询;查找外在原因:cpu竞争,内存交换,网络问题等;
#Redis开发与运维#复制:1.通过slaveof命令建立或者断开复制;2.部分复制有效减少因网络异常造成的不必要的全量复制;全量复制尽量避免;3.主从节点之间维护心跳和偏移量检查机制,保证主从节点通信正常和数据一致;4.redis复制过程为异步,存在数据延迟,过期数据,从节点..
#Redis开发与运维#持久化:rdb:使用一次性生成内存快照的方式,产生的文件紧凑压缩比更高,读取rdb恢复速度更快,由于开销大,无法实时持久化,一般用于数据冷备和复制传输。save会阻塞主线程不建议使用,bgsave通过fork操作创建子进程,避免阻塞;aof:文件体积变大,..
#Redis开发与运维#缓存设计:缓存的收益和成本:适用场景:开销大的复杂计算;加速请求相应;缓存更新策略:1.lru,lfu,fifo算法剔除;2.超时剔除;3.主动更新;4.最佳实践(低一致性业务简易匹配最大内存和淘汰策略;高一致性业务可以结合使用超时剔除和主动更新);缓存粒..
#Redis开发与运维#info系统状态;standalone配置:总体配置;最大内容及策略;aof相关配置;rdb相关配置;慢查询配置;数据结构优化配置;复制相关配置;客户端相关配置;安全相关配置;sentinel配置说明和分析;cluster配置说明和分析;