怎么做王者荣耀网站,一站式服务广告语,漫画网站做任务给金币,兰州市城乡建设局网站通知公告大家好#xff0c;豆小匠终于开始Coding了#xff0c;这期来聊聊实战相关的杂谈。
正文开始#xff01; 作为编程萌新的时候#xff0c;总想着把程序做复杂#xff0c;堆技术栈。
但是程序是为场景服务的#xff0c;比如#xff0c;我想提高接口的响应速度#xff0c…大家好豆小匠终于开始Coding了这期来聊聊实战相关的杂谈。
正文开始 作为编程萌新的时候总想着把程序做复杂堆技术栈。
但是程序是为场景服务的比如我想提高接口的响应速度应该怎么做呢
一个简单粗暴的方法就是加内存型的数据库比如RedisMemcache等。
那么怎么加Redis单机实例Redis集群
等等我现在就一台服务器额…
或许后端服务和Redis部署在同一台服务器速度还能快不少。
但是这样的话为什么不把数据直接存到内存呢 简单测试下Redis缓存和本地缓存的性能差异
package cache_testimport (contextlogtestinggithub.com/patrickmn/go-cachegithub.com/redis/go-redis/v9
)var localCache *cache.Cache
var redisCache *redis.Clientfunc TestMain(m *testing.M) {// 初始化一个默认永不过期的本地缓存localCache cache.New(cache.NoExpiration, cache.NoExpiration)// 连接本地启动的redisredisCache redis.NewClient(redis.Options{Addr: 127.0.0.1:6379,Password: ,DB: 0,PoolSize: 100,})_, err : redisCache.Ping(context.Background()).Result()if err ! nil {log.Fatalf(redis client init failed: %v, err)}m.Run()
}func BenchmarkRedisCacheStore_Get(b *testing.B) {b.StopTimer()ctx : context.Background()redisCache.Set(ctx, key, value, 0)b.StartTimer()for i : 0; i b.N; i {redisCache.Get(ctx, key)}
}func BenchmarkLocalCacheStore_Get(b *testing.B) {b.StopTimer()localCache.Set(foo, bar, cache.NoExpiration)b.StartTimer()for i : 0; i b.N; i {localCache.Get(foo)}
}redis cache测试结果local cache测试结果goos: windowsgoarch: amd64pkg: github.com/anjude/backend-superone/test/cache_testcpu: AMD Ryzen 7 6800H with Radeon GraphicsBenchmarkRedisCacheStore_GetBenchmarkRedisCacheStore_Get-16 31167 34784 ns/opPASSgoos: windowsgoarch: amd64pkg: github.com/anjude/backend-superone/test/cache_testcpu: AMD Ryzen 7 6800H with Radeon GraphicsBenchmarkLocalCacheStore_GetBenchmarkLocalCacheStore_Get-16 217163282 5.389 ns/opPASS
让ChatGPT解读下↓↓↓ 大概意思就是Redis缓存每次获取时间是本地缓存的6455倍。不同机器测试有差异 看着服务器上运行的Redis降本增效这么简单
本地缓存这么nb只能玩单机吗
当然不是了… 应该说什么场景适合使用本地缓存。
下面描述这个场景
频繁读取的数据。对读取速度敏感的数据。相对稳定不经常变化的数据。能容忍一定延迟更新的数据。
不一定完全满足上述的条件只是满足的越多越适合使用本地缓存。
频繁读取和读取速度敏感的数据很容易理解使用本地缓存就是为了快还可以缓解远程共享缓存的压力。
但是如果我们的服务器多起来了每台实例都缓存有一份数据如果数据有更新同步到其他实例的成本就会升高。
如果能满足第三点相对稳定的数据我们仍旧可以使用本地缓存否则使用远程共享缓存。
那么第四点呢这个数据实在太稳定了稳定到我们可能不需要第一时间察觉到它的更新这时候甚至不需要实例间的同步只需要实例定时刷新这个数据就行。
比如一杯豆浆的价格常年都是2元某一天升到3元我5分钟刷新一次价目表最多延迟个5分钟才更新价格其实还可以接受的。 这期就喵到这收