ASP.NET Core微服务(六)——Redis效率与sqlserver数据库对比

2022-11-30 19:57:21 浏览数 (1)

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,复制获取用用。

0 人点赞