高并发系统内的缓存设计理解

缓存设计必须基于具体业务场景来思考,例如根据业务系统的具体吞吐量、数据量来设计。本文脱离业务场景讨论缓存设计,仅作学习参考。 一、临时缓存最简单的缓存,直接给key设置一个很短的TTL,1分钟或者几分钟,过期直接查DB,不考虑缓存穿透问题。 适合单表数据量少,读取很多的数据。 二、长期缓存适合热点数据,给key设置一个较长的TTL。 数据更新时,通过异步的方式去写入缓存。 异步的方式很多

- 阅读全文 -

go1.22 版本关于loopvar改动的理解

先看一下官网的原话 https://golang.google.cn/blog/go1.22 :The long-standing “for” loop gotcha with accidental sharing of loop variables between iterations is now resolved.简单来说就是循环时候的变量不再共享一个地址,官网给的demo不好观察其中的状况

- 阅读全文 -

gorm使用sqlmock进行sqlite的数据库CRUD单元测试

完整Demo代码本文将会围绕该demo进行讲解:https://github.com/Lichmaker/gorm-sqlite-sqlmock-demomock的作用在单元测试中,我们不希望动到实际的资源,例如DB、第三方HTTP API等。当我们在单元测试时遇到数据库操作,则会用到mock分析所有sql语句, 如果没有执行到预设的语句则会返回错误mock出语句的结果来达到数据库模拟的效果moc

- 阅读全文 -

go-zero使用Gorm时日志追踪trace问题处理

go-zero中的自带model使用起来没有特别舒心(其实功能都满足,主要是不习惯)。Gorm大家都很熟悉,也都用习惯了,但是要把Gorm中的logger与go-zero中的logx串起来,还是需要花一点心思的。注入logger首先是要解决logger。 我这里参考的是Summer老师GormLogger ( https://github.com/summerblue/gohub/blob/G02

- 阅读全文 -

docker client 无法连接 docker daemon 问题处理记录

Ubuntu 系统,原本通过apt安装了docker-ce。 前两天想用一下desktop,又装了一个desktop。不知道是不是安装有问题,结果导致docker client连不上docker daemon了➜ ~ docker ps Cannot connect to the Docker daemon at unix:///home/wuguozhang/.docker/desktop/d

- 阅读全文 -

最新文章

最近回复

分类

标签

归档

其它