Skip to content

Valkey GLIDE for Go GA blog #277

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 13 commits into from

Conversation

jbrinkman
Copy link

Description

This blog discusses the GA release announcement for go client for Valkey GLIDE and sharing some design/methods we took, and some code snippets to encourage users to try.

This is an update of pr #253

Check List

  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

niharikabhavaraju and others added 4 commits June 16, 2025 19:11
Signed-off-by: Niharika Bhavaraju <nbhavaraju@google.com>
Signed-off-by: Niharika Bhavaraju <nbhavaraju@google.com>
Signed-off-by: Niharika Bhavaraju <nbhavaraju@google.com>
…nTelemetry tracing

Signed-off-by: jbrinkman <joe.brinkman@improving.com>
Signed-off-by: jbrinkman <joe.brinkman@improving.com>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix filename to the correct date

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That will get fixed with the actual release of the blog. Until we get final approval that is a moving date.

+++
title= "Valkey GLIDE Go Client: Now Generally Available!"
description = "Valkey GLIDE Go client reaches general availability. Read to learn more about the go client designed for performance and developer productivity"
date= 2025-05-08 01:01:01

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix date

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will get fixed when the blog is finally approved/posted.


- The major addition in the GA release is comprehensive [batch support](#batch-support) that includes both transactions and pipelines.
- Complete support for all Valkey commands encompassing scripting, functions, pubsub, server management, and all other operations in both standalone and cluster modes.
- Support for OpenTelemetry tracing which has been added to all language clients, including Go.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we highlight context support?
And revised structs in responses

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added context. The revised structs I think are a little too low level, like refactoring package names and moving internal implementation details.

- Maintains high throughput through efficient connection pipelining
- Decreases server-side connection management burden

### Built for Performance

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think "Getting Started" should go first, technical details and benchmarking code - after that

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For a blog like this, you need to provide the details on why this is a significant event. Once you have their attention, you can provide the information on how they get started. I want them to read the blog first before I have them start following links to other locations and opening code. Imagine seeing an advertisement on TV for a new product. It would seem strange for them to tell you to call some number to order the product before they have even provided the information about why the product is so great, and maybe shown you some examples of how the product will improve your life. Info first, then a Call to Action.

WithRequestTimeout(500) // 500ms timeout
```

## Behind the Scenes: Technical Architecture

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably move this section to the very end, after batch and others

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of these are part of the basic client configuration. It makes sense to keep them together before batch concepts which are even more advanced.

for i, result := range results {
fmt.Printf("Command %s results: %v\n", txs[i], result)
}
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe show an example of receiving error with raiseOnError set and unset (see TestBatchRaiseOnError)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blog post is already quite long. I don't think we have room to cover every single option and feature. We have documentation for that.

raiseOnError := true
results, err := client.Exec(context.Background(), *tx, raiseOnError)
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proposal: show example with context, pubsub, open telemetry

Copy link
Author

@jbrinkman jbrinkman Jun 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm trying not to expand the blog post even further than it already is. As blog posts go, this is already quite large. We should probably create separate blog posts for each of thos concepts, so that they can be adequately addressed. Quite honestly, if I were writing the posts from scratch, I would have created a general high level blog for the 2.0 release, and then separate blogs for each of the major features we want to highlight. I'll let @madolson and @stockholmux guide us on how they want to proceed here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, my opinion is that this post is already like 2x-3x longer than I would like. The average person reads a Valkey.io blog for about 3.5 minutes, so ideally we want it to be about that long and convey the N most important things. There is also a lot of overlap with https://valkey.io/blog/2025-03-4-go-client-in-public-preview/.

I think ideally I would just focus on batch support and open telemetry integration. Everything else seems duplicative of work discussed elsewhere.

jbrinkman and others added 4 commits June 17, 2025 20:12
Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Joseph Brinkman <joe.brinkman@improving.com>
Signed-off-by: jbrinkman <joe.brinkman@improving.com>
Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Joseph Brinkman <joe.brinkman@improving.com>
Signed-off-by: jbrinkman <joe.brinkman@improving.com>

The Valkey GLIDE contributors are pleased to announce the general availability (GA) release of the Valkey GLIDE Go client. This release brings the power and reliability of Valkey to Go developers with an API designed for performance and developer productivity.

Vakey GLIDE 2.0 brings exciting new features for all of our language clients (Java, Node.js, Python, and now Go). These features include pipelines, OpenTelemetry support, MacOS x86 support, and improved performance and bug fixes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

link to changelog?

Signed-off-by: jbrinkman <joe.brinkman@improving.com>
jbrinkman and others added 3 commits June 18, 2025 08:36
Signed-off-by: jbrinkman <joe.brinkman@improving.com>
Co-authored-by: Andrew Carbonetto <andrew.carbonetto@improving.com>
Signed-off-by: Joseph Brinkman <joe.brinkman@improving.com>
Co-authored-by: Andrew Carbonetto <andrew.carbonetto@improving.com>
Signed-off-by: Joseph Brinkman <joe.brinkman@improving.com>
raiseOnError := true
results, err := client.Exec(context.Background(), *tx, raiseOnError)
```

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, my opinion is that this post is already like 2x-3x longer than I would like. The average person reads a Valkey.io blog for about 3.5 minutes, so ideally we want it to be about that long and convey the N most important things. There is also a lot of overlap with https://valkey.io/blog/2025-03-4-go-client-in-public-preview/.

I think ideally I would just focus on batch support and open telemetry integration. Everything else seems duplicative of work discussed elsewhere.

Comment on lines +436 to +439
- Implementation of `Watch()` that monitors keys for changes,
- Implementation of `Unwatch()` that releases monitoring,
- Proper handling of transaction failure when watched keys change,
- Passing watch state through to the Valkey server during execution.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the persona reading this blog going to know what this means.

I would also remove "Proper handling of transaction failure when watched keys change", since I don't know what that means.


The Valkey GLIDE contributors are pleased to announce the general availability (GA) release of the Valkey GLIDE Go client. This release brings the power and reliability of Valkey to Go developers with an API designed for performance and developer productivity.

Vakey GLIDE 2.0 brings exciting new features for all of our language clients (Java, Node.js, Python, and now Go). These features include pipelines, OpenTelemetry support, MacOS x86 support, improved performance, and bug fixes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would cut this. It seems like maybe this is worth a separate blog post, but it's not really relevant to this blog.


## What's new in GA?

- The major addition in the GA release is comprehensive [batch support](#batch-support) that includes both transactions and pipelines.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- The major addition in the GA release is comprehensive [batch support](#batch-support) that includes both transactions and pipelines.
- The major addition in the GA release is [batch support](#batch-support) that includes both transactions and pipelines.

## What's new in GA?

- The major addition in the GA release is comprehensive [batch support](#batch-support) that includes both transactions and pipelines.
- Complete support for all Valkey commands encompassing scripting, functions, pubsub, server management, and all other operations in both standalone and cluster modes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Complete support for all Valkey commands encompassing scripting, functions, pubsub, server management, and all other operations in both standalone and cluster modes.
- Support for all Valkey commands encompassing scripting, functions, pubsub, server management, and all other operations in both standalone and cluster modes.

- The major addition in the GA release is comprehensive [batch support](#batch-support) that includes both transactions and pipelines.
- Complete support for all Valkey commands encompassing scripting, functions, pubsub, server management, and all other operations in both standalone and cluster modes.
- Support for OpenTelemetry tracing which has been added to all language clients, including Go.
- Go context support for all commands and batch operations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Go context support for all commands and batch operations.


## Key Features

### Advanced Cluster Topology Management
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jbrinkman
Copy link
Author

This was originally just supposed to be cleaning up a post written by a contractor no longer working on the project. At this point, with all the apparent duplication, it is a significant rewrit to get it trimmed down and focused on just the essential items. I'll close this PR and resubmit a fresh file that incorporates the feedback above. Some of the examples, which I've already rewritten once, will be re-used, but the rest of the post will be new.

@jbrinkman jbrinkman closed this Jun 19, 2025
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.

8 participants