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

举报
红目香薰 发表于 2022/10/28 00:23:52 2022/10/28
【摘要】 ​ ​编辑ASP.NET Core微服务(六)——Redis效率与sqlserver数据库对比Redis核心原理Redis单线程为什么还能这么快Redis所有的数据都是在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗的问题。正因为Redis是单线程,所以要小心使用Redis指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis ...

 编辑

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


Redis核心原理

Redis单线程为什么还能这么快
Redis所有的数据都是在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗的问题。正因为Redis是单线程,所以要小心使用Redis指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。

Redis单线程为何能处理那么多的并发客户端连接

Redis的IO多路复用:redis利用epoll(epoll 是Linux内核中的一种可扩展IO事件处理机制)来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。

redis一万次set测试

RedisDBHelper

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();
        }
    }
}

测试主函数

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。