Skip to content

Release/v1.3.3 bugfix - #263

Closed
Hoverhuang-er wants to merge 51 commits into
HDT3213:masterfrom
Hoverhuang-er:release/v1.3.3-bugfix
Closed

Hoverhuang-er wants to merge 51 commits into
HDT3213:masterfrom
Hoverhuang-er:release/v1.3.3-bugfix

Conversation

@Hoverhuang-er

Copy link
Copy Markdown

No description provided.

shuhaoHuang added 30 commits July 21, 2026 23:38
- Replace interface{} with any
- Migrate log to log/slog
- Update encoding/json to encoding/json/v2 with GOEXPERIMENT=jsonv2
- Migrate math/rand to math/rand/v2
- Replace ioutil with os package equivalents
- Update all dependencies to latest compatible versions
- Add RESP3 reply types (Map, Set, Push, Double, Bool, BigNumber, VerbatimString, Null, Attribute)
- Implement HELLO 2/3 with AUTH/SETNAME
- Implement CLIENT command (SETINFO, SETNAME, ID, LIST, KILL, PAUSE, TRACKING, CACHING)
- Add pub/sub RESP3 push type delivery
- Add Array data type with 12 AR* commands (ARSET, ARGET, ARMSET, ARMGET, ARLEN, ARCOUNT, ARINFO, ARAPPEND, ARINSERT, ARREM, ARPOP, ARTRIM)
- Add RDB/AOF persistence for Array type
- Add HashFieldChangeCallback for hash field-level notifications
…tions

- Add INCREX command: atomic increment with upper bound rate limiting
  Supports BY, UBOUND, LBTIME, EX/PX, ENX options
- Add ZUNION/ZINTER commands with WEIGHTS, AGGREGATE, WITHSCORES and COUNT
- Add prepareZSetCombine for proper multi-key extraction
- Add Hash field-level notifications via HashFieldChangeCallback
  Auto-fires on all hash mutations: HSET, HSETNX, HMSET, HDEL, HINCRBY, HINCRBYFLOAT
- Add dedicated test suites for INCREX and ZUNION/ZINTER
Streams (Redis 8.8 + XNACK):
- Full stream data structure with entries, consumer groups, pending tracking
- XADD, XLEN, XRANGE, XREAD, XDEL, XTRIM, XGROUP, XREADGROUP
- XACK, XNACK (Redis 8.8), XINFO, XPENDING

RediSearch:
- Inverted index with TEXT and TAG field types
- FT.CREATE with ON HASH PREFIX, SCHEMA definition
- FT.SEARCH with full-text query, LIMIT, RETURN
- Auto-indexing from hash field changes
- FT.DROPINDEX, FT.INFO, FT._LIST

Redis-Vector:
- VECTOR field type (FLAT/HNSW) with FLOAT32, DIM, DISTANCE_METRIC
- KNN search via dedicated syntax
- Cosine, L2, and Inner Product distance metrics
- PARAMS support for query vector passing

Time Series:
- TS.CREATE with RETENTION and LABELS
- TS.ADD with automatic timestamp generation
- TS.GET, TS.RANGE with AGGREGATION support
- Multiple aggregation types: AVG, SUM, MIN, MAX, RANGE, COUNT, STD, VAR, TWA
- Update all dependencies to latest compatible versions
  github.com/hashicorp/raft v1.7.0->v1.7.3
  github.com/hdt3213/rdb v1.0.18->v1.3.2
  github.com/panjf2000/gnet/v2 v2.7.2->v2.10.0
  Various indirect dependencies updated
- Add build.sh for multi-platform release builds
  Targets: linux/windows/darwin × amd64/arm64/riscv64
  Output: godis_OS_ARCH.zip format with SHA256 checksums
- Add .github/workflows/release.yml for GitHub Actions CI/CD
  Builds all 9 platform targets on tag push
  Creates GitHub Release with artifacts and checksums
- Config migration: standalone.toml, cluster.toml with TOML format
- Nacos integration via nacos-go-sdk (NACOS_ADDR env)
- Config auto-detection (.toml > .conf), backward compatible
- test.yml: GitHub Actions CI with Go 1.26, Redis 5, coverage
- release.yml: package standalone.toml with binary, include CHANGELOGS.md
- build scripts: GOEXPERIMENT=jsonv2, -tags greenteagc, v1.3.1
- README.md/README_CN.md: Redis 8.8.0, RediSearch, TimeSeries, Vector
- README_JA.md (Japanese), README_FI.md (Finnish) translations
- CHANGELOGS.md with v1.3.0/v1.3.1 entries
- Rueidis client sample code in all READMEs
- Fix: duplicate go:build in greenteagc.go
- Fix: AnnounceAddress to use net.JoinHostPort for IPv6 safety
…argets

Go does not support GOARCH=riscv64 on Windows or Darwin;
it is only supported on Linux. This was causing the release
workflow to fail on v1.3.1 tag.
cmd/godis/       — entry point (main.go)
internal/        — private application code
  aof/, cluster/, config/, database/, datastruct/,
  interface/, lib/, pubsub/, redis/, tcp/
config/          — config templates (toml, conf)
scripts/         — build/release scripts
docs/            — documentation
testdata/        — test fixtures (test.rdb)

All import paths updated from github.com/hdt3213/godis/xxx
to github.com/hdt3213/godis/internal/xxx.
Fixed TestLoadRDB path. Updated CI, build scripts, .gitignore.
- Remove legacy .conf file parsing from config.go (TOML only now)
- Delete all .conf files (redis.conf, node*.conf, example.conf)
- Merge 4 build shell scripts into single Makefile
- Delete .travis.yml (project uses GitHub Actions)
- Update docs/AGENTS.md for new layout
- Clean up .gitignore
- Add patches/bolt/ with all of boltdb/bolt v1.3.1 source
- Add bolt_riscv64.go with mmap constants for riscv64
- Use replace directive: github.com/boltdb/bolt => ./patches/bolt
- Revert raft-boltdb/v2 back to raft-boltdb (v1 + local bolt patch)
- fail-fast: false so one failed matrix entry doesn't cancel others
- continue-on-error: true on Build step
- release/upload-checksums jobs: if: !cancelled() to run despite failures
- Add Dockerfile (multi-stage, alpine-based)
- Add docker job to release workflow
- Builds linux/amd64, linux/arm64, linux/riscv64
- Pushes to ghcr.io/Hoverhuang-er/godis with semver and latest tags
charts/godis/     — Helm chart for Kubernetes deployment
cmd/operator/     — Kubernetes operator entry point
internal/operator/ — CRD types + controller reconciler
Dockerfile        — Multi-stage godis image build for linux/amd64,arm64,riscv64
Dockerfile.operator — Operator container image
.github/workflows/release.yml:
  - godis-image:   push godis image to GHCR
  - operator-image: push operator image to GHCR
  - helm-chart:    package and push Helm chart to GHCR/charts
- Generate CHANGELOGS.md from git log (fix release workflow)
- Fix Prepare Release Notes step to use template + git log
- Add docker-compose.yml for minimal deployment
- Update README with platform-specific deploy docs
- Operator: default 3 nodes 0.5c1g, KEDA/HPA/VPA support
- Add AutoscalingSpec to CRD (min/max replicas, CPU/mem targets)
- Support k8s 1.34-1.36 and k3s
REPO_LC=${GITHUB_REPOSITORY,,} ensures all tags use lowercase,
required by Docker/OCI registry. Rewrote workflow cleanly.
- --mount=type=cache for /go/pkg/mod and /root/.cache/go-build
  => module downloads and build artifacts shared across buildx platforms
- .dockerignore excludes docs, charts, operator src from godis context
- Adds # syntax=docker/dockerfile:1 for BuildKit cache mounts
godis-image:      3 parallel jobs (amd64, arm64, riscv64)
godis-manifest:   merges into ghcr.io/repo:{ver}, latest
operator-image:   2 parallel jobs (amd64, arm64)
operator-manifest: merges into ghcr.io/repo/operator:{ver}, latest
test: 22 parallel jobs, one per internal/ package
  - fail-fast: false, each pkg independent
  - needsRedis flag for database and redis/client
  - each uploads coverage profile as artifact

coverage: merges all profiles -> goveralls report
docker tags cannot contain /, so linux/amd64 -> linux-amd64
artifact names cannot contain /, so coverage-cluster/raft -> coverage-cluster-raft
internal/monitoring/metrics.go — Prometheus /metrics endpoint
  - redis_exporter compatible naming
  - Standard: connected_clients, commands, memory, ops/sec, keyspace
  - Per-DB: keys, expires, key_length
  - Big key tracking: keys exceeding string/collection thresholds
  - Hot key tracking: top-20 accessed keys with counters
  - Go runtime: goroutines, GC pauses
config: prometheus_enabled, prometheus_port (default 9121)
Hooks into Server.Exec (+IncrCommands), Handle (+IncrConnections),
AfterClientClose (+DecrConnections), and key access recording
- GOEXPERIMENT=jsonv2,greenteagc for all build targets
- GOAMD64=v3 for x86-64 SIMD (AVX2/FMA/BMI)
- greenteagc runtime tuning import activated
- Dir default fallback moved into populateFromViper for hot-reload
- CI build caching via Docker buildx (type=gha,mode=max)
- Prometheus monitoring documentation
- Fix all language links: blob/master/README_*.md -> blob/master/docs/README_*.md
- Create root README.md symlink -> docs/README.md (GitHub homepage)
- Add missing Prometheus monitoring section to Japanese and Finnish READMEs
- feat: --cli flag with built-in redis-cli (-h, -p, -a)
- build: GOEXPERIMENT=greenteagc + GOAMD64=v3 SIMD (AVX2/FMA/BMI)
- fix: suppress RDB not-found error on fresh startup
- fix: error wrapping in loadRdbFile for errors.Is compatibility
- docs: Prometheus section in JA/FI READMEs
- docs: fix language links (blob/master/docs/)
- docs: root README.md symlink for GitHub homepage
- docs: update CHANGELOGS.md
- feat: CLI SUBSCRIBE/PSUBSCRIBE with raw TCP + RESP parser
- docs: Mermaid bar chart for benchmark data with table
- concurrent TCC: parallel prepare/commit/rollback via goroutines + WaitGroup
- RelayWorkerPool: channel-based goroutine pool per peer node
- parallelRelay helper: concurrent relay with context cancellation on first error
- config: cluster.worker_pool / cluster.relay_parallel options
- requestRollback parallelized with goroutines
shuhaoHuang added 21 commits July 22, 2026 01:37
- FT.SEARCH: response includes scores per Redis Stack spec
- execSet: auto-index string keys via search.IndexDocByPrefix
- execDel: auto-remove DEL keys via search.RemoveDocByPrefix
- JSON.SET/GET/DEL with JSONPath ($, .key, [N])
- JSON.TYPE, JSON.STRLEN, JSON.NUMINCRBY, JSON.NUMMULTBY
- JSON.OBJLEN, JSON.OBJKEYS
- JSON.ARRAPPEND, JSON.ARRPOP, JSON.ARRTRIM, JSON.ARRINSERT
- JSON.CLEAR, JSON.TOGGLE, JSON.STRAPPEND
- AOF persistence for all JSON commands
- HyperLogLog (PFADD/PFCOUNT/PFMERGE)
- Bloom filter (BF.RESERVE/BF.ADD/BF.EXISTS/BF.MADD/BF.MEXISTS/BF.INFO)
- T-Digest (TDIGEST.CREATE/ADD/QUANTILE/INFO/RESET/MERGE)
- Top-K (TOPK.RESERVE/ADD/COUNT/QUERY/LIST)
- Count-min Sketch (CMS.INITBYDIM/INITBYPROB/INCRBY/QUERY/MERGE/INFO)
- Bitfield (BITFIELD/BITFIELD_RO with GET/SET/INCRBY, WRAP/SAT/FAIL)
- RedisJSON (16 commands from previous commit)
- Entra ID JWT token validation with JWKS key rotation
- Server-side AUTH support for Azure AD access tokens
- azure.entra_tenant_id / azure.entra_app_id config options
- CLI --entra-tenant / --entra-app flags
- redis-vl-golang compatibility verified (FT.SEARCH, FT.INFO, FT.CREATE)
- embed.FS bundles dashboard.html.tmpl into binary
- Fluent Web Components purple/white theme
- Query interface: read-only redis commands via HTTP API
- Hot keys, big keys, DB stats monitoring with ranking tables
- --web-port, --server-host, --server-port flags
- Real-time OPS sparkline bar chart with ANSI terminal rendering
- DB Keys, Memory usage, Connection count display
- golang.org/x/term for raw terminal mode
- --monitor flag with --server-host/--server-port/-a support
- --cli --monitor: split-screen TUI (3 monitoring panels + redis-cli)
- --web: simplified, uses -h/-p/-a flags, port 63808
- -u flag: redis:// URL support
- fix: syscall.SIGWINCH not available on Windows (build-tag split)
- ci: remove continue-on-error from build, guard Package step
- ci: concurrency group + cancel-in-progress for release.yml and test.yml
- fix: EachTimeServerInfo init dropped during config edit
- fix: StartUpTime now set in SetupConfig on startup
- NEW: internal/web/token.go - Token engine generating 128-char random uppercase tokens
  with configurable expiry (default 72h, 0=permanent) and cleanup loop
- NEW: internal/web/api.go - HTTP API server with:
  * POST /api/auth - authenticate with requirepass, receive rotating token
  * GET /api/commands - execute Redis commands via query params
  * X-HEADER-AUTHTOKEN middleware for authenticated requests
  * Async Redis client connection with retry for delayed TCP server startup
- NEW: docs/prd.md - comprehensive product requirements document
- CHG: internal/config/config.go - added HttpApiEnabled/HttpApiPort/HttpApiHost fields
- CHG: cmd/godis/main.go - HTTP API server auto-starts in main process
- CHG: config/*.toml - added [http_api] configuration section

Token spec:
- 128 uppercase ASCII characters
- Default 72-hour expiry, configurable via POST body
- Parameter expired=0 or expired="always" for permanent tokens
- Backed by requirepass, not a replacement for Redis AUTH
- Bump godisVersion to 1.3.2
- Add v1.3.2 changelog (HTTP API, token auth, PRD)
- Update version references in all docs
- Add HTTP API to Key Features list
- Add Go-Redis client examples (GET/SET + PubSub)
- Add redis-py client examples (GET/SET + PubSub)
- Add HTTP API section with auth flow, curl examples, and parameter table
- Standard TCP port changed from 6399 to 6379 (standard Redis port)
- HTTP API port changed from 63809 to 63790
- Web dashboard port changed from 63808 to 63800 (--web flag)
- Prometheus metrics stays at 9121
- Updated all config files (standalone.toml, cluster.toml, default.toml)
- Updated Dockerfile, docker-compose.yml, Helm charts
- Updated operator controller defaults
- Updated all documentation (EN, CN, JA, FI READMEs, PRD, CHANGELOGS)
- Updated comments and test files
- Add WebPort (default 63800) to ServerProperties struct
- Populate WebPort from [web] section in TOML files
- Add [web] section to default.toml, standalone.toml, cluster.toml
- Use config.WebPort in startWebDashboard instead of hardcoded :63800
- Document web dashboard and all port defaults in README
- Update changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant