You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kvrocks.apache.org by GitBox <gi...@apache.org> on 2022/11/21 07:46:17 UTC

[GitHub] [incubator-kvrocks-website] vmihailenco commented on a diff in pull request #27: chore(blog): add a post about kvrocks and go-redis

vmihailenco commented on code in PR #27:
URL: https://github.com/apache/incubator-kvrocks-website/pull/27#discussion_r1027669102


##########
blog/2022-11-20-go-redis-kvrocks-opentelemetry/index.md:
##########
@@ -0,0 +1,248 @@
+---
+slug: go-redis-kvrocks-opentelemetry
+title: Getting started with Kvrocks and go-redis
+authors: [vmihailenco]
+---
+
+This post explains how to get started with Apache Kvrocks using go-redis client. It also
+demonstrates how you can use OpenTelemetry and Uptrace to monitor Kvrocks on both client and server
+sides.
+
+<!--truncate-->
+
+## What is Kvrocks?
+
+[Apache Kvrocks](https://kvrocks.apache.org/) is a distributed key value NoSQL database that uses
+RocksDB as a storage engine and is compatible with Redis protocol.
+
+You can use Kvrocks as a drop-in replacement for Redis to store data on SSD decreasing the cost of
+memory and increasing the capacity. For example, imagine taking one of the many existing Redis-based
+job queues and using them with Kvrocks and SSD storage.
+
+Kvrocks supports most [Redis commands](https://kvrocks.apache.org/docs/supported-commands) with a
+single notable exception being that `watch` and `unwatch` commands are not
+[supported yet](https://github.com/apache/incubator-kvrocks/issues/315).
+
+[Kvrocks Cluster](https://kvrocks.apache.org/docs/Cluster/kvrocks-cluster-introduction/) and
+[replication](https://kvrocks.apache.org/docs/Design/replication/) are available as well.
+
+## Getting started with Kvrocks
+
+You can launch Kvrocks using Docker:
+
+```shell
+docker run -it -p 6666:6666 apache/kvrocks
+```
+
+And start using it right away:
+
+```shell
+redis-cli -p 6666
+
+127.0.0.1:6666> get foo
+(nil)
+127.0.0.1:6666> set foo bar
+OK
+127.0.0.1:6666> get foo
+"bar"
+```
+
+You can also [build](https://github.com/apache/incubator-kvrocks#build-and-run-kvrocks) Kvrocks with
+GCC yourself.
+
+## Connecting to Kvrocks from Go
+
+Since Kvrocks uses Redis-compatible protocol, you can use your favorite Redis client to work with
+Kvrocks, for example, [Go Redis client](https://redis.uptrace.dev/):
+
+```go
+package main
+
+import (
+	"context"
+	"github.com/go-redis/redis/v8"
+)
+
+func main() {
+	ctx := context.Background()
+
+	rdb := redis.NewClient(&redis.Options{
+		Addr: "localhost:6666",
+	})
+
+	err := rdb.Set(ctx, "key", "value", 0).Err()
+	if err != nil {
+		panic(err)
+	}
+
+	val, err := rdb.Get(ctx, "key").Result()
+	if err != nil {
+		panic(err)
+	}
+	fmt.Println("key", val)
+}
+```
+
+[Pipelines](https://redis.uptrace.dev/guide/go-redis-pipelines.html),
+[pub/sub](https://redis.uptrace.dev/guide/go-redis-pubsub.html), and even
+[Lua scripts](https://redis.uptrace.dev/guide/lua-scripting.html) are working as well:
+
+```go
+var incrBy = redis.NewScript(`
+local key = KEYS[1]
+local change = ARGV[1]
+
+local value = redis.call("GET", key)
+if not value then
+  value = 0
+end
+
+value = value + change
+redis.call("SET", key, value)
+
+return value
+`)
+```
+
+You can then run the script like this:
+
+```go
+keys := []string{"my_counter"}
+values := []interface{}{+1}
+num, err := incrBy.Run(ctx, rdb, keys, values...).Int()
+```
+
+## What is OpenTelemetry?
+
+[OpenTelemetry](https://uptrace.dev/opentelemetry/) is a vendor-neutral standard that allows you to
+collect and export [traces](https://uptrace.dev/opentelemetry/distributed-tracing.html),
+[logs](https://uptrace.dev/opentelemetry/logs.html), and
+[metrics](https://uptrace.dev/opentelemetry/metrics.html).
+
+Otel allows developers to collect and export telemetry data in a vendor agnostic way. With
+OpenTelemetry, you can instrument your application once and then add or change vendors without
+changing the instrumentation, for example, here is a list
+[DataDog competitors](https://uptrace.dev/get/compare/datadog-competitors.html) that support
+OpenTelemetry.
+
+## What is Uptrace?
+
+Uptrace is an [open-source APM tool](https://uptrace.dev/get/open-source-apm.html) that supports

Review Comment:
   It is for SEO not marketing but fair point.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@kvrocks.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org