可平替 Redis ,微软开源 Garnet 缓存

JAVA架构日记

共 2551字,需浏览 6分钟

 ·

2024-04-12 03:02

78da547107057ca503751b48c382b8fb.webp

garnet 是什么

最近,微软正式开源了缓存存储系统 Garnet[1]。据微软官方介绍,Garnet 项目是从零开始采用 C# 构建的,注重性能(尤其是吞吐量中的线程可扩展性和更高比例的低延迟水平)。

48788de78f9fb36dbc999be8cc9717d5.webp

Garnet 比 Redis 更优秀的原因主要是它针对现代硬件进行了优化。Garnet 设计时考虑了现代多核处理器和高速网络的特点,使其在处理大量客户端连接和小批量数据时能够提供更高的吞吐量和更低的延迟。此外,Garnet 的架构使得它能够更有效地利用处理器缓存,从而提高性能。这些优化使得 Garnet 在现实的网络环境中表现更加出色。--FROM InfoQ

安装

  • 目前 garnet 只提供了 nupkg 的依赖包,暂未提供官方的镜像下载地址,笔者已在 Visual Studio 2022 编译 x86 已上传至 dockerhub
      
      docker run -p 3278:3278  -d pig4cloud/garnet:latest

测试使用

  • 使用本地的 redis-cli 客户端即可链接 Garnet , 兼容 redis 协议。
      
       ~  redis-cli -p 3278
127.0.0.1:3278> info
# Server
garnet_version:1.0.0
garnet_mode:standalone
os:Unix 6.5.13.121
processor_count:8
arch_bits:64
uptime_in_seconds:20.9056586
uptime_in_days:0.0002419636412037037
monitor_task:disabled
monitor_freq:0
latency_monitor:disabled
run_id:6e00f92a00c16e2ad992353b7fef27d6a36e1a60
...
  • get set
      
      127.0.0.1:3278> set k1 v1
OK
127.0.0.1:3278> get k1
"v1"
  • 命令支持列表
关键词
BITMAP
CLUSTER
CONNECTION
FUNCTIONS
GENERIC
GEO
HASH
HYPERLOGLOG
KEYS
LIST
PUB/SUB
SCRIPTING
SERVER
SET
SORTED SET
STREAM
STRING
TRANSACTIONS

Java 项目平替 Redis 操作

这里以 PIG 微服务开发平台[2]为例,项目基本使用了 Redis 常见命令 SET HASH PUB/SUB 等:

  • 只需要修改配置文件中的 redis 的配置指向 Garnet Server 即可, 链接驱动保持 spring-boot-starter-data-redis 即 lettuce 不变。
fd6b4a880dc5ae1be8b80583712cecf1.webp
      
      127.0.0.1:3278> keys *
1) "k1"
2) "client:details::pig"
3) "menu_details::1"
4) "menu_details::2"
5) "user_details::admin"
6) "token::refresh_token::skVN2wyPrH3SV607JOLau1MED6VdXH0WOojq1A57fH2EtL2kdTaEmaVd8n24aL89uCUTeR32fKrTXi07nCBBfXB5pNUNDs9eHWgl-AjCQLXd08Z8qK0RBNwk2nqsqCrM"
7) "token::access_token::NGcjsiHNIAhdH0pSZwz2WTyKhxtzrFzjYCpO3MhG4nX2Nmsj9aqO6OVOlGvNGczAgYGztaU-3kTKpuyf7awUpMq7YbIDCNs8o2gIqqtGC2-dRGsJfj3wsGp834iRSQ9j"
8) "DEFAULT_CODE_KEY:84156608-9595-46c6-93c4-990828437d16"
(1.45s)

总结

官方表示:任何“使用 Redis、KeyDB 或者 Dragonfly 作为缓存存储方案的现有应用程序都适合 Garnet, 能提供更高的吞吐量、更低延迟、通过减少需要托管的缓存存储分片来降低成本,还可将数据溢出至本地磁盘或 SSD 以缓存超过内存大小的数据。此外,Garnet 也适合各种希望借极高性能缓存层提高性能、降低后端存储服务器或数据库成本的新型应用程序。”

参考资料 [1]

Garnet: https://github.com/microsoft/garnet

[2]

PIG 微服务开发平台: https://gitee.com/log4j/pig


浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报