网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

dotnet使用redis时需要注意的问题 - Rick Carter - 博客

时间:2025-11-01 21:36

人气:

作者:admin

标签:

导读:1.性能问题-批量多次读写、序列化和反序列化的场景 注意看到dotnet下的IDistributedCache接口内部方法声明都是针对单个key的,当需要多次大量读写同一类型kv值时,存在多次连接redis的情况...

1.性能问题-批量多次读写、序列化和反序列化的场景

注意看到dotnet下的IDistributedCache接口内部方法声明都是针对单个key的,当需要多次大量读写同一类型kv值时,存在多次连接redis的情况,导致性能特别慢。
在abp框架中AbpRedisCache有些SetMany和GetMany的方法,它可以很好的解决这个问题。
今天再分享一个Redis的批操作的写法(db.CreateBatch()),性能会更好一些,大致写法如下。

    static async Task Main(string[] args)
    {
        // 连接到 Redis 服务器
        var connection = ConnectionMultiplexer.Connect("localhost:6379");
        var db = connection.GetDatabase();

        // 使用管道进行批量操作
        var batch = db.CreateBatch();

        // 执行多个命令
        var task1 = batch.StringSetAsync("key1", "value1");
        var task2 = batch.StringSetAsync("key2", "value2");
        var task3 = batch.StringSetAsync("key3", "value3");

        // 提交批量操作
        batch.Execute();

        // 等待所有异步操作完成
        await Task.WhenAll(task1, task2, task3);

        // 验证结果
        Console.WriteLine(await db.StringGetAsync("key1"));  // 输出 "value1"
        Console.WriteLine(await db.StringGetAsync("key2"));  // 输出 "value2"
        Console.WriteLine(await db.StringGetAsync("key3"));  // 输出 "value3"
    }

另外我们还要注意,尽量别存取复杂对象,尽量是值类型、string和byte[],因为复杂对象我们很多都是json序列化成string后再存,读的时候还要反序列化,大量数据或者特别大的对象序列化和反序列化都是很消耗性能的,特别批量存取的情况下更严重。

2.报错问题

经常报超时错误,StackExchange.Redis.TimeoutException。
很多时候与redis本身没关系,很多是我们用了一些第三方库导致,比如:
CSRedis-到目前内存实现都是同步代码
EasyCaching-极容易导致超时情况,它内存莫名其妙开锁
本人目前就发现这两个,主要是极高并发的情况下,普通使用基本没问题,调试当然是发现不了问题的。
所以干脆别再用第三方库,就用StackExchangeRedis好了,其他都只能是基本的封装,别玩花样(比如试图写个库自动适配其他缓存场景)。

3.吐槽下dotnet下的生态

dotnet开源已经很久了,本身非常好用,特别是其他重量级的库,比如EFCore就非常棒。
但是很多第三方库就很糟糕了,redis这个只是其中有一个,其他方面的库在我使用过后都存在的各种问题,而且都非常棘手,都是容易引起性能问题的情况。
所以总结就是少用各种组件和各种库,即便有些库有大量的推荐文章,真用起来,高并发的情况下就是灾难。

作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信