数据库升级PostgreSql+Garnet

打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

目录

前言

我公司用的是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
  1. using FreeSql.DataAnnotations;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace RedisTest.Models
  8. {
  9.     public class Person
  10.     {
  11.         [Column(IsPrimary = true,IsIdentity =true)]
  12.         public int Id { get; set; }
  13.         public string Name { get; set; }
  14.         public int Age { get; set; }
  15.     }
  16. }
复制代码
模仿运行
  1. using Bogus;
  2. using FreeSql;
  3. using Newtonsoft.Json;
  4. using RedisTest.Models;
  5. using StackExchange.Redis;
  6. namespace RedisTest
  7. {
  8.     internal class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             IFreeSql freeSql = new FreeSqlBuilder()
  13.                 .UseConnectionString(DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456; Database=testDb;ArrayNullabilityMode=Always;Pooling=true;Minimum Pool Size=1")
  14.                 .UseAutoSyncStructure(true)//CodeFrist
  15.                 .Build();
  16.             if (freeSql.Ado.ExecuteConnectTest())
  17.             {
  18.                 Console.WriteLine("数据库连接成功!");
  19.             }
  20.             else
  21.             {
  22.                 Console.WriteLine("数据库连接失败");
  23.             }
  24.             //Bogus生成模拟数据
  25.             var faker = new Faker<RedisTest.Models.Person>()
  26.                 .RuleFor(t=>t.Name,f=>f.Name.FirstName())
  27.                 .RuleFor(t=>t.Age,f=>f.Random.Int(10,30));
  28.             //插入
  29.             {
  30.                 var lists = faker.Generate(10);
  31.                 freeSql.Insert(lists).ExecuteAffrows();
  32.                 Console.WriteLine($"插入数据");
  33.                 Console.WriteLine(JsonConvert.SerializeObject(lists, Formatting.Indented));
  34.             }
  35.             //查询最新的10条
  36.             {
  37.                 var lists  = freeSql.Select<RedisTest.Models.Person>()
  38.                     .OrderByDescending(t=>t.Id)
  39.                     .Take(10)
  40.                     .ToList();
  41.                 Console.WriteLine($"查询数据");
  42.                 Console.WriteLine(JsonConvert.SerializeObject(lists, Formatting.Indented));
  43.             }
  44.             Console.WriteLine("运行结束");
  45.             Console.ReadLine();
  46.         }
  47.     }
  48. }
复制代码
Navicate连postgresql

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。我这里试一下
  1. using Bogus;
  2. using FreeSql;
  3. using Newtonsoft.Json;
  4. using RedisTest.Models;
  5. using StackExchange.Redis;
  6. namespace RedisTest
  7. {
  8.     internal class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             // 连接到garnet,这里要写死端口
  13.             ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:3278");
  14.             // Get the database (by default, it's DB 0)
  15.             IDatabase db = redis.GetDatabase();
  16.             // 存入数据
  17.             db.StringSet("key1", "Hello, Redis!");
  18.             // 读取数据
  19.             string value = db.StringGet("key1");
  20.             Console.WriteLine(value); // Output: Hello, Redis!
  21.             // Increment a value
  22.             db.StringIncrement("counter1");
  23.             long counterValue = (long)db.StringGet("counter1");
  24.             Console.WriteLine(counterValue); // Output: 1
  25.             Console.WriteLine("运行结束");
  26.             Console.ReadLine();
  27.         }
  28.     }
  29. }
复制代码


总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表