MongoDB快速上手

MongoDB安装 MongoDB官方的安装指南 Navicat客户端使用 可以在navicat上连上本地的mongodb使用,直观简单 Easy use (Terminal) 在终端中启动mongodb终端: mongosh 以下是一些 MongoDB 的简单常用命令,可以帮助你快速上手并管理 MongoDB 数据库: 启动 MongoDB shell mongo 基本数据库操作 列出所有数据库 show dbs 切换到指定数据库(如果数据库不存在则创建新数据库) use mydatabase 显示当前数据库 db 删除当前数据库 db.dropDatabase() 集合操作 创建集合 db.createCollection('mycollection') 列出所有集合 show collections 删除集合 db.mycollection.drop() 文档操作 插入文档 db.mycollection.insertOne({name: "John", age: 30}) db.mycollection.insertMany([{name: "Alice", age: 25}, {name: "Bob", age: 27}]) 查找文档 db.mycollection.find() db.mycollection.find({name: "John"}) 查找并格式化输出 db.mycollection.find().pretty() 更新文档 db.mycollection.updateOne({name: "John"}, {$set: {age: 31}}) db.mycollection.updateMany({name: "Alice"}, {$set: {age: 26}}) 替换文档 db.mycollection.replaceOne({name: "John"}, {name: "John", age: 32, city: "New York"}) 删除文档 db....

June 6, 2024 · 1 min · 98 words · sirius1y

SQL学习笔记

导出数据库为sql文件,在命令行中执行: mysqldump -u root -p course-system > course-system.sql DDL(Data Definition Language)数据定义语言 操作库 -- 创建库 create database db1; -- 创建库是否存在,不存在则创建 create database if not exists db1; -- 查看所有数据库 show databases; -- 查看某个数据库的定义信息 show create database db1; -- 修改数据库字符信息 alter database db1 character set utf8; -- 删除数据库 drop database db1; -- 使用某一数据库 use db1; 操作表 -- 创建表 create table student( id int, name varchar(32), age int , score double(4,1), birthday date, insert_time timestamp ); -- 查看表结构 desc 表名; -- 查看创建表的SQL语句 show create table 表名; -- 修改表名 alter table 表名 rename to 新的表名; -- 添加一列 alter table 表名 add 列名 数据类型; -- 删除列 alter table 表名 drop 列名; -- 删除表 drop table 表名; drop table if exists 表名 ; DML(Data Manipulation Language)数据操作语言 增加 insert into -- 写全所有列名 insert into 表名(列名1,列名2,....

October 20, 2023 · 6 min · 1255 words · sirius1y

使用GORM操作数据库

什么是GORM? GORM 是一个 Go 编程语言中的 ORM(对象关系映射)库,全名为 “Go Object Relational Mapping”。ORM 是一种编程技术,旨在将数据库中的数据与编程语言中的对象进行映射,从而使开发者能够使用面向对象的方式来操作数据库,而不需要直接编写 SQL 查询语句。 GORM 为 Go 语言开发者提供了一个便捷的方式来操作数据库,支持多种数据库系统,包括 MySQL、PostgreSQL、SQLite 等。它提供了许多功能,如数据库连接管理、模型定义、查询构建、事务管理、关联关系映射等。 以下是一些 GORM 提供的功能和特点: 模型定义简单:你可以定义 Go 结构体来映射数据库表,然后使用 GORM 来处理与数据库的交互。 自动迁移:GORM 可以自动根据模型定义来创建、修改和删除数据库表结构。 查询构建:你可以使用链式方法构建复杂的查询语句,进行数据的检索、排序、过滤等操作。 事务管理:GORM 支持事务,你可以在代码中使用事务来确保数据库操作的原子性。 关联关系:GORM 支持定义和处理表之间的关联关系,如一对一、一对多、多对多等。 钩子函数:GORM 允许你在模型的生命周期中定义钩子函数,以便在不同的操作发生时执行特定的逻辑。 使用GORM对数据库进行增删查改 数据库的设计 使用mysql作为数据库,新建一个表user,其中最主要的列是Username和Email; 因为gorm默认使用id为主键,所以我们也在表user中新建一列id; 另外为了配合grom.Model的使用表中另外新增created_at,updated_at,deleted_at三列。 注意,主键id记得要设置自动递增。 我们可以先使用navicate的随机数据生成少量数据。 连接数据库 使用 GORM 建立数据库连接,你需要提供 MySQL 数据库的连接信息。这包括数据库的用户名、密码、主机名、端口号和数据库名称。 dsn := "username:password@tcp(hostname:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("Failed to connect to the database") } 确保将 username、password、hostname、port 和 dbname 替换为自己的 MySQL 数据库连接信息。...

August 25, 2023 · 1 min · 126 words · sirius1y

Redis常用指令

快速了解Redis Redis是什么?为什么要使用Redis?他有什么好处和优势?他的弊端又有哪些呢?他的基本模型和技术有哪些? Redis是什么? Redis(Remote Dictionary Server)是一种开源的内存数据存储系统,它可以用作数据库、缓存和消息代理。它被设计用于快速访问、存储和分析数据,以及支持各种数据结构,如字符串、哈希表、列表、集合、有序集合等。Redis支持持久化,可以将数据保存在磁盘上,以便在重启后恢复数据。 为什么要使用Redis? Redis有许多优点,使其成为广泛使用的数据存储和缓存解决方案: 优势 快速访问: Redis数据存储在内存中,因此具有非常快速的读写性能,适合用作缓存层,加速数据访问。 丰富的数据结构: Redis不仅支持简单的键值存储,还支持多种数据结构,如列表、集合、有序集合等,这使得它适用于更多不同类型的应用场景。 持久化: Redis支持数据的持久化,可以将数据保存在磁盘上,以便在服务器重启后恢复数据。 分布式架构: Redis支持分布式集群,可以将数据分散在多个节点上,提高数据的可用性和性能。 发布/订阅: Redis具有消息代理功能,可以用于发布和订阅消息,支持实时数据推送和通知。 事务支持: Redis支持事务,允许一系列操作以原子方式执行,保证数据的一致性。 弊端 内存消耗: Redis的数据存储在内存中,因此对于大规模数据集可能会占用大量内存。尽管有持久化选项,但内存仍然是其主要的存储介质。 单线程: Redis在单个进程中使用单线程处理所有的命令请求。这在某些高并发情况下可能成为性能瓶颈。 基本模型和技术 键值存储: Redis的基本模型是键值存储,您可以使用键来检索存储在Redis中的数据。 数据结构: Redis支持字符串、哈希表、列表、集合、有序集合等多种数据结构,使其非常灵活。 持久化: Redis支持两种持久化方式,分别是快照(snapshotting)和日志(append-only file)。 发布/订阅: Redis支持发布/订阅模式,允许客户端订阅特定的频道并接收实时消息。 分布式: Redis可以通过分片或复制来构建分布式架构,提高可用性和扩展性。 Redis vs. MySQL 性能比较 读写性能: Redis在内存中存储数据,因此具有非常快速的读写性能,尤其适合高并发读取和写入场景。与此相比,MySQL可能受到磁盘IO和索引的影响,其读写性能相对较低。 数据结构: Redis支持多种数据结构,使其适合用于更复杂的数据模型,如实时计数、排行榜、分布式锁等。MySQL虽然也支持多种数据类型,但通常用于结构化数据的存储。 缓存: Redis非常适合用作缓存层,可以减轻数据库的负载,提高数据访问速度。MySQL也可以用作缓存,但Redis的读取速度更快。 事务和持久化: Redis支持事务,但它的事务模型不如MySQL严格。MySQL提供强大的事务支持和多种持久化选项。 适用领域和场景 Redis适合场景 实时数据:例如实时计数、统计信息和分析。 缓存:用作高速缓存,提高数据访问速度。 实时消息:发布/订阅模式用于实时消息传递。 会话存储:存储用户会话数据,适用于分布式系统。 分布式锁:实现分布式锁以协调多个系统的并发操作。 MySQL适合场景 结构化数据:适用于关系型、事务性的结构化数据。 复杂查询:支持复杂的查询和连接操作。 大规模数据存储:适合大规模数据存储和管理。 强大事务:需要强大的事务支持和ACID特性。 Redis和MySQL有各自独特的优势和用途,它们并不是直接替代关系。Redis可以在某些情况下用来增强项目性能,或者作为辅助数据库来存储特定类型的数据,例如缓存、会话、排行榜等。然而,对于需要复杂查询、关联性和事务的应用,Redis并不是MySQL的替代品。对于大部分应用,两者可以共同使用,以发挥各自的优势,构建更高效的系统。 Redis基本命令 现在很多大公司的后端服务都是基础存储服务+Redis缓存的形式,使用Redis进行缓存很大程度上提高了服务的效率,当然也存在缓存穿透、缓存雪崩的问题,但是在此之前还是要从Redis的基础命令开始学习掌握,所以在这里整理了Redis常用的命令。 字符串 在Redis中,字符串可以存储以下3中类型的值:字节串(byte string),整数,浮点数。 自增自减命令 INCR key-name:将键存储的值加上1...

August 3, 2023 · 2 min · 309 words · sirius1y