rediskey

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2021 License: MIT Imports: 1 Imported by: 0

README

rediskey

Tests Workflow codecov Go Report Card

rediskey lets you organize redis key in an officially recommended naming convention with document-oriented way.

Officially recommended naming convention is following.

  • Very short keys are often not a good idea. There is little point in writing "u1000flw" as a key if you can instead write "user:1000:followers". The latter is more readable and the added space is minor compared to the space used by the key object itself and the value object. While short keys will obviously consume a bit less memory, your job is to find the right balance.
  • Try to stick with a schema. For instance "object-type:id" is a good idea, as in "user:1000". Dots or dashes are often used for multi-word fields, as in "comment🔢reply.to" or "comment🔢reply-to".

More details are written in https://redis.io/topics/data-types-intro#redis-keys.

example

package main

import (
	"context"
	"github.com/k-yomo/rediskey"
	"github.com/uopeople-jp/uopeople-x/backend/pkg/redisutil"
	redis "pkg/mod/github.com/go-redis/redis/v8"
	"time"
)

var redisKeyNameSpaceAuth = rediskey.NewNamespace("auth", nil)

func main()  {
	redisClient, err := redisutil.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	if err != nil {
		panic(err)
	}
	key := redisKeyNameSpaceAuth.NewKey("session", "sess_id")

	ctx := context.Background()
	// key.String() => "auth:session:sess_id"
	err = redisClient.Set(ctx, key.String(), "value", 24 * time.Hour).Err()
	if err != nil {
		panic(err)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Key

type Key struct {
	// ObjectType of the key
	ObjectType string
	// ID of the value
	ID string
	// Parent can be nil.
	Parent Marshaller
}

Key represents the redis key.

func NewKey

func NewKey(objectType string, id string, parent Marshaller) *Key

func (*Key) String

func (k *Key) String() string

String returns a string representation of the key.

type Marshaller

type Marshaller interface {
	// contains filtered or unexported methods
}

type Namespace

type Namespace struct {
	Name   string
	Parent Marshaller
}

Namespace represents the objectType of redis key.

func NewNamespace

func NewNamespace(name string, parent Marshaller) *Namespace

func (*Namespace) NewKey

func (n *Namespace) NewKey(objectType string, id string) *Key

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL