mirror of
https://github.com/hanzokv/go.git
synced 2026-09-24 00:31:51 +00:00
We do not use Redis. The client was a go-redis fork and still said so
everywhere: `package redis`, `redis.NewClient`, `redis://`, `extra/redisotel`.
Consumers wrote `redis.Client` against a Valkey-backed store called KV.
package redis -> package kv (93 decls)
redis.X -> kv.X (2,794 call sites)
"redis: …" errors -> "kv: …" (206)
extra/redis{otel,cmd,prometheus,census} -> extra/kv{otel,cmd,prometheus,census}
redis:// , rediss:// -> kv:// , kvs:// (ParseURL)
Redis*/*Redis* idents -> KV*/*KV*
REDIS_VERSION, REDIS_ENDPOINTS_CONFIG_PATH -> KV_*
I previously argued this rename was unsafe because much of it was "wire
contract". That was wrong, and the categorisation shows why: RESP command names
are GET/SET/HSET — they never contain the word. Of 5,771 occurrences only two
kinds were server-visible at all: the ParseURL scheme (we choose what we pass;
our configs already use kv://) and the CLIENT SETINFO lib-name label, which the
server merely records. Nothing here changes a byte of protocol.
Two things deliberately keep the old spelling:
RediSearch — names a specific external module the FT.* commands map to.
StoreDist — contains the letters by accident (sto-reDis-t), not the word.
Breaking for consumers by design: every import site must move redis.X -> kv.X.
Minor bump, never a major — this module stays v9 forever.
45 lines
1.7 KiB
Go
45 lines
1.7 KiB
Go
package push
|
|
|
|
// No imports needed for this file
|
|
|
|
// NotificationHandlerContext provides context information about where a push notification was received.
|
|
// This struct allows handlers to make informed decisions based on the source of the notification
|
|
// with strongly typed access to different client types using concrete types.
|
|
type NotificationHandlerContext struct {
|
|
// Client is the KV client instance that received the notification.
|
|
// It is interface to both allow for future expansion and to avoid
|
|
// circular dependencies. The developer is responsible for type assertion.
|
|
// It can be one of the following types:
|
|
// - *kv.baseClient
|
|
// - *kv.Client
|
|
// - *kv.ClusterClient
|
|
// - *kv.Conn
|
|
Client interface{}
|
|
|
|
// ConnPool is the connection pool from which the connection was obtained.
|
|
// It is interface to both allow for future expansion and to avoid
|
|
// circular dependencies. The developer is responsible for type assertion.
|
|
// It can be one of the following types:
|
|
// - *pool.ConnPool
|
|
// - *pool.SingleConnPool
|
|
// - *pool.StickyConnPool
|
|
ConnPool interface{}
|
|
|
|
// PubSub is the PubSub instance that received the notification.
|
|
// It is interface to both allow for future expansion and to avoid
|
|
// circular dependencies. The developer is responsible for type assertion.
|
|
// It can be one of the following types:
|
|
// - *kv.PubSub
|
|
PubSub interface{}
|
|
|
|
// Conn is the specific connection on which the notification was received.
|
|
// It is interface to both allow for future expansion and to avoid
|
|
// circular dependencies. The developer is responsible for type assertion.
|
|
// It can be one of the following types:
|
|
// - *pool.Conn
|
|
Conn interface{}
|
|
|
|
// IsBlocking indicates if the notification was received on a blocking connection.
|
|
IsBlocking bool
|
|
}
|