首页 > 数据库 >数据库升级PostgreSql+Garnet

数据库升级PostgreSql+Garnet

时间:2024-05-14 13:30:24浏览次数:24  
标签:PostgreSql WriteLine Garnet 数据库 Redis Console https using

目录

前言

我公司用的是sql server 2008的破解版,但是现在毕竟是2024年了,打算上最新最强的免费数据库。而且我公司的项目连redis都没用过,我打算测试一下缓存数据库。
网络数据库和缓存数据库了解了一下,打算选择PostgreSql和granet。这两个的特点是,开源,而且性能极强。基本大部分项目都够用了。

PostgreSql

安装

PostgreSql官网地址:https://www.postgresql.org/download/

PostgreSql Windows平台下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

菜鸟教程 Windows 上安装 PostgreSQL:https://www.runoob.com/postgresql/windows-install-postgresql.html

安装成功!

不知道为什么我Navicate连接不了

测试

我们这里用的是Freesql进行连接

FreeSql 官网:https://freesql.net/

额外Nuget安装

Person.cs

using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RedisTest.Models
{
    public class Person
    {
        [Column(IsPrimary = true,IsIdentity =true)]
        public int Id { get; set; }

        public string Name { get; set; }


        public int Age { get; set; }
    }
}

模拟运行

using Bogus;
using FreeSql;
using Newtonsoft.Json;
using RedisTest.Models;
using StackExchange.Redis;

namespace RedisTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            IFreeSql freeSql = new FreeSqlBuilder()
                .UseConnectionString(DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456; Database=testDb;ArrayNullabilityMode=Always;Pooling=true;Minimum Pool Size=1")
                .UseAutoSyncStructure(true)//CodeFrist
                .Build();

            if (freeSql.Ado.ExecuteConnectTest())
            {
                Console.WriteLine("数据库连接成功!");
            }
            else
            {
                Console.WriteLine("数据库连接失败");
            }

            //Bogus生成模拟数据
            var faker = new Faker<RedisTest.Models.Person>()
                .RuleFor(t=>t.Name,f=>f.Name.FirstName())
                .RuleFor(t=>t.Age,f=>f.Random.Int(10,30));

            //插入
            {
                var lists = faker.Generate(10);
                freeSql.Insert(lists).ExecuteAffrows();
                Console.WriteLine($"插入数据");
                Console.WriteLine(JsonConvert.SerializeObject(lists, Formatting.Indented));
            }
            //查询最新的10条
            {
                var lists  = freeSql.Select<RedisTest.Models.Person>()
                    .OrderByDescending(t=>t.Id)
                    .Take(10)
                    .ToList();
                Console.WriteLine($"查询数据");
                Console.WriteLine(JsonConvert.SerializeObject(lists, Formatting.Indented));
            }


            Console.WriteLine("运行结束");
            Console.ReadLine();
        }
    }
}

postgresqlAdmin我实在是看不懂,而且我希望是用统一的数据库管理工具去简单查询数据。但是postgresql在升级到15之后,navicate就不兼容了,原因是postgresql 删掉了一个表。

解决方案

实操解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错的问题:https://blog.csdn.net/zxp3817100/article/details/134822475

我后面用vscode 去修改16进制的文件的
vs code 以16进制格式查看文件:https://blog.csdn.net/weixin_42533987/article/details/111821190

Garnet

Garnet是微软的开发的一个开源的缓存数据库,类似于C# 版本的Redis。

为什么要选择Garnet而不是Redis

Redis不再开源

Redis不再开源,后续使用3月20日以后的版本需要遵守新的协议。协议详情可以参考:https://github.com/redis/redis?tab=License-1-ov-file#readme

Windows版的Redis是由微软维护的

Redis的Windows版本是微软维护的,因为原作者antirez 只做Linux部分,Windows他不愿意做。就算微软提交了代码他也不愿意合并。

Redis官方为什么不提供Windows版本?:https://www.zhihu.com/question/424272611/answer/2831004593

Windows Redis版本老旧,后续可能不再更新

Redis Github下载地址:https://github.com/tporadowski/redis/releases

Garnet性能强于Redis

Garnet: 力压Redis的C#高性能分布式存储数据库:https://www.cnblogs.com/InCerry/p/18083820/garnet_introduce

安装

开源仓库地址:https://github.com/microsoft/garnet
文档地址:https://microsoft.github.io/garnet/

安装成功

测试

安装可视化工具

免费实用的 Redis 可视化工具推荐, Redis DeskTop Manager 及 Another Redis Desktop Manager 的安装与使用,Redis Insight 下载安装:https://blog.csdn.net/boboJon/article/details/135073969

C# 代码连接测试

官方说,可以直接用redis的连接方式无缝连接garnet。我这里试一下

using Bogus;
using FreeSql;
using Newtonsoft.Json;
using RedisTest.Models;
using StackExchange.Redis;

namespace RedisTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 连接到garnet,这里要写死端口
            ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:3278");

            // Get the database (by default, it's DB 0)
            IDatabase db = redis.GetDatabase();

            // 存入数据
            db.StringSet("key1", "Hello, Redis!");

            // 读取数据
            string value = db.StringGet("key1");
            Console.WriteLine(value); // Output: Hello, Redis!

            // Increment a value
            db.StringIncrement("counter1");
            long counterValue = (long)db.StringGet("counter1");
            Console.WriteLine(counterValue); // Output: 1

            Console.WriteLine("运行结束");
            Console.ReadLine();
        }
    }
}

总结

这次我就是尝试一下新的技术,毕竟现在的主流还是Mysql+Redis。postgreSql+Garnet用起来还是有点激进了。但是我Garnet是完全按照Redis协议写的,可以无缝转到Garnet上面。而PostgreSql的数据库的性能就是碾压Mysql的,这个是已经得到证实的了。反正我后面的技术选型就往Postgresql和Garnet上面靠

标签:PostgreSql,WriteLine,Garnet,数据库,Redis,Console,https,using
From: https://www.cnblogs.com/gclove2000/p/18165679

相关文章

  • [转帖]国产主流数据库存储类型简析
    https://blog.csdn.net/solihawk/article/details/137807944国产数据库在技术架构上主要分为集中式、基于中间件分布式和原生分布式架构,衍生出集中式架构和分布式架构。那么在这些部署架构中,从数据分布的视角来看,在数据库中数据分布的形态是怎样的。本文将简要分析OceanBas......
  • PostgreSQL 中切换模式(schema)
    要在PostgreSQL中切换模式(schema),您可以使用SETsearch_path命令。模式是PostgreSQL数据库中用于组织和分隔对象的命名空间。以下是如何在psql命令行客户端中切换模式的步骤:打开psql客户端并连接到您的数据库。使用以下命令查看当前搜索路径(searchpath):sql复制代......
  • flink监控数据库表
    背景在日常服务运行中可能会遇到很多数据上的问题,一些我们可以通过日志查询,但是一些修改等操作日志无法查询到,binlog日志不方便查询而且不是所有表都需要日志,增加了查询的难度,我们考虑使用canal或者flink对binlog进行记录,这里flink,flink程序和客户端版本1.17.1pom.xml<?xm......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • mongodb数据库:手动释放磁盘空间
    平台:阿里云mongoDB云数据库版本:Mongodb4.2数据库集群方案:一主二从三分片需求:手动释放过剩磁盘空间从文档解析可知:delete数据或者做分片数据迁移,并不会释放磁盘空间,而是将这些空间标记为reuse可重用状态,后续新写入的数据会重用这部分空间。需求是手动释放这些空间,使用compact......
  • HarmonyOS 使用关系型数据库进行增删改查
    HarmonyOS中的关系型数据库基于SQLite组件,提供了一套完整的对本地数据库进行管理的机制。它支持事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句等特性。关系型数据库适用于存储包含复杂关系数据的场景,例如学生信息或雇员信息,这些数据之间有较强的对应关系。操......
  • 随笔-调试-数据库常用命令
    目录Mysql命令登录命令在命令行直接执行命令查看表数据/修改表数据/清空数据查看表结构/增加列/删除列/删除表wireshark抓mysql的报文Redis命令登录并执行命令/查看数据批量删除数据sqlite命令Mysql命令登录命令mysql-uroot-p'root'-h127.0.0.1-P3360xxxDb在命令行直接......
  • 备份恢复数据库
    #备份数据并且恢复数据#备份数据,要在DOS下执行mysqldump指令,这个指令其实在mysql安装目录\bin#这个备份的文件,就是对应的sql语句mysqldump-uroot-p-Bhsp_db02hsp_db03>d:\\bak.sqlDROPDATABASEhsp_db03;#恢复数据(注意:在DOS下进去mysql在执行)sourced:\\bak.sql#......
  • 数据库基础
    1.什么是数据库是存储数据的电子仓库2.数据库分类2.1关系型数据库定义:数据库中表与表存在某种关系,数据存储在不同的表中db2mysqloraclesqlserver2.2非关系型数据库定义:通常数据是以对象的形式存储在数据库中mongoredis3.linux添加卸载MySQLyuminstallmysql删除......
  • Python执行PG数据库查询语句:以Markdown格式打印查询结果
    哈喽,大家好,我是木头左!1.准备工作在开始之前,需要确保已经安装了psycopg2和pandas这两个Python库。psycopg2是Python的一个PostgreSQL数据库适配器,用于连接和操作PostgreSQL数据库。而pandas则是一个强大的数据处理库,将用它来处理查询结果并以Markdown格式打印。pipinstallp......