
数据库
文章平均质量分 89
运维开发故事
这个作者很懒,什么都没留下…
展开
-
Redisson 高性能 Redis 分布式锁源码分析
Redisson 实现分布式锁的机制如下:原理描述先线程 1 获取锁,如果获取锁成功,那么会开启一个后台线程,每次间隔 10 秒进行续期。并发情况,线程 2 会进行加锁,如果无法获取锁,那么就会进行自旋等待,等待到达一定次数过后,就会进行线程阻塞,并且订阅解锁消息。当线程 1 释放锁之后,会触发 redis 的解锁消息,消息的观察者会观察到然后去唤醒解锁的逻辑,线程 2 继续竞争锁。对于锁的重入,Redisson 是通过 hash 为数据类型的,会存储当前线程的 tid (本质是生成的 uuid 唯一id)原创 2022-07-02 10:16:35 · 1161 阅读 · 1 评论 -
Redis 高可用集群原理和实践
Redis 集群是 Redis 提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移能力。Redis 集群最少需要 3 个 master 节点,这里我们搭建 3 个master 节点,3 个 slave 及节点(由于我机器配置受限,直接通过端口的方式模拟集群搭建,本处只是实验方便,生产环境不可采取此方案)。环境搭建步骤如下:服务启动,注意我们需要启动所有的节点,命令如下:初始化集群,通过 命令初始化集群,命令如下(如果是生产环境,需要节点间 IP 以及端原创 2022-06-01 15:32:16 · 540 阅读 · 0 评论 -
Redis 高可用之 Sentinel
Sentinel 结构在 redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点的状态,如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。Sentinel 初始化Sentinel原创 2022-05-29 13:01:09 · 1851 阅读 · 0 评论 -
Redis 通讯协议(RESP)
RESP 协议Redis 基于 RESP (Redis Serialization Protocal)协议来完成客户端和服务端通讯的。RESP 本质是一种文本协议,实现简单、易于解析。如下表所示:类型协议描述实例网络层客户端和服务端通过 tcp/流式套接字来进行通讯,为了 防止粘包 因此命令或数据均以 \r\n (CRLF) 结尾+ok\r\n请求*<参数数量> CR LF<参数字节数量 > CR LF<参数的数据> CR LF<参数 N 的字节数量 >CR原创 2022-03-03 00:00:46 · 1550 阅读 · 0 评论 -
PostgreSQL 12源码包部署及用户管理
大家好,我是小姜。一名落魄的低层运维工程师。前言时间序列数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等特点,可以基于时间区间聚合分析和高效检索,广泛应用在物联网、经济金融、环境监控、工业制造、农业生产、硬件和软件系统监控等场景。最近公司需要使用时序数据库,经过调研发现,TimeScaleDB 就是一款非常好用,功能强大的时序数据库,并且基于强大的PostgreSQL。而TimeScaleDB官网原创 2022-01-19 00:33:12 · 584 阅读 · 0 评论 -
PostgreSQl 12主从流复制及归档配置
大家好,我是小姜。一名落魄的低层运维工程师。上一篇文章说道PostgreSQL 12 的源码部署,这里我们说一下PostgreSQl 12的主从流复制和归档配置。主从复制的两种形式1) 基于文件的日志传送创建一个高可用性(HA)集群配置可采用连续归档,集群中主服务器工作在连续归档模式下,备服务器工作在连续恢复模式下(1台或多台可随时接管主服务器),备持续从主服务器读取WAL文件。连续归档不需要对数据库表做任何改动,可有效降低管理开销,对主服务器的性能影响也相对较低。直接从一个数据库服务器移动WAL记录到另一原创 2022-01-19 00:33:46 · 769 阅读 · 0 评论 -
使用Golang驱动操作MongoDB
微信公众号:运维开发故事,作者:wanger上篇文章我们介绍了使用pymongo对MongoDB进行CRUD,本篇将介绍使用Golang驱动操作MongoDB安装MongoDB驱动程序mkdr mongodb cd mongodb go mod init go get go.mongodb.org/mongo-driver/mongo连接MongoDB创建一个main.go文件 将以下包导入main.go文件中package mainimport ( "contex.原创 2022-01-03 18:04:23 · 526 阅读 · 0 评论 -
用MongoDB开发员工信息管理系统
微信公众号:运维开发故事,作者:double冬为了巩固MongoDB增加、删除、修改、查找功能,本文将将以制作一个简易的员工管理系统项目进行实战。1 了解项目最终目标本项目的最终结果会以网页形式呈现,读者只需要完成整个系统中关于MongoDB 操作这部分代码的开发即可。完成以后,将会得到一个人员信息管理网页,如图所示。在页面的末尾可以看到用于新增数据的“添加人员”按钮。通过这个网页,可以查看当前的所有人员信息,可以增加、修改、删除人员信息。image.png1.添加信息(1)可以单击“添.原创 2021-12-24 00:03:42 · 10633 阅读 · 9 评论 -
使用Python操作MongoDB
...原创 2021-12-23 23:26:53 · 9030 阅读 · 0 评论 -
MongoDB快速入门
微信公众号:运维开发故事,作者:double冬1 进入MongoDB的世界随着大数据时代的到来,数据急速增长,导致关系型数据库(SQL)越来越不够用。高性能、可扩展的数据库变得越来越重要起来,在这样的场景下,非关系型数据库(NoSQL)应运而生,这里的“NoSQL”不是“NoSQL(不是SQL)”,而是“Not only SQL(不仅是SQL)”的简称。2009年,分布式文档型数据库MongoDB引发了一场去SQL的浪潮。1.1 非关系型数据库的分类及特点非关系型数据库主要分为以下几类1.键值.原创 2021-12-23 23:07:48 · 321 阅读 · 0 评论 -
Redis基础知识(二)
微信公众号:运维开发故事,作者:wangerRedis事务redis中的事务是一组命令的集合,事务中的命令要么全部执行,要么都不执行,Redis 通过 MULTI 、DISCARD 、EXEC 和 WATCH四个命令来实现事务功能,multi表示事物的开启,exec表示事物的执行,exec执行后返回事务执行的结果,discard表示放弃事务执行,清空事务队列中已有的所有命令并退出队列,watch用于监视给定的键,如果键被其他客户端修改,将不会执行事务。127.0.0.1:6379> mul.原创 2021-12-22 00:14:05 · 886 阅读 · 0 评论 -
使用docker搭建MySQL主从复制
MySQL的主从复制之前也没做过,刚百度了下发现并不算难,但同时开两个虚机挺麻烦,于是我就想到了使用docker来配置MySQL主从复制。环境:docker,centos,MySQL镜像,这里我直接pull了一个镜像运行一个master容器docker run -d --name master -p 3307:3306 -eMYSQL_ROOT_PASSWORD=root mysqldocker ps -a这里将master容器的3306端口映射给主机的3307端口,-e代表设置环境变量master的MyS原创 2021-12-08 12:51:05 · 199 阅读 · 0 评论