
数据库
文章平均质量分 95
hzulwy
技术嘛!最重要的是自己理解,然后才是分享
展开
-
Redis实战指南
读缓存最佳实践:先读缓存,如果命中则返回;如果未命中则查询数据库,再写入redis中。先把数据写入数据库,在操作redis缓存。直接删除redis缓存,而不是修改,因为redis缓存的更新成本很高,需要访问多张表联合计算。另外,删除redis缓存操作简单,副作用只是增加了一次chache miss,建议大家使用改策略在以上最佳实践中,为了尽可能保证缓存与数据库的一致性,可以采用延迟双删策略。原创 2025-04-07 18:22:57 · 586 阅读 · 0 评论 -
Redis高级技能进阶
淘汰的目标数据可以分为数据库中有key-value的数据和数据库中配置了过期事件的key-value数据两种。针对这两种目标数据,一共有8种淘汰策略。noeviction:默认策略,不淘汰任何数据。allkeys-lru:使用近似LRU算法淘汰长时间没有使用的key。allkeys-lfu:使用近似LFU算法,保留常用的键,淘汰数据库中最不常用的键。volatile-lru:使用近似LRU算法淘汰配置了过期时间,最近最少使用的key。原创 2025-04-05 00:08:38 · 1044 阅读 · 0 评论 -
Redis常用的数据结构及其使用场景
消息队列是一种异步的服务间通信方式,适用于分布式和微服务架构。消息在被处理和删除之前一直存储在队列上。它基于先进先出的原则,允许生产者向队列中发送消息,而消费者则可以从队列中获取消息并进行处理。消息队列通常被用于解耦应用程序的各个组件,实现异步通信、削峰填谷、解耦合、流量控制等功能。原创 2025-03-30 21:20:26 · 910 阅读 · 0 评论 -
Redis的高可用
redis对数据读/写操作的速度快到令人发指,因此很多人把redis当作缓存系统来使用,用于提高系统的读取性能。然而,“快”是需要付出代价的:内存无法持久化,一旦断电或宕机,保存在内存中的数据会全部丢失。在这种情况下,没有了redis的支持,大量流量被发到mysql种可能带来更大的问题。因此,如果redis重启时从mysql数据库里面获取数据加载到内存中,当数据量巨大时,可能会给mysql数据库造成更大的压力。考虑到这种情况,redis本身可以实现数据持久化,做到宕机快速恢复——RDB快照和AOF。原创 2025-03-10 23:26:00 · 718 阅读 · 1 评论 -
MongoDB分片集群
chunk的意思是数据块,一个chunk代表了集合中的“一段数据”,例如,用户集合在切分成多个chunk之后如下图所示:chunk所描述的是范围区间,例如,db.users使用了userId作为分片键,那么chunk就是userId的各个值(或哈希值)的连续区间。chunk的切分方式,决定如何找到数据所在的chunk。chunk的分布状态,决定如何找到chunk所在的分片。原创 2025-03-03 11:32:51 · 1228 阅读 · 0 评论 -
MongoDB安全管理
使用createRole命令可以创建自定义角色,每一个角色都需要绑定到指定的库中。普通的业务库中的角色对象只允许访问当前库的资源对象,而位于admin库的角色则没有此限制。use admin],roles:[},orderdb、goodsdb、userdb数据库的read角色的权限。tracedb数据库中etlLogs集合的读写权限。use somedb。原创 2025-03-01 21:53:23 · 837 阅读 · 0 评论 -
mongodb的并发优化
MongoDB的锁设计MongoDB的高性能表现离不开它的多粒度锁机制。多粒度主要可以针对不同层级的数据库对象进行枷锁,通过避免全局性的互斥来提升并发能力。从整个数据库层面看,MongoDB的并发锁的分层如下图所示:从上往下是一个逐步细分的关系,分别为Global(全局)、Database(数据库)、Collection(集合)、Document(文档)。需要说明的是,mongodb只定义了前三种级别的锁,对于文档级的由WiredTiger引擎实现的,其内部使用了MVCC乐观锁的方式来实现并发控制。原创 2025-02-23 22:26:05 · 1022 阅读 · 0 评论 -
MongoDB应用设计调优
数据库范式概念是数据库技术的基本理论,几乎是伴随着数据库软件产品的推出而产生的。在传统关系型数据库领域,应用开发中遵循范式是最基本的要求。但随着互联网行业的发展,NoSQL开始变得非常流行,在许多的应用实践中也涌现出一些反范式的做法。(1)第一范式:数据库表的每一列都是不可分割的原子项。如下表,所在地一列就是不符合第一范式的,其中对于“广东省、深圳市”这样的字符串,实际上应该拆分为省份、城市两个字段。第1范式要求将列尽可能分割成最小的粒度,希望消除利用某个列存储多值的行为,而且每个列都可以独立进行查询。原创 2025-02-22 20:14:25 · 1207 阅读 · 0 评论 -
MongoDB副本集
mongodb的副本集选举、复制机制是基于Raft协议的。Raft协议的选举机制中leader必须通过大多数节点投票才能产生。我们假设副本集的投票成员数量为N,则大多数为N/2+1。当副本集内存活的成员数量不足大多数时,整个副本集将无法选举除主节点,此时无法提供写服务,这些节点都将处于只读状态。此外,如果希望避免平票结果的产生,最好使用奇数个节点成员,比如3个或5个。为选举定时器增加少量的随机时间偏差,这样避免各个节点 在同一时刻发起选举,提高成功率。原创 2025-02-16 10:12:31 · 861 阅读 · 0 评论 -
MongoDB索引介绍
索引是什么索引在数据库技术体系中占据了非常重要的位置,其主要表现为一种目录式的数据结构,用来实现快速的数据查询。通常在实现上,索引是对数据库表(集合)中的某些字段进行抽取、排列之后,形成的一种非常易于遍历读取的数据集合。目前绝大多数的数据库对于索引技术都有非常强大且稳定的支持。索引的作用非常类似于一本书的目录。索引的分类。原创 2025-02-15 00:12:18 · 833 阅读 · 0 评论 -
MongoDB基础入门
MongoDB是NoSQL数据库中的佼佼者,目前是排名第一的文档型数据库。该数据库基于灵活的JSON文档模型,非常适合敏捷式的快速开发。与此同时,其与生俱来的高可用、高水平扩展能力使得它在处理海量、高并发的数据应用时颇具优势。在我们的系统中,通常会用分层来描述现实中的模型,如图所示:从下往上看,每一层都提供了更简单、更容易表述的模型来隐藏下层的复杂性。最为典型的是,数据库系统屏蔽了所有磁盘中文件如何存取、压缩/解压等细节,向应用程序展示了一些通用的数据模型,如SQL表、列、或是基于JSON、XML的文档模原创 2025-02-10 01:38:21 · 875 阅读 · 0 评论