十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Garnet 命令体系全景:Redis API 兼容矩阵与自定义操作符扩展框架解析

Garnet 命令体系全景:Redis API 兼容矩阵与自定义操作符扩展框架解析 Garnet 命令体系全景Redis API 兼容矩阵与自定义操作符扩展框架解析【免费下载链接】garnetGarnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.项目地址: https://gitcode.com/GitHub_Trending/garnet4/garnetGarnet 是微软研究院推出的远程缓存存储系统其核心卖点之一就是对 Redis RESP 协议命令的深度兼容。本文以 Garnet 官方命令概览文档website/docs/commands/overview.md为主线完整梳理 Garnet 支持的 26 类命令分类与逐条命令的实现状态➕ 已实现 / ➖ 未实现并深入解析其独有的自定义操作符框架Custom Operator Framework与 Garnet 特有命令。读完本文你将能够对照官方命令矩阵判断业务所需命令在 Garnet 中的可用性并了解如何在服务端用 C# 注册自定义数据结构与 read-modify-write 操作。一、Garnet 的 API 兼容定位兼容 Redis 客户端不兼容全部命令Garnet 的设计目标是与现有 Redis 客户端协同工作——它实现了 RESP 协议因此redis-cli、StackExchange.Redis、ioredis等主流客户端开箱即用。但官方文档明确说明Garnet supports a large (and growing) subset of the Redis REST API surface.这句话包含两层含义覆盖范围广且在持续扩张Garnet 已经覆盖了 Redis 命令的绝大部分常用面包括字符串、哈希、列表、集合、有序集合、地理位置、位图、HyperLogLog、发布订阅、Lua 脚本、事务、集群管理、ACL 等兼容是子集而非全量仍然存在一批尚未实现的命令如 STREAM 全部命令、FUNCTIONS 全部命令、部分 MODULE 命令等官方以api-compatibility.md维护了一张逐条标记的清单并欢迎社区通过 Pull Request 贡献新命令。此外Garnet 不止于模仿 Redis。官方文档特别强调它还提供了一套强大的自定义操作符框架custom operator framework允许用户注册自定义的 C# 数据结构与 read-modify-writeRMW操作并通过 RESP 协议的扩展形式在服务端调用。这是 Garnet 区别于纯 Redis 兼容层的关键能力本文第四部分将结合源码详述。二、26 类命令分类总览官方 API Compatibility 文档 将全部命令划分为 26 个类别并给出图例约定Legend: ➕ supported, ➖ not supported.后续小节按分类逐一列出完整命令清单含实现状态与官方备注每条命令的语法与 RESP 返回格式可点击对应分类文档继续深入。1. ACLACLAccess Control List是 Garnet 基于 Redis 6 ACL 模型实现的访问控制体系代码位于 libs/server/ACL。命令状态备注CAT➕DELUSER➕DRYRUN➖GENPASS➕GETUSER➕LIST➕LOAD➕HELP➖LOG➖SAVE➕SETUSER➕USERS➕WHOAMI➕2. BITMAP位图命令归类于 analytics.md。命令状态备注BITCOUNT➕BITFIELD➕BITFIELD_RO➕BITOP AND➕BITOP NOT➕BITPOS➕GETBIT➕SETBIT➕3. CLIENT命令状态备注CACHING➖GETNAME➕GETREDIR➖HELP➖ID➕INFO➕KILL➕LIST➕NO-EVICT➖NO-TOUCH➖PAUSE➖REPLY➖SETINFO➕SETNAME➕TRACKING➖TRACKINGINFO➖UNBLOCK➕UNPAUSE➖4. CLUSTER集群命令覆盖槽位管理、节点发现、故障转移、副本管理、数据迁移等完整说明见 cluster.md底层实现位于 libs/cluster。命令状态备注ADDSLOTS➕ADDSLOTSRANGE➕ASKING➕BUMPEPOCH➕COUNT-FAILURE-REPORTS➖COUNTKEYSINSLOT➕DELSLOTS➕DELSLOTSRANGE➕FAILOVER➕FLUSHSLOTS➖FORGET➕GETKEYSINSLOT➕HELP➕INFO➕KEYSLOT➕LINKS➖MEET➕MYID➕MYSHARDID➖NODES➕READONLY➕READWRITE➕REPLICAS➕REPLICATE➕RESET➕SAVECONFIG➖SET-CONFIG-EPOCH➕SETSLOT➕SHARDS➕SLAVES➕(Deprecated)SLOTS➕(deprecated)SPUBLISH➕5. COMMAND元命令类别用于查询命令自身的信息见 server.md。命令状态备注COMMAND➕COUNT➕DOCS➕GETKEYS➕GETKEYSANDFLAGS➕HELP➖INFO➕LIST➖6. CONNECTION连接生命周期命令见 generic-commands.md。命令状态备注AUTH➕ECHO➕HELLO➕PING➕QUIT➕(Deprecated)SELECT➕7. FUNCTIONS命令状态备注FCALL➖FCALL_RO➖DELETE➖DUMP➖FLUSH➖HELP➖KILL➖LIST➖LOAD➖RESTORE➖STATS➖FUNCTIONS 类别整体尚未实现服务端脚本能力由 Lua 体系承载见第 19 类 SCRIPTING。8. GENERIC通用键命令命令状态备注PERSIST➕PEXPIRE➕PEXPIREAT➕PEXPIRETIME➕PTTL➕RANDOMKEY➖RENAME➕RENAMENX➕RESTORE➕SCAN➕SORT➖SORT_RO➖TOUCH➖TTL➕TYPE➕UNLINK➕WAIT➖WAITAOF➖9. GEO地理位置命令状态备注GEOADD➕GEODIST➕GEOHASH➕GEOPOS➕GEORADIUS➕(Deprecated)GEORADIUS_RO➕(Deprecated)GEORADIUSBYMEMBER➕(Deprecated)GEORADIUSBYMEMBER_RO➕(Deprecated)GEOSEARCH➕GEOSEARCHSTORE➕10. HASH哈希类别命令含 Redis 7.4 新增的字段级过期命令 HEXPIRE/HPEXPIRE 系列见 contenteditable="false">【免费下载链接】garnetGarnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.项目地址: https://gitcode.com/GitHub_Trending/garnet4/garnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表