-
Notifications
You must be signed in to change notification settings - Fork 62
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
Conversation
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>
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix date
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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) | ||
} | ||
``` |
There was a problem hiding this comment.
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
)
There was a problem hiding this comment.
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) | ||
``` | ||
|
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
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. |
There was a problem hiding this comment.
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>
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) | ||
``` | ||
|
There was a problem hiding this comment.
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.
- 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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Go context support for all commands and batch operations. |
|
||
## Key Features | ||
|
||
### Advanced Cluster Topology Management |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems duplicative of https://valkey.io/blog/2025-03-4-go-client-in-public-preview/
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. |
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
--signoff
By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.