ASP.NET Core微服务(六)——Redis效率与sqlserver数据库对比
Redis核心原理
Redis单线程为什么还能这么快 Redis所有的数据都是在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗的问题。正因为Redis是单线程,所以要小心使用Redis指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。 Redis单线程为何能处理那么多的并发客户端连接 Redis的IO多路复用:redis利用epoll(epoll 是Linux内核中的一种可扩展IO事件处理机制)来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。
redis一万次set测试
RedisDBHelper
代码语言:javascript复制using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Text;
namespace demo_20221010_redis
{
class RedisDBHelper
{
private ConnectionMultiplexer redis { get; set; }
public IDatabase db { get; set; }
/// <summary>
/// 其实有个链接就行,一般都是默认本地。如果不是就再传
/// </summary>
/// <param name="connection"></param>
public RedisDBHelper(string connection)
{
redis = ConnectionMultiplexer.Connect(connection);
db = redis.GetDatabase();
}
}
}
测试主函数
代码语言:javascript复制 static void Main(string[] args)
{
RedisDBHelper redis = new RedisDBHelper("127.0.0.1:6379");
DateTime start = DateTime.Now;
for (int i = 0; i < 10000; i )
{
//redis.db.StringSet("key" i, "666");
Console.WriteLine(redis.db.StringGet("key" i));
}
DateTime end = DateTime.Now;
Console.WriteLine(end - start);
}
Redis进行一万次的set操作共计消耗时间2.27秒
Redis进行一万次的get操作
sqlserver实验
这里前两天我做过实验了,数据是一个自增列,一个Name列,两列信息,添加一万次数据,总计消耗时间是13.5秒左右。我用的是DBHelper的方法,原生的那种你那个,速度应该是最快的,但是可以看到来与Redis的茶具还是非常大的呢。
我是使用的笔记本电脑进行测试的,如果使用PC机效果会更好。
演示的项目一不小心删掉了。但是我记得数据我就写上了。实际情况也可以自己测试。我这有现成的DBHelper,复制获取用用。