网站轮播图片特效,怎么.做网站,图书网站建设的主要工作流程,30天网站建设实录视频点击上方蓝字关注 #x1f446;#x1f446;没领红包封面的可以在文末领取大多数人使用 Redis 作为远程缓存存储#xff0c;因为它速度快。Redis6 通过消除不必要的网络往返#xff0c;可以使其更快。服务器辅助的客户端缓存这个方法很简单。Redis6 会记录客户端请求的键值… 点击上方蓝字关注 没领红包封面的可以在文末领取大多数人使用 Redis 作为远程缓存存储因为它速度快。Redis6 通过消除不必要的网络往返可以使其更快。服务器辅助的客户端缓存这个方法很简单。Redis6 会记录客户端请求的键值并在键值发生变化时通知客户端。因此客户端现在可以重用响应而不需要通过网络查询 Redis直到收到相应的无效通知。这个新特性称为服务器辅助的客户端缓存。具体可参考: redis 官方文档[1]尽管这项技术很简单但它需要升级到新的 RESP3 协议或者在 RESP2 Pub/Sub 通道上做个小技巧来接收通知。对于现有的客户端库来说实现这两个选项都不容易。自 2020 年发布 Redis 6 以来这已经是近两年前的事情了。现有的 Golang 客户端库中仍然很难使用这个强大的新功能。因此有了下面这个新的客户端实现。Rueidis[2]一个快速 Golang Redis RESP3 客户端实现自动流水线支持客户端缓存。多亏了 RESP3 的简单性和自动流水线技术。新的客户端库通常比现有的客户端库有更高的吞吐量。下面是我的 Macbook M1 Pro 的基准对比。更多请查看 完整基准测试源代码[3]如果缓存命中服务器辅助的客户端缓存可以执行得非常好因为没有网络交换。它只需要大约165ns平均检索记录从客户端内存缓存。即使没有客户端缓存在本地基准测试上也可以实现14x的吞吐量。请参见parallelism(64)-key(16)-value(64)-10的情况。示例go get github.com/rueian/rueidis下面是一个如何在新的客户端库中使用服务器辅助的客户端缓存的例子:package mainimport (contextfmttimegithub.com/rueian/rueidis
)func main() {client, err : rueidis.NewClient(rueidis.ClientOption{InitAddress: []string{127.0.0.1:6379}})if err ! nil {panic(err)}defer client.Close()cmd : client.B()ctx : context.Background()// HSET myhash f v_ client.Do(ctx, cmd.Hset().Key(myhash).FieldValue().FieldValue(f, v).Build()).Error()// HGETALL myhashresp : client.DoCache(ctx, cmd.Hgetall().Key(myhash).Cache(), time.Minute)fmt.Println(resp.IsCacheHit()) // falsefmt.Println(resp.AsStrMap()) // map[f:v]// cache hit on client sideresp client.DoCache(ctx, cmd.Hgetall().Key(myhash).Cache(), time.Minute)fmt.Println(resp.IsCacheHit()) // truefmt.Println(resp.AsStrMap()) // map[f:v]
}DoCache()方法在底层使用服务器辅助的客户端缓存它有 3 个参数:支持 OpenTelemetry 跟踪的上下文。Redis 命令应该从命令生成器client.B()构建。客户端 TTL 与 PTTL 结合使用以确保客户端 TTL 不长于 Redis 端。此外可以使用IsCacheHit()检查响应是否来自客户端内存。如果 OpenTelemetry 集成被启用还可以通过两个指标rueidis_do_cache_hits和rueidis_do_cache_miss来观察缓存命中率。Rueidis 还支持其他功能如 Redis 集群Pub/Sub, Streams, Lua, Transaction。还支持流行的 Redis 模块。例如: RedisBloom, RedisJSON, RediSearch, RedisTimeseries。参考资料[1]redis 官方文档: https://redis.io/topics/client-side-caching[2]Rueidis: https://github.com/rueian/rueidis[3]完整基准测试源代码: https://github.com/rueian/rueidis-benchmark点个在看集群永保稳定