diff --git a/CONTRIBUTING-BLOG-POST.md b/CONTRIBUTING-BLOG-POST.md index 8a816b48..49007661 100644 --- a/CONTRIBUTING-BLOG-POST.md +++ b/CONTRIBUTING-BLOG-POST.md @@ -83,6 +83,19 @@ description= "It's become clear that people want to talk about Valkey and have b # 'authors' are the folks who wrote or contributed to the post. # Each author corresponds to a biography file (more info later in this document) authors= [ "maury", "jacobim" ] +[extra] + # 'trending' controls whether the blog post appears in the trending section on the main blog page + trending = true + # 'featured_image' sets the main image for the blog header + # Choose from one of the available images: + # "/assets/media/featured/random-01.webp" + # "/assets/media/featured/random-02.webp" + # "/assets/media/featured/random-03.webp" + # "/assets/media/featured/random-04.webp" + # "/assets/media/featured/random-05.webp" + # "/assets/media/featured/random-06.webp" + # "/assets/media/featured/random-07.webp" + featured_image = "/assets/media/featured/random-01.webp" +++ ``` diff --git a/content/blog/2024-04-12-hello-world.md b/content/blog/2024-04-12-hello-world.md index 50286368..bebaedcf 100644 --- a/content/blog/2024-04-12-hello-world.md +++ b/content/blog/2024-04-12-hello-world.md @@ -8,8 +8,9 @@ description= "Welcome! For the inaugural blog post on valkey.io, I’d like to r authors= ["kyledvs"] [extra] - categories= "update" +trending = false +featured_image = "/assets/media/featured/random-05.webp" +++ Welcome! diff --git a/content/blog/2024-04-16-valkey-7-2-5-out.md b/content/blog/2024-04-16-valkey-7-2-5-out.md index ad1f9cc4..6338fe2a 100644 --- a/content/blog/2024-04-16-valkey-7-2-5-out.md +++ b/content/blog/2024-04-16-valkey-7-2-5-out.md @@ -8,8 +8,9 @@ description= "Exciting times!I'm pleased to announce that you can start using th authors= ["kyledvs"] [extra] - categories= "update" +trending = false +featured_image = "/assets/media/featured/random-04.webp" +++ Exciting times! diff --git a/content/blog/2024-04-26-modules-101.md b/content/blog/2024-04-26-modules-101.md index 4750bca5..47d1dec9 100644 --- a/content/blog/2024-04-26-modules-101.md +++ b/content/blog/2024-04-26-modules-101.md @@ -8,8 +8,9 @@ description= "The idea of modules is to allow adding extra features (such as new authors= ["dmitrypol"] [extra] - categories= "modules" +trending = false +featured_image = "/assets/media/featured/random-03.webp" +++ ## What are Valkey modules? diff --git a/content/blog/2024-05-24-may-roundup.md b/content/blog/2024-05-24-may-roundup.md index 2bde6016..781a0300 100644 --- a/content/blog/2024-05-24-may-roundup.md +++ b/content/blog/2024-05-24-may-roundup.md @@ -9,6 +9,8 @@ authors= ["kyledvs"] [extra] categories= "update" +trending = false +featured_image = "/assets/media/featured/random-02.webp" +++ It's become clear that people want to talk about Valkey and have been publishing blog posts/articles fervently. diff --git a/content/blog/2024-06-27-using-bitnami-valkey-chart/index.md b/content/blog/2024-06-27-using-bitnami-valkey-chart/index.md index fa1aa36d..82f2f236 100644 --- a/content/blog/2024-06-27-using-bitnami-valkey-chart/index.md +++ b/content/blog/2024-06-27-using-bitnami-valkey-chart/index.md @@ -6,6 +6,10 @@ aliases= [ "/blog/2024/06/using-bitnami-valkey-chart/" ] authors=["rafariossaa"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-01.webp" + +++ Valkey is a high-performance key/value datastore that supports workloads such as caching, and message queues, supporting many data types including strings, numbers, hashes, bitmaps, and more. Valkey can run in standalone or cluster mode for replication and high availability. diff --git a/content/blog/2024-07-07-unlock-one-million-rps.md b/content/blog/2024-07-07-unlock-one-million-rps.md index 27b76413..1f719063 100644 --- a/content/blog/2024-07-07-unlock-one-million-rps.md +++ b/content/blog/2024-07-07-unlock-one-million-rps.md @@ -13,6 +13,9 @@ description= "Learn about the new performnace improvements in Valkey 8 which red # 'authors' are the folks who wrote or contributed to the post. # Each author corresponds to a biography file (more info later in this document) authors= [ "dantouitou", "uriyagelnik"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-01.webp" +++ Valkey 8.0, set for release in September 2024, will bring major performance enhancements through a variety of improvements including a new multi-threaded architecture. This update aims to significantly boost throughput and reduce latency across various hardware configurations. diff --git a/content/blog/2024-07-31-valkey-8-0-0-rc1.md b/content/blog/2024-07-31-valkey-8-0-0-rc1.md index 98f83831..dcaad57f 100644 --- a/content/blog/2024-07-31-valkey-8-0-0-rc1.md +++ b/content/blog/2024-07-31-valkey-8-0-0-rc1.md @@ -13,6 +13,9 @@ description= "The first release candidate of Valkey 8.0 is now available! Come l # 'authors' are the folks who wrote or contributed to the post. # Each author corresponds to a biography file (more info later in this document) authors= [ "pingxie", "madolson" ] +[extra] +trending = false +featured_image = "/assets/media/featured/random-07.webp" +++ diff --git a/content/blog/2024-08-29-valkey-memory-efficiency-8-0.md b/content/blog/2024-08-29-valkey-memory-efficiency-8-0.md index 8f6a0a99..255e5f3a 100644 --- a/content/blog/2024-08-29-valkey-memory-efficiency-8-0.md +++ b/content/blog/2024-08-29-valkey-memory-efficiency-8-0.md @@ -3,6 +3,9 @@ title= "Storing more with less: Memory Efficiency in Valkey 8" date= 2024-09-04 01:01:01 description= "Learn about the new memory efficiency improvements in Valkey 8 which reduces memory overhead, which allows more data to be stored in the same amount of memory." authors= [ "hpatro"] +[extra] +trending = true +featured_image = "/assets/media/featured/random-05.webp" +++ Valkey 8.0 GA is around the corner and one of the themes is increasing overall memory efficiency. Memory overhead reduction has the obvious effect of better resource utilization, but also impacts performance. By minimizing unnecessary memory consumption, you can store more data with the same hardware resources and improve overall system responsiveness. This post is going to give an overview into how Valkey internally manages the data and its memory overhead. Additionally, it talks about the two major improvements for Valkey 8.0 that improves the overall memory efficiency. diff --git a/content/blog/2024-09-13-unlock-one-million-rps-part2.md b/content/blog/2024-09-13-unlock-one-million-rps-part2.md index a111c99a..2fcb2dfc 100644 --- a/content/blog/2024-09-13-unlock-one-million-rps-part2.md +++ b/content/blog/2024-09-13-unlock-one-million-rps-part2.md @@ -13,6 +13,9 @@ description= "Maximize the performance of your hardware with memory access amort # 'authors' are the folks who wrote or contributed to the post. # Each author corresponds to a biography file (more info later in this document) authors= [ "dantouitou", "uriyagelnik"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-06.webp" +++ In the [first part](/blog/unlock-one-million-rps/) of this blog, we described how we offloaded almost all I/O operations to I/O threads, thereby freeing more CPU cycles in the main thread to execute commands. When we profiled the execution of the main thread, we found that a considerable amount of time was spent waiting for external memory. This was not entirely surprising, as when accessing random keys, the probability of finding the key in one of the processor caches is relatively low. Considering that external memory access latency is approximately 50 times higher than L1 cache, it became clear that despite showing 100% CPU utilization, the main process was mostly “waiting”. In this blog, we describe the technique we have been using to increase the number of parallel memory accesses, thereby reducing the impact that external memory latency has on performance. diff --git a/content/blog/2024-09-16-valkey-8-ga.md b/content/blog/2024-09-16-valkey-8-ga.md index eb3dab78..5e6a0e1a 100644 --- a/content/blog/2024-09-16-valkey-8-ga.md +++ b/content/blog/2024-09-16-valkey-8-ga.md @@ -3,6 +3,10 @@ title= "Generally Available: Valkey 8.0.0" description = "Today marks a milestone for the Valkey project: the first major release." date= 2024-09-16 01:01:01 authors= ["kyledvs"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-05.webp" + +++ The first ever release of Valkey, 7.2.5, became generally available more than 5 months ago. diff --git a/content/blog/2024-11-21-testing-the-limits/index.md b/content/blog/2024-11-21-testing-the-limits/index.md index 07f970b2..ff7bdedc 100644 --- a/content/blog/2024-11-21-testing-the-limits/index.md +++ b/content/blog/2024-11-21-testing-the-limits/index.md @@ -3,6 +3,9 @@ title = "Pushing the limits of Valkey on a Raspberry Pi" description = "While most people won't go to production on a Raspberry Pi, we'll cover how to thoroughly performance test Valkey to understand how it works in production." date= 2024-11-21 01:01:01 authors= ["dtaivpp"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-07.webp" +++ While doing extensive performance testing on a Raspberry Pi is silly, it's made me realize the complexity of performance testing. For example, in some of the tests below I ended up managing to use all of the resources of the Raspberry Pi and achieved terrible performance. Every application has different performance characteristics so we'll walk through what factors to consider when it comes to deploying Valkey. diff --git a/content/blog/2024-12-20-2024-year-of-valkey/index.md b/content/blog/2024-12-20-2024-year-of-valkey/index.md index a84eb644..5f6f59cd 100644 --- a/content/blog/2024-12-20-2024-year-of-valkey/index.md +++ b/content/blog/2024-12-20-2024-year-of-valkey/index.md @@ -4,6 +4,10 @@ title= "2024: The Year of Valkey" description = "The end of the calendar year is a great time to reflect, but for Valkey this particular year-end holds special meaning." date= 2024-12-20 01:01:01 authors= ["kyledvs"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-05.webp" + +++ The end of the calendar year is a great time to reflect, but for Valkey this particular year-end holds special meaning. diff --git a/content/blog/2024-12-22-az-affinity-strategy.md b/content/blog/2024-12-22-az-affinity-strategy.md index 4c0e7d39..f5cbc801 100644 --- a/content/blog/2024-12-22-az-affinity-strategy.md +++ b/content/blog/2024-12-22-az-affinity-strategy.md @@ -3,6 +3,9 @@ title= "Reducing application latency and lowering Cloud bill by setting up your date= 2025-01-08 01:01:01 description= "By implementing AZ affinity routing in Valkey and using GLIDE, you can achieve lower latency and cost savings by routing requests to replicas in the same AZ as the client." authors= [ "asafporatstoler", "adarovadya"] +[extra] +trending = true +featured_image = "/assets/media/featured/random-04.webp" +++ How can adjusting your client library help you reduce Cloud costs and improve latency? diff --git a/content/blog/2025-03-28-new-hash-table/index.md b/content/blog/2025-03-28-new-hash-table/index.md index aa48c1bb..396e4bf3 100644 --- a/content/blog/2025-03-28-new-hash-table/index.md +++ b/content/blog/2025-03-28-new-hash-table/index.md @@ -3,6 +3,10 @@ title= "A new hash table" date= 2025-03-28 00:00:00 description= "Designing a state-of-the art hash table" authors= ["zuiderkwast"] +[extra] +trending = false +featured_image = "/assets/media/featured/random-05.webp" + +++ Many workloads are bound on storing data. Being able to store more data using diff --git a/content/blog/2025-03-4-go-client-in-public-preview.md b/content/blog/2025-03-4-go-client-in-public-preview.md index 8dace9db..958f44b2 100644 --- a/content/blog/2025-03-4-go-client-in-public-preview.md +++ b/content/blog/2025-03-4-go-client-in-public-preview.md @@ -3,6 +3,9 @@ title= "Introducing the Valkey Glide Go Client: Now in Public Preview!" description = "Valkey Glide now supports GO. Read to learn more about the new client designed for performance and developer productivity" date= 2025-03-04 01:01:01 authors= [ "niharikabhavaraju"] +[extra] +trending = true +featured_image = "/assets/media/featured/default.webp" +++ Valkey-Glide is pleased to announce the public preview release of the GLIDE(General Language Independent Driver for the Enterprise) Go client. This release brings the power and reliability of Valkey to Go developers with an API designed for performance and developer productivity. diff --git a/content/blog/2025-04-02-valkey-8-1-0-ga.md b/content/blog/2025-04-02-valkey-8-1-0-ga.md index 696bcdbc..308b7c8d 100644 --- a/content/blog/2025-04-02-valkey-8-1-0-ga.md +++ b/content/blog/2025-04-02-valkey-8-1-0-ga.md @@ -13,6 +13,9 @@ description= "Valkey 8.1 is now generally available! Come learn about the exciti # 'authors' are the folks who wrote or contributed to the post. # Each author corresponds to a biography file (more info later in this document) authors= [ "rdias", "mvisser" ] +[extra] +trending = false +featured_image = "/assets/media/featured/random-03.webp" +++ diff --git a/content/blog/2025-04-09-introducing-bloom-filters.md b/content/blog/2025-04-09-introducing-bloom-filters.md index c77708b3..e75d6581 100644 --- a/content/blog/2025-04-09-introducing-bloom-filters.md +++ b/content/blog/2025-04-09-introducing-bloom-filters.md @@ -3,6 +3,10 @@ title= "Introducing Bloom Filters for Valkey" description = "Learn how to use bloom filters to perform large-scale membership testing with significant memory savings." date= 2025-04-09 01:01:01 authors= [ "karthiksubbarao"] + +[extra] +trending = false +featured_image = "/assets/media/featured/random-02.webp" +++ The Valkey project is introducing Bloom Filters as a new data type via [valkey-bloom](https://github.com/valkey-io/valkey-bloom/) (BSD-3 licensed), an official Valkey Module which is compatible with Valkey versions >= 8.0. Bloom filters provide efficient, large-scale membership testing, improving performance and offering significant memory savings for high-volume applications. diff --git a/content/blog/_index.md b/content/blog/_index.md index ca5be15e..b09c166b 100644 --- a/content/blog/_index.md +++ b/content/blog/_index.md @@ -1,5 +1,6 @@ +++ -title = "List of blog posts" +title = "Blog" +description = "Stay up to date with the latest news, tutorials, and updates from the Valkey team." sort_by = "date" template = "blog.html" page_template = "blog-page.html" diff --git a/content/blog/whats-new-june-2024.md b/content/blog/whats-new-june-2024.md index 6bb29fa9..440c413b 100644 --- a/content/blog/whats-new-june-2024.md +++ b/content/blog/whats-new-june-2024.md @@ -5,6 +5,8 @@ description= "What have people been saying about Valkey in June 2024? Read on to [extra] authors= ["kyledvs"] categories= "roundup" +trending = false +featured_image = "/assets/media/featured/random-01.webp" +++ What have people been saying since the [last what's new post](/blog/may-roundup/)? Read on to find out. diff --git a/sass/_valkey.scss b/sass/_valkey.scss index 61608b2b..c7e40e4e 100644 --- a/sass/_valkey.scss +++ b/sass/_valkey.scss @@ -455,7 +455,7 @@ p { background-color: #e2e8f0; flex-direction: column; - @include respond-min(768px) { + @include respond-min(1024px) { flex-direction: row-reverse; } @@ -471,6 +471,11 @@ p { main { flex: 1; padding: 2rem; + width: 100%; + + @include respond-min(1024px) { + width: 67%; + } } .main-inner { @@ -485,7 +490,7 @@ p { padding: 2rem; width: 100%; - @include respond-min(768px) { + @include respond-min(1024px) { max-width: 420px; } @@ -633,16 +638,26 @@ p { color: var(--chakra-colors-white); text-align: center; background-image: linear-gradient(rgb(59, 42, 102), rgb(78, 81, 191)); - padding: 80px; + padding: 80px 20px; h1 { - @include sans-serif; - font-size: 4rem; + font-size: 3rem; font-weight: 700; line-height: 1; color: #fff; margin: 0; padding: 0; + + @include respond-min(768px) { + font-size: 4rem; + } + } + + p { + line-height: 1.2; + color: #fff; + margin: 1rem 0 0; + padding: 0; } } @@ -739,29 +754,245 @@ aside { } } -.bloglist { - list-style: none; - margin: 0; - padding: 0; +.blog-inner { + + .blog-list { + list-style: none; + margin: 0; + padding: 0; + + li { + background: #fff; + padding: 20px; + margin-bottom: 20px; + + h2 a { + color: #30176e; + margin: 0; + } - .meta { - margin-top: 10px; + a.link-readmore { + color: #747bff ; + } + + .meta { + margin-top: 2px; + } + } } } -.meta { - @include sans-serif; - font-size: 1.4rem; - display: block; - line-height: 1.4; - margin: 2em 0 1em; - color: $text-light; +.blog-trending { + h2 { + color: #30176e; + margin-bottom: 1rem; + font-size: 120%; + } + + &-card { + display: flex; + background: #fff; + border-radius: 10px; + margin-bottom: 2rem; + + img { + max-width: 50%; + height: auto; + object-fit: cover; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; + } + + .info { + flex: 1 1 50%; + width: 50%; + padding: 1.25rem; + + h4 { + margin: 0 0 1.25rem; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + + a { + color: #000; + } + } + + p { + margin: 0 0 1.25rem; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + } + + .read-more { + + } + } + .read-more { + display: inline-flex; + align-items: center; + justify-content: center; + position: relative; + line-height: 1.2; + font-weight: 600; + font-size: 14px; + padding: 12px 24px; + border: 1px solid #e2e8f0; + border-radius: 50px; + color: #2d3748; + align-self: flex-end; + margin-left: auto; + transition: all 0.2s; + } + + } +} + +.blog-single { + display: flex; + flex-wrap: wrap; + width: 100%; + background-color: #e2e8f0; + + h2 { + font-size: 1.5rem; + margin: 0 0 0.25rem 0; + font-weight: 700; + color: #000; + text-transform: uppercase; + } + + main { + flex: 1; + padding: 2rem; + width: 100%; + + @include respond-min(1024px) { + width: 67%; + } + } + + .main-inner { + width: 100%; + background-color: #fff; + padding: 1rem 2rem 2rem; + + .feature-img { + object-fit: cover; + width: 100%; + height: 200px; + border-radius: 2rem; + margin-bottom: 2rem; + max-width: none; + + @include respond-min(1024px) { + height: 400px; + } + } + + h1 { + margin: 1rem 0 0.5rem; + color: #30176e; + font-size: 3rem; + font-weight: 600; + } + + h2,h3,h4 { + margin: 4rem 0 0.5rem; + color: #30176e; + } + + .meta { + font-size: 1.4rem; + display: block; + margin: 0 0 2rem; + color: #718096; + } + + ul { + list-style: none; + padding: 0; + margin: 0 0 2rem 0; + + li { + a {} + } + } + + img { + display: block; + width: 100%; + margin: 1rem auto; + max-width: 720px; + } + + img + em { + display: block; + margin-bottom: 2rem; + } + } + + aside { + background-color: #f1f0fa; + padding: 2rem; + width: 100%; + + @include respond-min(768px) { + max-width: 33%; + } + } +} + +.blog-authors { + h2 { + color: #553c9a; + } +} + +.author-container { + display: flex; + align-items: flex-start; + margin-top: 2rem; + padding-bottom: 1rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.author-photo-container { + display: flex; + align-items: flex-start; + justify-content: center; + flex: 0 0 auto; + margin-right: 1rem; + + img { + width: 60px; + height: 60px; + object-fit: cover; + } +} + +.author-info { + flex: 1; + text-align: left; + + h4 { + font-weight: 400; + font-size: 2rem; + margin: 0; + color: #30176E; + } + + a { + color: #6893FF; + } } .share-container { @include sans-serif; - color: $text-light; - padding-bottom: 2em; } @@ -784,17 +1015,17 @@ aside { > svg { height: 16px; - fill: $background-darkest; + fill: #6983FF; margin-top: 10px; } } > div:hover { cursor: pointer; + + > svg { + fill: #553c9a; + } } - > div.facebook:hover > svg {fill: #3B5998;} - > div.twitter:hover > svg {fill: #55ACEE;} - > div.linkedin:hover > svg {fill: #0077b5;} - > div.mail:hover > svg {fill: #7D7D7D;} > div.facebook > svg { height: 18px; margin-top: 9px; @@ -813,6 +1044,12 @@ aside { } } +.blog-nav { + display: flex; + justify-content: space-between; + gap: 2rem; +} + .participants-container { @include sans-serif; background-color: #4CAF50; /* Green background */ @@ -885,6 +1122,10 @@ aside { ul { list-style-type: none; padding-left: 0; + + a { + color: #6983FF; + } } } @@ -988,30 +1229,6 @@ pre table { } } } - - - -.author-container { - display: flex; - align-items: center; - background-color: $grey-lt-000; /* Light grey background */ - padding: 20px; - border-radius: 5px; - margin-bottom: 30px; -} - -.author-photo-container { - display: flex; - align-items: center; - justify-content: center; - flex: 0 0 auto; - margin-right: 20px; -} - -.author-info { - flex: 1; - text-align: left; -} .banner { .width-limiter { diff --git a/sass/css/styles.scss b/sass/css/styles.scss index d3cf1fca..22cc19ec 100755 --- a/sass/css/styles.scss +++ b/sass/css/styles.scss @@ -16,7 +16,7 @@ table { } th { - background-color: #123678; + background-color: #30176e; color: white; padding: 8px; text-align: left; diff --git a/static/assets/media/featured/default.webp b/static/assets/media/featured/default.webp new file mode 100644 index 00000000..c94e7cf4 Binary files /dev/null and b/static/assets/media/featured/default.webp differ diff --git a/static/assets/media/featured/random-01.webp b/static/assets/media/featured/random-01.webp new file mode 100644 index 00000000..f2c976f9 Binary files /dev/null and b/static/assets/media/featured/random-01.webp differ diff --git a/static/assets/media/featured/random-02.webp b/static/assets/media/featured/random-02.webp new file mode 100644 index 00000000..469fddbb Binary files /dev/null and b/static/assets/media/featured/random-02.webp differ diff --git a/static/assets/media/featured/random-03.webp b/static/assets/media/featured/random-03.webp new file mode 100644 index 00000000..cae4a91f Binary files /dev/null and b/static/assets/media/featured/random-03.webp differ diff --git a/static/assets/media/featured/random-04.webp b/static/assets/media/featured/random-04.webp new file mode 100644 index 00000000..eec63b85 Binary files /dev/null and b/static/assets/media/featured/random-04.webp differ diff --git a/static/assets/media/featured/random-05.webp b/static/assets/media/featured/random-05.webp new file mode 100644 index 00000000..941c86de Binary files /dev/null and b/static/assets/media/featured/random-05.webp differ diff --git a/static/assets/media/featured/random-06.webp b/static/assets/media/featured/random-06.webp new file mode 100644 index 00000000..07eeca8e Binary files /dev/null and b/static/assets/media/featured/random-06.webp differ diff --git a/static/assets/media/featured/random-07.webp b/static/assets/media/featured/random-07.webp new file mode 100644 index 00000000..4e429868 Binary files /dev/null and b/static/assets/media/featured/random-07.webp differ diff --git a/templates/blog-aside.html b/templates/blog-aside.html new file mode 100644 index 00000000..e1dc1978 --- /dev/null +++ b/templates/blog-aside.html @@ -0,0 +1,15 @@ +{% extends "default.html" %} + +{% block content %} +{% block subhead_content %}{% endblock subhead_content %} +
{{ section.description }}
+{{ page.description | safe }}
- Read More -{{ page.description | safe }}
+ Read More +