storage-knowledge

Provides Go SDK usage guides for ByteDance internal storage and messaging services.

Updated Apr 30, 2026
One-click install
npx skills add https://github.com/yuezhen-huang/my-bytedance-skillhub --skill storage-knowledge-yuezhen-huang
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: storage-knowledge
Source: https://github.com/yuezhen-huang/my-bytedance-skillhub/tree/main/storage-knowledge
Command: npx skills add https://github.com/yuezhen-huang/my-bytedance-skillhub --skill storage-knowledge-yuezhen-huang

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Go developers at ByteDance often struggle to find correct initialization patterns, configuration parameters, and best practices when integrating internal storage and messaging services like RDS, Redis, Abase, TOS, EventBus, BMQ, RocketMQ, ByteES, ByteGraph, ByteKV, and VikingDB. This Skill consolidates SDK usage guides, code examples, and common pitfalls into one knowledge base. ## Core Features & Use Cases - SDK Selection Guidance: Maps each storage service (RDS/MySQL, Redis, Bytedoc/MongoDB, Abase, TOS, EventBus, BMQ, RocketMQ, ByteES, ByteGraph, ByteKV, VikingDB) to its correct Go SDK package and initialization pattern. - Ready-to-Use Code Snippets: Provides initialization, CRUD, transaction, batch, and query examples for each SDK, including connection pool and timeout configuration. - Pitfall Avoidance: Documents known limitations such as Abase's lack of Lua script support, ByteKV's 100KB value size limit, and BMQ's 20MB message size cap. - Use Case: When you need to add Abase caching to a Go microservice, this Skill tells you to use goredis with NewAbaseClientWithOption, set IdleTimeout below 30 minutes, and avoid SDK-level retries. ## Quick Start Ask how to connect to a specific ByteDance storage service in Go, for example: show me how to initialize a ByteKV client and perform a CAS update.

Frequently Asked Questions about storage-knowledge

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I connect to Abase from a Go service?

Use the goredis SDK with NewAbaseClientWithOption, passing the cluster PSM and table name so keys do not need manual table prefixing. Set DialTimeout, ReadTimeout, and WriteTimeout to at least 250ms, and keep IdleTimeout under 30 minutes to avoid broken pipe errors from the Abase proxy.

Which Go SDK should I use for ByteES Elasticsearch access?

Use code.byted.org/toutiao/elastic with the version matching your cluster: v7 for OpenSearch 2.x or ES 7.x, v6 for ES 6.x, and v5 for ES 5.x. For OpenSearch 2.x or ES 7.x, use v7.0.42 or above, and disable sniff and healthcheck in the client options.

What is the difference between EventBus, BMQ, and RocketMQ at ByteDance?

EventBus is a general distributed messaging platform for async decoupling, delayed messages, and ordered event streams. BMQ is Kafka-protocol-compatible and suits high-throughput offline and nearline workloads. RocketMQ targets low-latency online scenarios like transactions requiring high reliability.

Does Abase support Lua scripts or deleting hash keys?

No, Abase does not support Lua scripts, and its Del command only works on String type keys. Complex structures like Hash, List, Set, and ZSet require their type-specific commands such as Hashexists or Httl.

What are the ByteKV key and value size limits?

ByteKV performs best with values under 10KB, requires values under 100KB for stability guarantees, and rejects writes over 1MB. Keys must be under 1024 bytes and cannot be empty. Batch operations should stay under 100 keys per request.

Why does my BMQ producer fail with message too large errors?

BMQ clusters reject single messages over 20MB and requests over 100MB total. Keep messages under 1MB as best practice, raise Producer.MaxMessageBytes if needed, and store large payloads in TOS or HDFS with only a link in the message.