From de16bee70a7533119f45c8f7b62a36861f1b2193 Mon Sep 17 00:00:00 2001 From: YaacovHazan <31382944+YaacovHazan@users.noreply.github.com> Date: Wed, 30 Apr 2025 09:58:51 +0300 Subject: [PATCH 1/5] Limiting output buffer for unauthenticated client (CVE-2025-21605) (#13993) For unauthenticated clients the output buffer is limited to prevent them from abusing it by not reading the replies --- src/networking.c | 5 +++++ tests/unit/auth.tcl | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/networking.c b/src/networking.c index 3dd02f3e1..8a9dfe8fa 100644 --- a/src/networking.c +++ b/src/networking.c @@ -4217,6 +4217,11 @@ int checkClientOutputBufferLimits(client *c) { int soft = 0, hard = 0, class; unsigned long used_mem = getClientOutputBufferMemoryUsage(c); + /* For unauthenticated clients the output buffer is limited to prevent + * them from abusing it by not reading the replies */ + if (used_mem > 1024 && authRequired(c)) + return 1; + class = getClientType(c); /* For the purpose of output buffer limiting, masters are handled * like normal clients. */ diff --git a/tests/unit/auth.tcl b/tests/unit/auth.tcl index 023101fdf..8be729824 100644 --- a/tests/unit/auth.tcl +++ b/tests/unit/auth.tcl @@ -58,6 +58,24 @@ start_server {tags {"auth external:skip"} overrides {requirepass foobar}} { assert_match {*unauthenticated bulk length*} $e $rr close } + + test {For unauthenticated clients output buffer is limited} { + set rr [redis [srv "host"] [srv "port"] 1 $::tls] + $rr SET x 5 + catch {[$rr read]} e + assert_match {*NOAUTH Authentication required*} $e + + # Fill the output buffer in a loop without reading it and make + # sure the client disconnected. + # Considering the socket eat some of the replies, we are testing + # that such client can't consume more than few MB's. + catch { + for {set j 0} {$j < 1000000} {incr j} { + $rr SET x 5 + } + } e + assert_match {I/O error reading reply} $e + } } start_server {tags {"auth_binary_password external:skip"}} { From d65102861f51af48241f607afa678c4c2a0f894c Mon Sep 17 00:00:00 2001 From: Pieter Cailliau Date: Thu, 1 May 2025 14:04:22 +0100 Subject: [PATCH 2/5] Adding AGPLv3 as a license option to Redis! (#13997) Read more about [the new license option](http://redis.io/blog/agplv3/) and [the Redis 8 release](http://redis.io/blog/redis-8-ga/). --- CONTRIBUTING.md | 6 +- LICENSE.txt | 636 ++++++++- README.md | 1184 ++++++++++------- REDISCONTRIBUTIONS.txt | 7 +- modules/vector-sets/examples/cli-tool/cli.py | 5 +- .../vector-sets/examples/glove-100/insert.py | 5 +- .../vector-sets/examples/glove-100/recall.py | 5 +- modules/vector-sets/examples/movies/insert.py | 5 +- modules/vector-sets/expr.c | 5 +- modules/vector-sets/hnsw.c | 5 +- modules/vector-sets/hnsw.h | 5 +- modules/vector-sets/test.py | 5 +- modules/vector-sets/vset.c | 5 +- modules/vector-sets/w2v.c | 5 +- src/Makefile | 5 +- src/acl.c | 5 +- src/adlist.c | 5 +- src/adlist.h | 5 +- src/ae.c | 5 +- src/ae.h | 5 +- src/ae_epoll.c | 5 +- src/ae_select.c | 5 +- src/anet.c | 5 +- src/anet.h | 5 +- src/aof.c | 5 +- src/asciilogo.h | 7 +- src/atomicvar.h | 5 +- src/bio.c | 5 +- src/bio.h | 5 +- src/bitops.c | 5 +- src/blocked.c | 5 +- src/call_reply.c | 5 +- src/call_reply.h | 5 +- src/childinfo.c | 5 +- src/cli_common.c | 5 +- src/cluster.c | 5 +- src/cluster_legacy.c | 5 +- src/cluster_legacy.h | 5 +- src/config.c | 5 +- src/config.h | 5 +- src/connection.h | 5 +- src/connhelpers.h | 5 +- src/db.c | 5 +- src/debug.c | 5 +- src/debugmacro.h | 5 +- src/defrag.c | 5 +- src/dict.c | 5 +- src/dict.h | 5 +- src/ebuckets.c | 5 +- src/ebuckets.h | 5 +- src/endianconv.c | 5 +- src/endianconv.h | 5 +- src/eval.c | 5 +- src/eventnotifier.c | 5 +- src/eventnotifier.h | 5 +- src/evict.c | 5 +- src/expire.c | 5 +- src/fmacros.h | 5 +- src/function_lua.c | 5 +- src/functions.c | 5 +- src/functions.h | 5 +- src/hyperloglog.c | 5 +- src/iothread.c | 5 +- src/kvstore.c | 5 +- src/kvstore.h | 5 +- src/latency.c | 5 +- src/latency.h | 5 +- src/listpack.c | 5 +- src/listpack.h | 5 +- src/listpack_malloc.h | 5 +- src/localtime.c | 5 +- src/logreqres.c | 5 +- src/lolwut.c | 5 +- src/lolwut.h | 5 +- src/lolwut5.c | 5 +- src/lolwut6.c | 5 +- src/memtest.c | 5 +- src/module.c | 5 +- src/modules/helloblock.c | 5 +- src/modules/hellocluster.c | 5 +- src/modules/hellodict.c | 5 +- src/modules/hellohook.c | 5 +- src/modules/hellotimer.c | 5 +- src/modules/hellotype.c | 5 +- src/modules/helloworld.c | 5 +- src/mstr.c | 5 +- src/mstr.h | 5 +- src/multi.c | 5 +- src/networking.c | 5 +- src/notify.c | 5 +- src/object.c | 5 +- src/pqsort.h | 5 +- src/pubsub.c | 5 +- src/rand.h | 5 +- src/rax.c | 5 +- src/rax.h | 5 +- src/rax_malloc.h | 5 +- src/rdb.c | 5 +- src/rdb.h | 5 +- src/redis-benchmark.c | 5 +- src/redis-check-rdb.c | 5 +- src/redis-cli.c | 5 +- src/redisassert.h | 5 +- src/release.c | 5 +- src/replication.c | 5 +- src/resp_parser.c | 5 +- src/resp_parser.h | 5 +- src/rio.c | 5 +- src/rio.h | 5 +- src/script.c | 5 +- src/script.h | 5 +- src/script_lua.c | 5 +- src/script_lua.h | 5 +- src/sds.c | 5 +- src/sds.h | 5 +- src/sdsalloc.h | 5 +- src/sentinel.c | 5 +- src/server.c | 5 +- src/server.h | 5 +- src/slowlog.c | 5 +- src/slowlog.h | 5 +- src/socket.c | 5 +- src/solarisfixes.h | 5 +- src/sort.c | 5 +- src/sparkline.c | 5 +- src/sparkline.h | 5 +- src/syncio.c | 5 +- src/syscheck.c | 5 +- src/syscheck.h | 5 +- src/t_hash.c | 5 +- src/t_list.c | 5 +- src/t_set.c | 5 +- src/t_stream.c | 5 +- src/t_string.c | 5 +- src/t_zset.c | 5 +- src/testhelp.h | 5 +- src/threads_mngr.c | 5 +- src/threads_mngr.h | 5 +- src/timeout.c | 5 +- src/tls.c | 5 +- src/tracking.c | 5 +- src/util.h | 5 +- src/zipmap.c | 5 +- src/zipmap.h | 5 +- src/zmalloc.c | 5 +- src/zmalloc.h | 5 +- tests/cluster/cluster.tcl | 5 +- tests/cluster/run.tcl | 5 +- tests/helpers/gen_write_load.tcl | 5 +- tests/instances.tcl | 5 +- tests/integration/replication-buffer.tcl | 5 +- tests/integration/replication-psync.tcl | 5 +- tests/integration/replication-rdbchannel.tcl | 5 +- tests/integration/replication.tcl | 5 +- tests/modules/basics.c | 5 +- tests/modules/hooks.c | 5 +- tests/modules/keyspace_events.c | 5 +- tests/modules/postnotifications.c | 5 +- tests/modules/propagate.c | 5 +- tests/sentinel/run.tcl | 5 +- tests/support/cluster.tcl | 5 +- tests/support/redis.tcl | 5 +- tests/support/response_transformers.tcl | 5 +- tests/support/util.tcl | 5 +- tests/test_helper.tcl | 5 +- tests/unit/auth.tcl | 5 +- tests/unit/cluster/hostnames.tcl | 5 +- tests/unit/cluster/sharded-pubsub.tcl | 5 +- tests/unit/info.tcl | 5 +- tests/unit/memefficiency.tcl | 5 +- tests/unit/querybuf.tcl | 5 +- utils/build-static-symbols.tcl | 5 +- utils/corrupt_rdb.c | 5 +- utils/hyperloglog/hll-err.rb | 5 +- utils/hyperloglog/hll-gnuplot-graph.rb | 5 +- utils/redis-copy.rb | 5 +- utils/redis-sha1.rb | 5 +- utils/speed-regression.tcl | 5 +- utils/tracking_collisions.c | 5 +- 179 files changed, 1902 insertions(+), 808 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ae73e3b3..8e0e3dec6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ By contributing code to the Redis project in any form you agree to the Redis Software Grant and Contributor License Agreement attached below. Only contributions made under the Redis Software Grant and Contributor License Agreement may be accepted by Redis, and any contribution is subject to the -terms of the Redis dual-license under RSALv2/SSPLv1 as described in the LICENSE.txt file included in +terms of the Redis tri-license under RSALv2/SSPLv1/AGPLv3 as described in the LICENSE.txt file included in the Redis source distribution. # REDIS SOFTWARE GRANT AND CONTRIBUTOR LICENSE AGREEMENT @@ -9,7 +9,7 @@ the Redis source distribution. To specify the intellectual property license granted in any Contribution, Redis Ltd., ("**Redis**") requires a Software Grant and Contributor License Agreement ("**Agreement**"). This Agreement is for your protection as a contributor as well as the protection of Redis and its users; it does not -change your rights to use your own Contribution for any other purpose. +change your rights to use your own Contribution for any other purpose permitted by this Agreement. By making any Contribution, You accept and agree to the following terms and conditions for the Contribution. Except for the license granted in this Agreement to Redis and the recipients of the @@ -115,4 +115,4 @@ view, and so forth. This helps. 4. For minor fixes - open a pull request on GitHub. -Additional information on the RSALv2/SSPLv1 dual-license is also found in the LICENSE.txt file. +Additional information on the RSALv2/SSPLv1/AGPLv3 tri-license is also found in the LICENSE.txt file. diff --git a/LICENSE.txt b/LICENSE.txt index a60c24604..deb7dc02a 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,8 +1,11 @@ -Starting on March 20th, 2024, Redis follows a dual-licensing model with all Redis project code -contributions under version 7.4 and subsequent releases governed by the Redis Software Grant and -Contributor License Agreement. After this date, contributions are subject to the user's choice of -the Redis Source Available License v2 (RSALv2) or the Server Side Public License v1 (SSPLv1), as -follows: +Starting with Redis 8, Redis Open Source is moving to a tri-licensing model with all new Redis code +contributions governed by the updated Redis Software Grant and Contributor License Agreement. +After this release, contributions are subject to your choice of: (a) the Redis Source Available License v2 +(RSALv2);or (b) the Server Side Public License v1 (SSPLv1); or (c) the GNU Affero General Public License v3 (AGPLv3). +Redis Open Source 7.2 and prior releases remain subject to the BSDv3 clause license as referenced +in the REDISCONTRIBUTIONS.txt file. + +The licensing structure for Redis 8.0 and subsequent releases is as follows: 1. Redis Source Available License 2.0 (RSALv2) Agreement @@ -731,3 +734,626 @@ exclusive jurisdiction for all purposes relating to this Agreement. return for a fee. END OF TERMS AND CONDITIONS + + +3. GNU AFFERO GENERAL PUBLIC LICENSE, Version 3, 19 Nov 2007 +======================================================== + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md index 9038f0c0b..c90ec3e01 100644 --- a/README.md +++ b/README.md @@ -2,527 +2,819 @@ This README is just a fast *quick start* document. You can find more detailed documentation at [redis.io](https://redis.io). -What is Redis? ---- +### What is Redis? -Redis is often referred to as a *data structures* server. What this means is that Redis provides access to mutable data structures via a set of commands, which are sent using a *server-client* model with TCP sockets and a simple protocol. So different processes can query and modify the same data structures in a shared way. +For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine. -Data structures implemented into Redis have a few special properties: +Redis covers a wide range of use cases across a wide range of industries and projects, serving as +- **A cache**, supporting multiple key eviction policies, key expiration, and hash-field expiration +- **A distributed session store**, supporting multiple session data modeling options (string, JSON, hash). +- **A data structure server**: low-level data structures (string, JSON, list, hash, set, sorted set, bitmap, bitfield, and more - see full list below) with high-level semantics (counter, stack, queue, priority queue, rate limiter, leaderboard, ...), and with transactions and scripting support. +- **A NoSQL data store**: key-value, document, and time series. +- **A secondary index and a search and query engine**: with Redis Query Engine users can define indexes for hash and JSON documents, and use a rich query language for vector search, full-text search, geospatial queries, ranking, and aggregations. +- **A distributed event store, stream-processing platform, and message broker**: queue (list), priority queue (sorted set), event deduplication (set), streams, and pub/sub, with probabilistic stream processing capabilities. +- **A vector store**, integrated with GenAI applications and ecosystems (e.g., LangGraph, mem0), providing short-term memory (checkpointers), long-term memory (store), LLM response caching (LLM semantic cache), and context retrieval (RAG applications). +- **Real time analytics**, including personalization, recommendations, fraud and anomaly detection, and risk assessment. -* Redis cares to store them on disk, even if they are always served and modified into the server memory. This means that Redis is fast, but that it is also non-volatile. -* The implementation of data structures emphasizes memory efficiency, so data structures inside Redis will likely use less memory compared to the same data structure modelled using a high-level programming language. -* Redis offers a number of features that are natural to find in a database, like replication, tunable levels of durability, clustering, and high availability. -Another good example is to think of Redis as a more complex version of memcached, where the operations are not just SETs and GETs, but operations that work with complex data types like Lists, Sets, ordered data structures, and so forth. +Redis can be relied upon (it is robust and has a well-defined behavior), it comes with a long-term commitment (we keep maintaining Redis, avoid introducing breaking changes, and keep it innovative and competitive). Redis is fast and has a low memory footprint (with the right tradeoffs), easy to understand, learn, and use, and easy to adopt across a wide range of development environments and languages. -If you want to know more, this is a list of selected starting points: +If you want to know more, here is a list of starting points: -* Introduction to Redis data types. https://redis.io/docs/latest/develop/data-types/ +- Introduction to Redis data types - https://redis.io/docs/latest/develop/data-types/ +- The full list of Redis commands - https://redis.io/commands +- Redis for AI - https://redis.io/docs/latest/develop/ai/ +- and much more - https://redis.io/documentation -* The full list of Redis commands. https://redis.io/commands -* There is much more inside the official Redis documentation. https://redis.io/documentation +### What is Redis Open Source? -What is Redis Community Edition? ---- - -Redis OSS was renamed Redis Community Edition (CE) with the v7.4 release. +Redis Community Edition (Redis CE) was renamed Redis Open Source with the v8.0 release. Redis Ltd. also offers [Redis Software](https://redis.io/enterprise/), a self-managed software with additional compliance, reliability, and resiliency for enterprise scaling, and [Redis Cloud](https://redis.io/cloud/), a fully managed service integrated with Google Cloud, Azure, and AWS for production-ready apps. -Read more about the differences between Redis Community Edition and Redis [here](https://redis.io/comparisons/oss-vs-enterprise/). +Read more about the differences between Redis Open Source and Redis [here](https://redis.io/technology/advantages/). -Building Redis ---- +### Redis Open Source - binary distributions + +The fastest way to deploy Redis is using one the binary distributions: + +- Alpine and Debian Docker images - https://hub.docker.com/_/redis +- Install using snap - see https://github.com/redis/redis-snap +- Install using brew - see https://github.com/redis/homebrew-redis +- Install using RPM - see https://github.com/redis/redis-rpm +- Install using Debian APT - see https://github.com/redis/redis-debian + +If you prefer to build Redis from source - see instructions below. + +### Using Redis with redis-cli + +`redis-cli` is Redis' command line interface. It is available as part of all the binary distributions and when you build Redis from source. + +See https://redis.io/docs/latest/develop/tools/cli/ + +You can start a redis-server instance, and then, in another terminal try the following: + +``` +% cd src +% ./redis-cli +redis> ping +PONG +redis> set foo bar +OK +redis> get foo +"bar" +redis> incr mycounter +(integer) 1 +redis> incr mycounter +(integer) 2 +redis> +``` + +### Using Redis with Redis Insight +For a more visual and user-friendly experience, use Redis Insight - a tool that lets you explore data, design, develop, and optimize your applications while also serving as a platform for Redis education and onboarding. Redis Insight integrates Redis Copilot, a natural language AI assistant that improves the experience when working with data and commands. +See https://redis.io/docs/latest/develop/tools/insight/ and https://github.com/RedisInsight/RedisInsight. + + +### Using Redis with client libraries + +To connect your application to Redis, you will need a client library. The list of client libraries is available in https://redis.io/docs/latest/develop/clients/. + +### Redis Data types, processing engines, and capabilities + +Redis provides a variety of data types, processing engines, and capabilities to support a wide range of use cases: + +1. **String** + - Strings store sequences of bytes, including text, serialized objects, and binary arrays. As such, strings are the simplest type of value you can associate with a Redis key. + - [Documentation: Strings](https://redis.io/docs/latest/develop/data-types/strings) + +1. **JSON** (*) + - The JSON data type provides JavaScript Object Notation (JSON) support for Redis. It lets you store, retrieve, and update JSON documents. A JSON document can be queried and manipulated using JSONPath expressions. JSON also works seamlessly with the Redis Query Engine to let you index and query JSON documents. + - [Documentation: JSON quick start](https://redis.io/docs/latest/develop/data-types/json/#use-redisjson) + +1. **Hash** + - A hash is a collection of fields, each field is a name-value string pair. You can use hashes to represent flat objects and to store groupings of counters, among other things. Expiration time or a time-to-live can be set for each hash field. + - [Documentation: Hashes](https://redis.io/docs/latest/develop/data-types/hashes) + +1. **Redis Query Engine** (*) + - The Redis Query Engine allows you to use Redis as a document database, a vector database, a secondary index, and a search engine. With Redis Query Engine, users can define indexes for hash and JSON documents, and use a rich query language for vector search, full-text search, geospatial queries, and aggregations. + - [Documentation: Redis Query Engine](https://redis.io/docs/latest/develop/interact/search-and-query/) + +1. **List** + - A list is a list of strings, sorted by insertion order. They are great for stacks, queues, and for queue management and worker systems. + - [Documentation: Lists](https://redis.io/docs/latest/develop/data-types/lists) + +1. **Set** + - A set is an unordered collection of unique strings (members). Sets can be used to track unique items (e.g., track all unique IP addresses accessing a given blog post), represent relations (e.g., the set of all users with a given role). Redis also supports common set operations such as intersection, unions, and differences. + - [Documentation: Sets](https://redis.io/docs/latest/develop/data-types/sets) + +1. **Sorted Set** + - A sorted set is similar to a set, but each member is associated with a score. When more than one member has the same score, the members are ordered lexicographically. Some use cases for sorted sets include leaderboards and sliding-window rate limiters. + - [Documentation: Sorted Sets](https://redis.io/docs/latest/develop/data-types/sorted-sets) + +1. **Vector Set** (beta) + - Vector set is a data type similar to a sorted set, but instead of a score, each member is associated with a vector embedding. You can add items to a vector set, and then retrieve the members that are the most similar to a specified vector embedding, or to the vector embedding of an existing member. + - [Documentation: Vector sets](https://redis.io/docs/latest/develop/data-types/vector-sets) + +1. **Geospatial Index** + - Geospatial indexes let you store coordinates and search for them. This data structure is useful for finding nearby points within a given radius or bounding box. + - [Documentation: Geo](https://redis.io/docs/latest/develop/data-types/geospatial/) + +1. **Bitmap** + - Bitmaps provide bit-oriented operations on a bit vector. You can get bits, set bits, and perform bitwise operations between bitmaps. Bitmaps are often used for efficient management of memberships or permissions, where each bit represents a particular member. + - [Documentation: Bitmap](https://redis.io/docs/latest/develop/data-types/bitmaps/) + +1. **Bitfield** + - Bitfields let you set, increment, and get integer values of arbitrary bit length - from unsigned 1-bit integers to signed 63-bit integers. Bitfields are often used for efficient management of arrays of limited-range counters or numerical values. + - [Documentation: Bitfield](https://redis.io/docs/latest/develop/data-types/bitfields/) + +1. **HyperLogLog** + - HyperLogLog is a probabilistic data structure used for approximating the cardinality of a stream (i.e., the number of unique elements). + - [Documentation: HyperLogLog](https://redis.io/docs/latest/develop/data-types/hyperloglogs) + +1. **Bloom filter** (*) + - Bloom filter is a probabilistic data structure used for checking if a given value is present in a stream. + - [Documentation: Bloom filter](https://redis.io/docs/latest/develop/data-types/probabilistic/bloom-filter/) + +1. **Cuckoo filter** (*) + - Cuckoo filter, just like Bloom filter, is a probabilistic data structure for checking if a given value is present in a stream, while also allowing limited counting and deletions. + - [Documentation: Cuckoo filter](https://redis.io/docs/latest/develop/data-types/probabilistic/cuckoo-filter/) + +1. **Top-k** (*) + - Top-k is a probabilistic data structure used for tracking the most frequent values in a data stream. + - [Documentation: Top-k](https://redis.io/docs/latest/develop/data-types/probabilistic/top-k/) + +1. **Count-min sketch** (*) + - Count-Min Sketch is a probabilistic data structure used for estimating how many times a given value appears in the data stream. + - [Documentation: Count-min sketch](https://redis.io/docs/latest/develop/data-types/probabilistic/count-min-sketch/) + +1. **t-digest** (*) + - t-digest is a probabilistic data structure used for estimating which fraction / how many values in a data stream are smaller than a given value, which value is smaller than p percent of the values in a data stream, or what are the smallest/largest values in the data stream. + - [Documentation: t-digeset](https://redis.io/docs/latest/develop/data-types/probabilistic/t-digest/) + +1. **Time series** (*) + - a time series allows storing and querying timetagged data points (samples). + - [Documentation: Time series quick start](https://redis.io/docs/latest/develop/data-types/timeseries/quickstart/) + +1. **Pub/Sub** + - Pub/Sub (short for publish/subscribe) is a lightweight messaging capability. Publishers send messages to a channel, and subscribers receive messages from that channel. + - [Documentation: Redis streams](https://redis.io/docs/latest/develop/interact/pubsub/) + +1. **Stream** + - A stream is a data structure that acts like an append-only log. Each stream entry consists of name-value string pairs, similar to a hash. Streams support multiple consumption strategies, where consumers can pop entries, consume entries by range, or listen to entries. Consumer groups allow multiple workers to retrieve different stream entries in order to scale message processing. + - [Documentation: Redis streams](https://redis.io/docs/latest/develop/data-types/streams/) + +1. **Transactions** + - A transaction allows the execution of a group of commands in a single step. A request sent by another client will never be served in the middle of the execution of a transaction. This guarantees that the commands are executed as a single isolated operation. + - [Documentation: Transactions](https://redis.io/docs/latest/develop/interact/transactions/) + +1. **Programmability** + - Users can upload and execute Lua scripts on the server. Scripts can employ programmatic control structures and use most of the commands while executing to access the database. Because scripts are executed on the server, reading and writing data from scripts is very efficient. Functions provide the same core functionality as scripts but are first-class software artifacts of the database. Redis manages functions as an integral part of the database and ensures their availability via data persistence and replication. + - [Documentation: Scripting with Lua](https://redis.io/docs/latest/develop/interact/programmability/eval-intro/) + - [Documentation: Functions](https://redis.io/docs/latest/develop/interact/programmability/functions-intro/) + +Items marked with (*) require building with `BUILD_WITH_MODULES=yes`. + +### Build and run Redis with all data structures - Ubuntu 20.04 (Focal) + +Tested with the following Docker images: +- ubuntu:20.04 + +1. Install required dependencies + + Update your package lists and install the necessary development tools and libraries: + + ``` + apt-get update + apt-get install -y sudo + sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf gcc-10 g++-10 libtool + ``` + +2. Use GCC 10 as the default compiler + + Update the system's default compiler to GCC 10: + + ``` + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 + ``` + +3. Install CMake + + Install CMake using `pip3` and link it for system-wide access: + + ``` + pip3 install cmake==3.31.6 + sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake + cmake --version + ``` + + Note: CMake version 3.31.6 is the latest supported version. Newer versions cannot be used. + +4. Download the Redis source + + Download a specific version of the Redis source code archive from GitHub. + + Replace `` with the Redis version, for example: `8.0.0`. + + ``` + cd /usr/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +5. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd /usr/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +6. Build Redis + + Set the necessary environment variables and compile Redis: + + ``` + cd /usr/src/redis- + export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes + make -j "$(nproc)" all + ``` + +7. Run Redis + + ``` + cd /usr/src/redis- + ./src/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - Ubuntu 22.04 (Jammy) / 24.04 (Noble) + +Tested with the following Docker image: +- ubuntu:22.04 +- ubuntu:24.04 + +1. Install required dependencies + + Update your package lists and install the necessary development tools and libraries: + + ``` + apt-get update + apt-get install -y sudo + sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool + ``` + +2. Download the Redis source + + Download a specific version of the Redis source code archive from GitHub. + + Replace `` with the Redis version, for example: `8.0.0`. + + ``` + cd /usr/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +3. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd /usr/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +4. Build Redis + + Set the necessary environment variables and build Redis: + + ``` + cd /usr/src/redis- + export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes + make -j "$(nproc)" all + ``` + +5. Run Redis + + ``` + cd /usr/src/redis- + ./src/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - Debian 11 (Bullseye) / 12 (Bookworm) + + +Tested with the following Docker images: +- debian:bullseye +- debian:bullseye-slim +- debian:bookworm +- debian:bookworm-slim + +1. Install required dependencies + + Update your package lists and install the necessary development tools and libraries: + + ``` + apt-get update + apt-get install -y sudo + sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool + ``` + +2. Download the Redis source + + Download a specific version of the Redis source code archive from GitHub. + + Replace `` with the Redis version, for example: `8.0.0`. + + ``` + cd /usr/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +3. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd /usr/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +4. Build Redis + + Set the necessary environment variables and build Redis: + + ``` + cd /usr/src/redis- + export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes + make -j "$(nproc)" all + ``` + +5. Run Redis + + + ``` + cd /usr/src/redis- + ./src/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - AlmaLinux 8.10 / Rocky Linux 8.10 + +Tested with the following Docker images: +- almalinux:8.10 +- almalinux:8.10-minimal +- rockylinux/rockylinux:8.10 +- rockylinux/rockylinux:8.10-minimal + +1. Prepare the system + + For 8.10-minimal, install `sudo` and `dnf` as follows: + + ``` + microdnf install dnf sudo -y + ``` + + For 8.10 (regular), install sudo as follows: + + ``` + dnf install sudo -y + ``` + + Clean the package metadata, enable required repositories, and install development tools: + + ``` + sudo dnf clean all + sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <` with the Redis version, for example: `8.0.0`. + + ``` + cd /usr/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +5. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd /usr/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +6. Build Redis + + Enable the GCC toolset, set the necessary environment variables, and build Redis: + + ``` + source /etc/profile.d/gcc-toolset-13.sh + cd /usr/src/redis- + export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes + make -j "$(nproc)" all + ``` + +7. Run Redis + + ``` + cd /usr/src/redis- + ./src/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - AlmaLinux 9.5 / Rocky Linux 9.5 + +Tested with the following Docker images: +- almalinux:9.5 +- almalinux:9.5-minimal +- rockylinux/rockylinux:9.5 +- rockylinux/rockylinux:9.5-minimal + +1. Prepare the system + + For 9.5-minimal, install `sudo` and `dnf` as follows: + + ``` + microdnf install dnf sudo -y + ``` + + For 9.5 (regular), install sudo as follows: + + ``` + dnf install sudo -y + ``` + + Clean the package metadata, enable required repositories, and install development tools: + + ``` + sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <` with the Redis version, for example: `8.0.0`. + + ``` + cd /usr/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +5. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd /usr/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +6. Build Redis + + Enable the GCC toolset, set the necessary environment variables, and build Redis: + + ``` + source /etc/profile.d/gcc-toolset-13.sh + cd /usr/src/redis- + export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes + make -j "$(nproc)" all + ``` + +7. Run Redis + + ``` + cd /usr/src/redis- + ./src/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - macOS 13 (Ventura) and macOS 14 (Sonoma) + +1. Install Homebrew + + If Homebrew is not already installed, follow the installation instructions on the [Homebrew home page](https://brew.sh/). + +2. Install required packages + + ``` + export HOMEBREW_NO_AUTO_UPDATE=1 + brew update + brew install coreutils + brew install make + brew install openssl + brew install llvm@18 + brew install cmake + brew install gnu-sed + brew install automake + brew install libtool + brew install wget + ``` + +3. Install Rust + + Rust is required to build the JSON package. + + ``` + RUST_INSTALLER=rust-1.80.1-$(if [ "$(uname -m)" = "arm64" ]; then echo "aarch64"; else echo "x86_64"; fi)-apple-darwin + wget --quiet -O ${RUST_INSTALLER}.tar.xz https://static.rust-lang.org/dist/${RUST_INSTALLER}.tar.xz + tar -xf ${RUST_INSTALLER}.tar.xz + (cd ${RUST_INSTALLER} && sudo ./install.sh) + ``` + +4. Download the Redis source + + Download a specific version of the Redis source code archive from GitHub. + + Replace `` with the Redis version, for example: `8.0.0`. + + ``` + cd ~/src + wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz + ``` + +5. Extract the source archive + + Create a directory for the source code and extract the contents into it: + + ``` + cd ~/src + tar xvf redis-.tar.gz + rm redis-.tar.gz + ``` + +6. Build Redis + + ``` + cd ~/src/redis- + export HOMEBREW_PREFIX="$(brew --prefix)" + export BUILD_WITH_MODULES=yes + export BUILD_TLS=yes + export DISABLE_WERRORS=yes + PATH="$HOMEBREW_PREFIX/opt/libtool/libexec/gnubin:$HOMEBREW_PREFIX/opt/llvm@18/bin:$HOMEBREW_PREFIX/opt/make/libexec/gnubin:$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH" + export LDFLAGS="-L$HOMEBREW_PREFIX/opt/llvm@18/lib" + export CPPFLAGS="-I$HOMEBREW_PREFIX/opt/llvm@18/include" + mkdir -p build_dir/etc + make -C redis-8.0 -j "$(nproc)" all OS=macos + make -C redis-8.0 install PREFIX=$(pwd)/build_dir OS=macos + ``` + +7. Run Redis + + ``` + export LC_ALL=en_US.UTF-8 + export LANG=en_US.UTF-8 + build_dir/bin/redis-server redis-full.conf + ``` + +### Build and run Redis with all data structures - macOS 15 (Sequoia) + +Support and instructions will be provided at a later date. + +### Building Redis - flags and general notes Redis can be compiled and used on Linux, OSX, OpenBSD, NetBSD, FreeBSD. -We support big endian and little endian architectures, and both 32 bit -and 64 bit systems. +We support big endian and little endian architectures, and both 32 bit and 64 bit systems. -It may compile on Solaris derived systems (for instance SmartOS) but our -support for this platform is *best effort* and Redis is not guaranteed to -work as well as in Linux, OSX, and \*BSD. +It may compile on Solaris derived systems (for instance SmartOS) but our support for this platform is *best effort* and Redis is not guaranteed to work as well as in Linux, OSX, and \*BSD. -It is as simple as: +To build Redis with all the data structures (including JSON, time series, Bloom filter, cuckoo filter, count-min sketch, top-k, and t-digest) and with Redis Query Engine, make sure first that all the prerequisites are installed (see build instructions above, per operating system). You need to use the following flag in the make command: - % make -To build with TLS support, you'll need OpenSSL development libraries (e.g. -libssl-dev on Debian/Ubuntu) and run: +``` +make BUILD_WITH_MODULES=yes +``` - % make BUILD_TLS=yes -To build with systemd support, you'll need systemd development libraries (such -as libsystemd-dev on Debian/Ubuntu or systemd-devel on CentOS) and run: +To build Redis with just the core data structures, use: - % make USE_SYSTEMD=yes +``` +make +``` -To append a suffix to Redis program names, use: - % make PROG_SUFFIX="-alt" +To build with TLS support, you need OpenSSL development libraries (e.g. libssl-dev on Debian/Ubuntu) and the following flag in the make command: + +``` +make BUILD_TLS=yes +``` + + +To build with systemd support, you need systemd development libraries (such as libsystemd-dev on Debian/Ubuntu or systemd-devel on CentOS), and the following flag: + +``` +make USE_SYSTEMD=yes +``` + + +To append a suffix to Redis program names, add the following flag: + +``` +make PROG_SUFFIX="-alt" +``` + You can build a 32 bit Redis binary using: - % make 32bit +``` +make 32bit +``` + After building Redis, it is a good idea to test it using: - % make test +``` +make test +``` -If TLS is built, running the tests with TLS enabled (you will need `tcl-tls` -installed): +If TLS is built, running the tests with TLS enabled (you will need `tcl-tls` installed): - % ./utils/gen-test-certs.sh - % ./runtest --tls +``` +./utils/gen-test-certs.sh +./runtest --tls +``` +### Fixing build problems with dependencies or cached build options -Fixing build problems with dependencies or cached build options ---- +Redis has some dependencies which are included in the `deps` directory. `make` does not automatically rebuild dependencies even if something in the source code of dependencies changes. -Redis has some dependencies which are included in the `deps` directory. -`make` does not automatically rebuild dependencies even if something in -the source code of dependencies changes. +When you update the source code with `git pull` or when code inside the dependencies tree is modified in any other way, make sure to use the following command in order to really clean everything and rebuild from scratch: -When you update the source code with `git pull` or when code inside the -dependencies tree is modified in any other way, make sure to use the following -command in order to really clean everything and rebuild from scratch: +``` +make distclean +``` - % make distclean This will clean: jemalloc, lua, hiredis, linenoise and other dependencies. -Also if you force certain build options like 32bit target, no C compiler -optimizations (for debugging purposes), and other similar build time options, -those options are cached indefinitely until you issue a `make distclean` +Also if you force certain build options like 32bit target, no C compiler optimizations (for debugging purposes), and other similar build time options, those options are cached indefinitely until you issue a `make distclean` command. -Fixing problems building 32 bit binaries ---- +### Fixing problems building 32 bit binaries If after building Redis with a 32 bit target you need to rebuild it -with a 64 bit target, or the other way around, you need to perform a -`make distclean` in the root directory of the Redis distribution. +with a 64 bit target, or the other way around, you need to perform a `make distclean` in the root directory of the Redis distribution. -In case of build errors when trying to build a 32 bit binary of Redis, try -the following steps: +In case of build errors when trying to build a 32 bit binary of Redis, try the following steps: * Install the package libc6-dev-i386 (also try g++-multilib). * Try using the following command line instead of `make 32bit`: `make CFLAGS="-m32 -march=native" LDFLAGS="-m32"` -Allocator ---- +### Allocator -Selecting a non-default memory allocator when building Redis is done by setting -the `MALLOC` environment variable. Redis is compiled and linked against libc -malloc by default, with the exception of jemalloc being the default on Linux -systems. This default was picked because jemalloc has proven to have fewer -fragmentation problems than libc malloc. +Selecting a non-default memory allocator when building Redis is done by setting the `MALLOC` environment variable. Redis is compiled and linked against libc malloc by default, with the exception of jemalloc being the default on Linux systems. This default was picked because jemalloc has proven to have fewer fragmentation problems than libc malloc. To force compiling against libc malloc, use: - % make MALLOC=libc +``` +make MALLOC=libc +``` To compile against jemalloc on Mac OS X systems, use: - % make MALLOC=jemalloc +``` +make MALLOC=jemalloc +``` -Monotonic clock ---- +### Monotonic clock -By default, Redis will build using the POSIX clock_gettime function as the -monotonic clock source. On most modern systems, the internal processor clock -can be used to improve performance. Cautions can be found here: - http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/ +By default, Redis will build using the POSIX clock_gettime function as the monotonic clock source. On most modern systems, the internal processor clock can be used to improve performance. Cautions can be found here: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/ To build with support for the processor's internal instruction clock, use: - % make CFLAGS="-DUSE_PROCESSOR_CLOCK" +``` +make CFLAGS="-DUSE_PROCESSOR_CLOCK" +``` -Verbose build ---- +### Verbose build Redis will build with a user-friendly colorized output by default. If you want to see a more verbose output, use the following: - % make V=1 - -Running Redis ---- - -To run Redis with the default configuration, just type: - - % cd src - % ./redis-server - -If you want to provide your redis.conf, you have to run it using an additional -parameter (the path of the configuration file): - - % cd src - % ./redis-server /path/to/redis.conf - -It is possible to alter the Redis configuration by passing parameters directly -as options using the command line. Examples: - - % ./redis-server --port 9999 --replicaof 127.0.0.1 6379 - % ./redis-server /etc/redis/6379.conf --loglevel debug - -All the options in redis.conf are also supported as options using the command -line, with exactly the same name. - -Running Redis with TLS ---- - -Please consult the [TLS.md](TLS.md) file for more information on -how to use Redis with TLS. - -Playing with Redis ---- - -You can use redis-cli to play with Redis. Start a redis-server instance, -then in another terminal try the following: - - % cd src - % ./redis-cli - redis> ping - PONG - redis> set foo bar - OK - redis> get foo - "bar" - redis> incr mycounter - (integer) 1 - redis> incr mycounter - (integer) 2 - redis> - -You can find the list of all the available commands at https://redis.io/commands. - -Installing Redis ---- - -In order to install Redis binaries into /usr/local/bin, just use: - - % make install - -You can use `make PREFIX=/some/other/directory install` if you wish to use a -different destination. - -`make install` will just install binaries in your system, but will not configure -init scripts and configuration files in the appropriate place. This is not -needed if you just want to play a bit with Redis, but if you are installing -it the proper way for a production system, we have a script that does this -for Ubuntu and Debian systems: - - % cd utils - % ./install_server.sh - -_Note_: `install_server.sh` will not work on Mac OSX; it is built for Linux only. - -The script will ask you a few questions and will setup everything you need -to run Redis properly as a background daemon that will start again on -system reboots. - -You'll be able to stop and start Redis using the script named -`/etc/init.d/redis_`, for instance `/etc/init.d/redis_6379`. - -Code contributions ---- - -By contributing code to the Redis project in any form, including sending a pull request via GitHub, -a code fragment or patch via private email or public discussion groups, you agree to release your -code under the terms of the [Redis Software Grant and Contributor License Agreement][1]. Redis software -contains contributions to the original Redis core project, which are owned by their contributors and -licensed under the 3BSD license. Any copy of that license in this repository applies only to those -contributions. Redis releases all Redis Community Edition versions from 7.4.x and thereafter under the -RSALv2/SSPL dual-license as described in the [LICENSE.txt][2] file included in the Redis Community Edition source distribution. - -Please see the [CONTRIBUTING.md][1] file in this source distribution for more information. For -security bugs and vulnerabilities, please see [SECURITY.md][3]. - -[1]: https://github.com/redis/redis/blob/unstable/CONTRIBUTING.md -[2]: https://github.com/redis/redis/blob/unstable/LICENSE.txt -[3]: https://github.com/redis/redis/blob/unstable/SECURITY.md - -Redis Trademarks ---- - -The purpose of a trademark is to identify the goods and services of a person or company without -causing confusion. As the registered owner of its name and logo, Redis accepts certain limited uses -of its trademarks but it has requirements that must be followed as described in its Trademark -Guidelines available at: https://redis.com/legal/trademark-guidelines/. - -Redis internals -=== - -If you are reading this README you are likely in front of a GitHub page -or you just untarred the Redis distribution tar ball. In both the cases -you are basically one step away from the source code, so here we explain -the Redis source code layout, what is in each file as a general idea, the -most important functions and structures inside the Redis server and so forth. -We keep all the discussion at a high level without digging into the details -since this document would be huge otherwise and our code base changes -continuously, but a general idea should be a good starting point to -understand more. Moreover most of the code is heavily commented and easy -to follow. - -Source code layout ---- - -The Redis root directory just contains this README, the Makefile which -calls the real Makefile inside the `src` directory and an example -configuration for Redis and Redis Sentinel. You can find a few shell -scripts that are used in order to execute the Redis, Redis Cluster and -Redis Sentinel unit tests, which are implemented inside the `tests` -directory. - -Inside the root are the following important directories: - -* `src`: contains the Redis implementation, written in C. -* `tests`: contains the unit tests, implemented in Tcl. -* `deps`: contains libraries Redis uses. Everything needed to compile Redis is inside this directory; your system just needs to provide `libc`, a POSIX compatible interface and a C compiler. Notably `deps` contains a copy of `jemalloc`, which is the default allocator of Redis under Linux. Note that under `deps` there are also things which started with the Redis project, but for which the main repository is not `redis/redis`. - -There are a few more directories but they are not very important for our goals -here. We'll focus mostly on `src`, where the Redis implementation is contained, -exploring what there is inside each file. The order in which files are -exposed is the logical one to follow in order to disclose different layers -of complexity incrementally. - -Note: lately Redis was refactored quite a bit. Function names and file -names have been changed, so you may find that this documentation reflects the -`unstable` branch more closely. For instance, in Redis 3.0 the `server.c` -and `server.h` files were named `redis.c` and `redis.h`. However the overall -structure is the same. Keep in mind that all the new developments and pull -requests should be performed against the `unstable` branch. - -server.h ---- - -The simplest way to understand how a program works is to understand the -data structures it uses. So we'll start from the main header file of -Redis, which is `server.h`. - -All the server configuration and in general all the shared state is -defined in a global structure called `server`, of type `struct redisServer`. -A few important fields in this structure are: - -* `server.db` is an array of Redis databases, where data is stored. -* `server.commands` is the command table. -* `server.clients` is a linked list of clients connected to the server. -* `server.master` is a special client, the master, if the instance is a replica. - -There are tons of other fields. Most fields are commented directly inside -the structure definition. - -Another important Redis data structure is the one defining a client. -In the past it was called `redisClient`, now just `client`. The structure -has many fields, here we'll just show the main ones: -```c -struct client { - int fd; - sds querybuf; - int argc; - robj **argv; - redisDb *db; - int flags; - list *reply; - // ... many other fields ... - char buf[PROTO_REPLY_CHUNK_BYTES]; -} ``` -The client structure defines a *connected client*: - -* The `fd` field is the client socket file descriptor. -* `argc` and `argv` are populated with the command the client is executing, so that functions implementing a given Redis command can read the arguments. -* `querybuf` accumulates the requests from the client, which are parsed by the Redis server according to the Redis protocol and executed by calling the implementations of the commands the client is executing. -* `reply` and `buf` are dynamic and static buffers that accumulate the replies the server sends to the client. These buffers are incrementally written to the socket as soon as the file descriptor is writable. - -As you can see in the client structure above, arguments in a command -are described as `robj` structures. The following is the full `robj` -structure, which defines a *Redis object*: - -```c -struct redisObject { - unsigned type:4; - unsigned encoding:4; - unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or - * LFU data (least significant 8 bits frequency - * and most significant 16 bits access time). */ - int refcount; - void *ptr; -}; +make V=1 ``` -Basically this structure can represent all the basic Redis data types like -strings, lists, sets, sorted sets and so forth. The interesting thing is that -it has a `type` field, so that it is possible to know what type a given -object has, and a `refcount`, so that the same object can be referenced -in multiple places without allocating it multiple times. Finally the `ptr` -field points to the actual representation of the object, which might vary -even for the same type, depending on the `encoding` used. +### Running Redis with TLS -Redis objects are used extensively in the Redis internals, however in order -to avoid the overhead of indirect accesses, recently in many places -we just use plain dynamic strings not wrapped inside a Redis object. +Please consult the [TLS.md](TLS.md) file for more information on how to use Redis with TLS. -server.c ---- +### Code contributions -This is the entry point of the Redis server, where the `main()` function -is defined. The following are the most important steps in order to startup -the Redis server. +By contributing code to the Redis project in any form, including sending a pull request via GitHub, a code fragment or patch via private email or public discussion groups, you agree to release your code under the terms of the Redis Software Grant and Contributor License Agreement. Please see the CONTRIBUTING.md file in this source distribution for more information. For security bugs and vulnerabilities, please see SECURITY.md. Open Source Redis releases are subject to the following licenses: -* `initServerConfig()` sets up the default values of the `server` structure. -* `initServer()` allocates the data structures needed to operate, setup the listening socket, and so forth. -* `aeMain()` starts the event loop which listens for new connections. +1. Version 7.2.x and prior releases are subject to BSDv3. These contributions to the original Redis core project are owned by their contributors and licensed under the 3BSDv3 license as referenced in the REDISCONTRIBUTIONS.txt file. Any copy of that license in this repository applies only to those contributions; -There are two special functions called periodically by the event loop: +2. Versions 7.4.x to 7.8.x are subject to your choice of RSALv2 or SSPLv1; and -1. `serverCron()` is called periodically (according to `server.hz` frequency), and performs tasks that must be performed from time to time, like checking for timed out clients. -2. `beforeSleep()` is called every time the event loop fired, Redis served a few requests, and is returning back into the event loop. +3. Version 8.0.x and subsequent releases are subject to the tri-license RSALv2/SSPLv1/AGPLv3 at your option as referenced in the LICENSE.txt file. -Inside server.c you can find code that handles other vital things of the Redis server: +### Redis Trademarks -* `call()` is used in order to call a given command in the context of a given client. -* `activeExpireCycle()` handles eviction of keys with a time to live set via the `EXPIRE` command. -* `performEvictions()` is called when a new write command should be performed but Redis is out of memory according to the `maxmemory` directive. -* The global variable `redisCommandTable` defines all the Redis commands, specifying the name of the command, the function implementing the command, the number of arguments required, and other properties of each command. - -commands.c ---- -This file is auto generated by utils/generate-command-code.py, the content is based on the JSON files in the src/commands folder. -These are meant to be the single source of truth about the Redis commands, and all the metadata about them. -These JSON files are not meant to be used by anyone directly, instead that metadata can be obtained via the `COMMAND` command. - -networking.c ---- - -This file defines all the I/O functions with clients, masters and replicas -(which in Redis are just special clients): - -* `createClient()` allocates and initializes a new client. -* The `addReply*()` family of functions are used by command implementations in order to append data to the client structure, that will be transmitted to the client as a reply for a given command executed. -* `writeToClient()` transmits the data pending in the output buffers to the client and is called by the *writable event handler* `sendReplyToClient()`. -* `readQueryFromClient()` is the *readable event handler* and accumulates data read from the client into the query buffer. -* `processInputBuffer()` is the entry point in order to parse the client query buffer according to the Redis protocol. Once commands are ready to be processed, it calls `processCommand()` which is defined inside `server.c` in order to actually execute the command. -* `freeClient()` deallocates, disconnects and removes a client. - -aof.c and rdb.c ---- - -As you can guess from the names, these files implement the RDB and AOF -persistence for Redis. Redis uses a persistence model based on the `fork()` -system call in order to create a process with the same (shared) memory -content of the main Redis process. This secondary process dumps the content -of the memory on disk. This is used by `rdb.c` to create the snapshots -on disk and by `aof.c` in order to perform the AOF rewrite when the -append only file gets too big. - -The implementation inside `aof.c` has additional functions in order to -implement an API that allows commands to append new commands into the AOF -file as clients execute them. - -The `call()` function defined inside `server.c` is responsible for calling -the functions that in turn will write the commands into the AOF. - -db.c ---- - -Certain Redis commands operate on specific data types; others are general. -Examples of generic commands are `DEL` and `EXPIRE`. They operate on keys -and not on their values specifically. All those generic commands are -defined inside `db.c`. - -Moreover `db.c` implements an API in order to perform certain operations -on the Redis dataset without directly accessing the internal data structures. - -The most important functions inside `db.c` which are used in many command -implementations are the following: - -* `lookupKeyRead()` and `lookupKeyWrite()` are used in order to get a pointer to the value associated to a given key, or `NULL` if the key does not exist. -* `dbAdd()` and its higher level counterpart `setKey()` create a new key in a Redis database. -* `dbDelete()` removes a key and its associated value. -* `emptyData()` removes an entire single database or all the databases defined. - -The rest of the file implements the generic commands exposed to the client. - -object.c ---- - -The `robj` structure defining Redis objects was already described. Inside -`object.c` there are all the functions that operate with Redis objects at -a basic level, like functions to allocate new objects, handle the reference -counting and so forth. Notable functions inside this file: - -* `incrRefCount()` and `decrRefCount()` are used in order to increment or decrement an object reference count. When it drops to 0 the object is finally freed. -* `createObject()` allocates a new object. There are also specialized functions to allocate string objects having a specific content, like `createStringObjectFromLongLong()` and similar functions. - -This file also implements the `OBJECT` command. - -replication.c ---- - -This is one of the most complex files inside Redis, it is recommended to -approach it only after getting a bit familiar with the rest of the code base. -In this file there is the implementation of both the master and replica role -of Redis. - -One of the most important functions inside this file is `replicationFeedSlaves()` that writes commands to the clients representing replica instances connected -to our master, so that the replicas can get the writes performed by the clients: -this way their data set will remain synchronized with the one in the master. - -This file also implements both the `SYNC` and `PSYNC` commands that are -used in order to perform the first synchronization between masters and -replicas, or to continue the replication after a disconnection. - -Script ---- - -The script unit is composed of 3 units: -* `script.c` - integration of scripts with Redis (commands execution, set replication/resp, ...) -* `script_lua.c` - responsible to execute Lua code, uses `script.c` to interact with Redis from within the Lua code. -* `function_lua.c` - contains the Lua engine implementation, uses `script_lua.c` to execute the Lua code. -* `functions.c` - contains Redis Functions implementation (`FUNCTION` command), uses `functions_lua.c` if the function it wants to invoke needs the Lua engine. -* `eval.c` - contains the `eval` implementation using `script_lua.c` to invoke the Lua code. - - -Other C files ---- - -* `t_hash.c`, `t_list.c`, `t_set.c`, `t_string.c`, `t_zset.c` and `t_stream.c` contains the implementation of the Redis data types. They implement both an API to access a given data type, and the client command implementations for these data types. -* `ae.c` implements the Redis event loop, it's a self contained library which is simple to read and understand. -* `sds.c` is the Redis string library, check https://github.com/antirez/sds for more information. -* `anet.c` is a library to use POSIX networking in a simpler way compared to the raw interface exposed by the kernel. -* `dict.c` is an implementation of a non-blocking hash table which rehashes incrementally. -* `cluster.c` implements the Redis Cluster. Probably a good read only after being very familiar with the rest of the Redis code base. If you want to read `cluster.c` make sure to read the [Redis Cluster specification][4]. - -[4]: https://redis.io/docs/latest/operate/oss_and_stack/reference/cluster-spec/ - -Anatomy of a Redis command ---- - -All the Redis commands are defined in the following way: - -```c -void foobarCommand(client *c) { - printf("%s",c->argv[1]->ptr); /* Do something with the argument. */ - addReply(c,shared.ok); /* Reply something to the client. */ -} -``` - -The command function is referenced by a JSON file, together with its metadata, see `commands.c` described above for details. -The command flags are documented in the comment above the `struct redisCommand` in `server.h`. -For other details, please refer to the `COMMAND` command. https://redis.io/commands/command/ - -After the command operates in some way, it returns a reply to the client, -usually using `addReply()` or a similar function defined inside `networking.c`. - -There are tons of command implementations inside the Redis source code -that can serve as examples of actual commands implementations (e.g. pingCommand). Writing -a few toy commands can be a good exercise to get familiar with the code base. - -There are also many other files not described here, but it is useless to -cover everything. We just want to help you with the first steps. -Eventually you'll find your way inside the Redis code base :-) - -Enjoy! +The purpose of a trademark is to identify the goods and services of a person or company without causing confusion. As the registered owner of its name and logo, Redis accepts certain limited uses of its trademarks but it has requirements that must be followed as described in its Trademark Guidelines available at: https://redis.io/legal/trademark-policy/. diff --git a/REDISCONTRIBUTIONS.txt b/REDISCONTRIBUTIONS.txt index 00c9879c8..0819e5f43 100644 --- a/REDISCONTRIBUTIONS.txt +++ b/REDISCONTRIBUTIONS.txt @@ -3,9 +3,10 @@ All rights reserved. Note: Continued Applicability of the BSD-3-Clause License -Despite the shift to the dual-licensing model with Redis Community Edition version 7.4 (RSALv2 or SSPLv1), portions of -Redis Community Edition remain available subject to the BSD-3-Clause License (BSD). See below for the full BSD -license: +Despite the shift to the dual-licensing model with version 7.4 (RSALv2 or SSPLv1) and +the shift to a tri-license option with version 8.0 (RSALv2/SSPLv1/AGPLv3), portions of +Redis Open Source remain available subject to the BSD-3-Clause License (BSD). +See below for the full BSD license: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/modules/vector-sets/examples/cli-tool/cli.py b/modules/vector-sets/examples/cli-tool/cli.py index 66825f2ff..7a2eeb4f9 100755 --- a/modules/vector-sets/examples/cli-tool/cli.py +++ b/modules/vector-sets/examples/cli-tool/cli.py @@ -2,8 +2,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # #!/usr/bin/env python3 diff --git a/modules/vector-sets/examples/glove-100/insert.py b/modules/vector-sets/examples/glove-100/insert.py index 53ad90fd9..595c77fda 100644 --- a/modules/vector-sets/examples/glove-100/insert.py +++ b/modules/vector-sets/examples/glove-100/insert.py @@ -2,8 +2,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # import h5py diff --git a/modules/vector-sets/examples/glove-100/recall.py b/modules/vector-sets/examples/glove-100/recall.py index a5b556ec4..3064aedf2 100644 --- a/modules/vector-sets/examples/glove-100/recall.py +++ b/modules/vector-sets/examples/glove-100/recall.py @@ -2,8 +2,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # import h5py diff --git a/modules/vector-sets/examples/movies/insert.py b/modules/vector-sets/examples/movies/insert.py index 1a2c5dcf0..dad4da346 100644 --- a/modules/vector-sets/examples/movies/insert.py +++ b/modules/vector-sets/examples/movies/insert.py @@ -2,8 +2,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # import csv diff --git a/modules/vector-sets/expr.c b/modules/vector-sets/expr.c index e46951fd2..fce4683f3 100644 --- a/modules/vector-sets/expr.c +++ b/modules/vector-sets/expr.c @@ -6,8 +6,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * Originally authored by: Salvatore Sanfilippo. */ diff --git a/modules/vector-sets/hnsw.c b/modules/vector-sets/hnsw.c index eb37221b9..291c95b86 100644 --- a/modules/vector-sets/hnsw.c +++ b/modules/vector-sets/hnsw.c @@ -28,8 +28,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * Originally authored by: Salvatore Sanfilippo. */ diff --git a/modules/vector-sets/hnsw.h b/modules/vector-sets/hnsw.h index 44a946fb4..2af35a27c 100644 --- a/modules/vector-sets/hnsw.h +++ b/modules/vector-sets/hnsw.h @@ -5,8 +5,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * Originally authored by: Salvatore Sanfilippo. */ diff --git a/modules/vector-sets/test.py b/modules/vector-sets/test.py index 1cc7da2d1..da5ce15a2 100755 --- a/modules/vector-sets/test.py +++ b/modules/vector-sets/test.py @@ -6,8 +6,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # import redis diff --git a/modules/vector-sets/vset.c b/modules/vector-sets/vset.c index 84a193cda..88e54a64f 100644 --- a/modules/vector-sets/vset.c +++ b/modules/vector-sets/vset.c @@ -4,8 +4,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * Originally authored by: Salvatore Sanfilippo. * * ======================== Understand threading model ========================= diff --git a/modules/vector-sets/w2v.c b/modules/vector-sets/w2v.c index 9cbf7e1b6..bcf6338e7 100644 --- a/modules/vector-sets/w2v.c +++ b/modules/vector-sets/w2v.c @@ -5,8 +5,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * Originally authored by: Salvatore Sanfilippo */ diff --git a/src/Makefile b/src/Makefile index 8b0e3d946..948ef8333 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,8 +2,9 @@ # Copyright (c) 2011-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # The Makefile composes the final FINAL_CFLAGS and FINAL_LDFLAGS using # what is needed for Redis plus the standard CFLAGS and LDFLAGS passed. diff --git a/src/acl.c b/src/acl.c index 0eb794276..caf099c8d 100644 --- a/src/acl.c +++ b/src/acl.c @@ -2,8 +2,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/adlist.c b/src/adlist.c index 48f005a5b..68a5d70f7 100644 --- a/src/adlist.c +++ b/src/adlist.c @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ diff --git a/src/adlist.h b/src/adlist.h index a6f235bd2..712c03fd7 100644 --- a/src/adlist.h +++ b/src/adlist.h @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __ADLIST_H__ diff --git a/src/ae.c b/src/ae.c index ac4422398..733c88d52 100644 --- a/src/ae.c +++ b/src/ae.c @@ -5,8 +5,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "ae.h" diff --git a/src/ae.h b/src/ae.h index 16c5fcc5c..996d48b0f 100644 --- a/src/ae.h +++ b/src/ae.h @@ -5,8 +5,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __AE_H__ diff --git a/src/ae_epoll.c b/src/ae_epoll.c index d03d694fe..6b916618b 100644 --- a/src/ae_epoll.c +++ b/src/ae_epoll.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ diff --git a/src/ae_select.c b/src/ae_select.c index 63d0dfb82..208cc32ec 100644 --- a/src/ae_select.c +++ b/src/ae_select.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ diff --git a/src/anet.c b/src/anet.c index 705b9e5ce..ad4ac49d8 100644 --- a/src/anet.c +++ b/src/anet.c @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/anet.h b/src/anet.h index 8ad5f4b0b..211421940 100644 --- a/src/anet.h +++ b/src/anet.h @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef ANET_H diff --git a/src/aof.c b/src/aof.c index f3f6d782f..ae8bec7a3 100644 --- a/src/aof.c +++ b/src/aof.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/asciilogo.h b/src/asciilogo.h index fc000d63a..73a997778 100644 --- a/src/asciilogo.h +++ b/src/asciilogo.h @@ -2,14 +2,15 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ const char *ascii_logo = " _._ \n" " _.-``__ ''-._ \n" -" _.-`` `. `_. ''-._ Redis Community Edition \n" +" _.-`` `. `_. ''-._ Redis Open Source \n" " .-`` .-```. ```\\/ _.,_ ''-._ %s (%s/%d) %s bit\n" " ( ' , .-` | `, ) Running in %s mode\n" " |`-._`-...-` __...-.``-._|'` _.-'| Port: %d\n" diff --git a/src/atomicvar.h b/src/atomicvar.h index 834e77880..c9093470a 100644 --- a/src/atomicvar.h +++ b/src/atomicvar.h @@ -49,8 +49,9 @@ * Copyright (c) 2015-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/bio.c b/src/bio.c index 0bddf8a6b..34e3ac1e9 100644 --- a/src/bio.c +++ b/src/bio.c @@ -39,8 +39,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/bio.h b/src/bio.h index 614736c20..615cf45b8 100644 --- a/src/bio.h +++ b/src/bio.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __BIO_H diff --git a/src/bitops.c b/src/bitops.c index 44312c6af..4d33ff953 100644 --- a/src/bitops.c +++ b/src/bitops.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/blocked.c b/src/blocked.c index b9df8aa02..4d3df4403 100644 --- a/src/blocked.c +++ b/src/blocked.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * --------------------------------------------------------------------------- * diff --git a/src/call_reply.c b/src/call_reply.c index af9ebae58..2a4f7100d 100644 --- a/src/call_reply.c +++ b/src/call_reply.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/call_reply.h b/src/call_reply.h index fc7013ea0..4ae7f3cf1 100644 --- a/src/call_reply.h +++ b/src/call_reply.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef SRC_CALL_REPLY_H_ diff --git a/src/childinfo.c b/src/childinfo.c index eb98d469a..826fb8a06 100644 --- a/src/childinfo.c +++ b/src/childinfo.c @@ -2,8 +2,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/cli_common.c b/src/cli_common.c index 65372661e..0c269de9a 100644 --- a/src/cli_common.c +++ b/src/cli_common.c @@ -3,8 +3,9 @@ * Copyright (c) 2020-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/cluster.c b/src/cluster.c index 6c0bf75cc..3d0e78404 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/cluster_legacy.c b/src/cluster_legacy.c index 32efd2b24..88dc99691 100644 --- a/src/cluster_legacy.c +++ b/src/cluster_legacy.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/cluster_legacy.h b/src/cluster_legacy.h index 4907ea0e2..d0cb89d5c 100644 --- a/src/cluster_legacy.h +++ b/src/cluster_legacy.h @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/config.c b/src/config.c index 54a280a25..a5ddad6b7 100644 --- a/src/config.c +++ b/src/config.c @@ -6,8 +6,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/config.h b/src/config.h index ec0fb1529..47338554a 100644 --- a/src/config.h +++ b/src/config.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __CONFIG_H diff --git a/src/connection.h b/src/connection.h index 0ebc84489..c6de005c8 100644 --- a/src/connection.h +++ b/src/connection.h @@ -3,8 +3,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __REDIS_CONNECTION_H diff --git a/src/connhelpers.h b/src/connhelpers.h index 79737fa8e..8d6f4b90c 100644 --- a/src/connhelpers.h +++ b/src/connhelpers.h @@ -3,8 +3,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __REDIS_CONNHELPERS_H diff --git a/src/db.c b/src/db.c index 615a0c4bd..508c342fb 100644 --- a/src/db.c +++ b/src/db.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/debug.c b/src/debug.c index 5584ae387..77a4cf78c 100644 --- a/src/debug.c +++ b/src/debug.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/debugmacro.h b/src/debugmacro.h index e94b0c0e3..c977381fc 100644 --- a/src/debugmacro.h +++ b/src/debugmacro.h @@ -5,8 +5,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef _REDIS_DEBUGMACRO_H_ diff --git a/src/defrag.c b/src/defrag.c index 7d375305c..56c348c33 100644 --- a/src/defrag.c +++ b/src/defrag.c @@ -11,8 +11,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/dict.c b/src/dict.c index b74bed2d4..3f60bd165 100644 --- a/src/dict.c +++ b/src/dict.c @@ -8,8 +8,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/dict.h b/src/dict.h index 4fe28d8c7..b4bf581b9 100644 --- a/src/dict.h +++ b/src/dict.h @@ -8,8 +8,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __DICT_H diff --git a/src/ebuckets.c b/src/ebuckets.c index 6c73ec67a..b2c955b3f 100644 --- a/src/ebuckets.c +++ b/src/ebuckets.c @@ -1,8 +1,9 @@ /* * Copyright Redis Ltd. 2024 - present * - * Licensed under your choice of the Redis Source Available License 2.0 (RSALv2) - * or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/ebuckets.h b/src/ebuckets.h index 5975c65dc..ce5bbb2bd 100644 --- a/src/ebuckets.h +++ b/src/ebuckets.h @@ -1,8 +1,9 @@ /* * Copyright Redis Ltd. 2024 - present * - * Licensed under your choice of the Redis Source Available License 2.0 (RSALv2) - * or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * * WHAT IS EBUCKETS? diff --git a/src/endianconv.c b/src/endianconv.c index 36673e0d0..12ee03cbd 100644 --- a/src/endianconv.c +++ b/src/endianconv.c @@ -16,8 +16,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ diff --git a/src/endianconv.h b/src/endianconv.h index 469913d11..f7cc91eca 100644 --- a/src/endianconv.h +++ b/src/endianconv.h @@ -5,8 +5,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __ENDIANCONV_H diff --git a/src/eval.c b/src/eval.c index 783bc1ebf..41c8deec4 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2,8 +2,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/eventnotifier.c b/src/eventnotifier.c index 6dc3cf990..0a6c145c1 100644 --- a/src/eventnotifier.c +++ b/src/eventnotifier.c @@ -3,8 +3,9 @@ * Copyright (c) 2024-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "eventnotifier.h" diff --git a/src/eventnotifier.h b/src/eventnotifier.h index 39e3b5113..e2ae90738 100644 --- a/src/eventnotifier.h +++ b/src/eventnotifier.h @@ -3,8 +3,9 @@ * Copyright (c) 2024-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef EVENTNOTIFIER_H diff --git a/src/evict.c b/src/evict.c index fe19ca177..19e4d59f4 100644 --- a/src/evict.c +++ b/src/evict.c @@ -5,8 +5,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/expire.c b/src/expire.c index dee55f178..7a5cdce81 100644 --- a/src/expire.c +++ b/src/expire.c @@ -5,8 +5,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/fmacros.h b/src/fmacros.h index 92791cbce..d05230dca 100644 --- a/src/fmacros.h +++ b/src/fmacros.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef _REDIS_FMACRO_H diff --git a/src/function_lua.c b/src/function_lua.c index ff471f2ac..a5e7e0a77 100644 --- a/src/function_lua.c +++ b/src/function_lua.c @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* diff --git a/src/functions.c b/src/functions.c index 961542a79..3394a0113 100644 --- a/src/functions.c +++ b/src/functions.c @@ -2,8 +2,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "functions.h" diff --git a/src/functions.h b/src/functions.h index 4df6d1b59..2a487da74 100644 --- a/src/functions.h +++ b/src/functions.h @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __FUNCTIONS_H_ diff --git a/src/hyperloglog.c b/src/hyperloglog.c index 9f6e7c27e..2f8c02e2c 100644 --- a/src/hyperloglog.c +++ b/src/hyperloglog.c @@ -7,8 +7,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/iothread.c b/src/iothread.c index e3da683d5..d643905d6 100644 --- a/src/iothread.c +++ b/src/iothread.c @@ -3,8 +3,9 @@ * Copyright (c) 2024-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/kvstore.c b/src/kvstore.c index d7948c9ab..ef29bd4d0 100644 --- a/src/kvstore.c +++ b/src/kvstore.c @@ -15,8 +15,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/kvstore.h b/src/kvstore.h index c077dd625..e2431a94e 100644 --- a/src/kvstore.h +++ b/src/kvstore.h @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/latency.c b/src/latency.c index 69c9f4e5f..09639bd50 100644 --- a/src/latency.c +++ b/src/latency.c @@ -8,8 +8,9 @@ * Copyright (c) 2014-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/latency.h b/src/latency.h index 1951957c0..945004a48 100644 --- a/src/latency.h +++ b/src/latency.h @@ -6,8 +6,9 @@ * Copyright (c) 2014-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __LATENCY_H diff --git a/src/listpack.c b/src/listpack.c index b96ebc763..eef83092d 100644 --- a/src/listpack.c +++ b/src/listpack.c @@ -7,8 +7,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/listpack.h b/src/listpack.h index 1f80d5fc2..2c3b78933 100644 --- a/src/listpack.h +++ b/src/listpack.h @@ -7,8 +7,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __LISTPACK_H diff --git a/src/listpack_malloc.h b/src/listpack_malloc.h index 55c8cf5be..e9040544e 100644 --- a/src/listpack_malloc.h +++ b/src/listpack_malloc.h @@ -4,8 +4,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* Allocator selection. diff --git a/src/localtime.c b/src/localtime.c index 7f014cefc..e95eb6911 100644 --- a/src/localtime.c +++ b/src/localtime.c @@ -2,8 +2,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/logreqres.c b/src/logreqres.c index a18bf3efb..97d594823 100644 --- a/src/logreqres.c +++ b/src/logreqres.c @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* This file implements the interface of logging clients' requests and diff --git a/src/lolwut.c b/src/lolwut.c index 34defdb70..3017f7aa5 100644 --- a/src/lolwut.c +++ b/src/lolwut.c @@ -2,8 +2,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * ---------------------------------------------------------------------------- * diff --git a/src/lolwut.h b/src/lolwut.h index 97471ac55..914db0d7e 100644 --- a/src/lolwut.h +++ b/src/lolwut.h @@ -2,8 +2,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* This structure represents our canvas. Drawing functions will take a pointer diff --git a/src/lolwut5.c b/src/lolwut5.c index 9f20292f4..29f0a2f8d 100644 --- a/src/lolwut5.c +++ b/src/lolwut5.c @@ -2,8 +2,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * ---------------------------------------------------------------------------- * diff --git a/src/lolwut6.c b/src/lolwut6.c index 1ccc643cb..e88be3b10 100644 --- a/src/lolwut6.c +++ b/src/lolwut6.c @@ -2,8 +2,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * ---------------------------------------------------------------------------- * diff --git a/src/memtest.c b/src/memtest.c index f5f49d1d3..f75d6b21c 100644 --- a/src/memtest.c +++ b/src/memtest.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include #include diff --git a/src/module.c b/src/module.c index e0e568041..c458a647c 100644 --- a/src/module.c +++ b/src/module.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/modules/helloblock.c b/src/modules/helloblock.c index a956c78ce..44bb01081 100644 --- a/src/modules/helloblock.c +++ b/src/modules/helloblock.c @@ -6,8 +6,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/hellocluster.c b/src/modules/hellocluster.c index 95f468cbe..38d7e1f1b 100644 --- a/src/modules/hellocluster.c +++ b/src/modules/hellocluster.c @@ -5,8 +5,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/hellodict.c b/src/modules/hellodict.c index 607c3e310..00c4964ae 100644 --- a/src/modules/hellodict.c +++ b/src/modules/hellodict.c @@ -8,8 +8,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/hellohook.c b/src/modules/hellohook.c index 836f43a9b..c8c371d23 100644 --- a/src/modules/hellohook.c +++ b/src/modules/hellohook.c @@ -5,8 +5,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/hellotimer.c b/src/modules/hellotimer.c index b891c41c3..1c0c3a65d 100644 --- a/src/modules/hellotimer.c +++ b/src/modules/hellotimer.c @@ -5,8 +5,9 @@ * Copyright (c) 2018-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/hellotype.c b/src/modules/hellotype.c index 16343aa4e..aecb331a9 100644 --- a/src/modules/hellotype.c +++ b/src/modules/hellotype.c @@ -10,8 +10,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/modules/helloworld.c b/src/modules/helloworld.c index cdbc8c89c..fdeb0a0c1 100644 --- a/src/modules/helloworld.c +++ b/src/modules/helloworld.c @@ -9,8 +9,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "../redismodule.h" diff --git a/src/mstr.c b/src/mstr.c index 39200d731..3648806eb 100644 --- a/src/mstr.c +++ b/src/mstr.c @@ -1,8 +1,9 @@ /* * Copyright Redis Ltd. 2024 - present * - * Licensed under your choice of the Redis Source Available License 2.0 (RSALv2) - * or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/mstr.h b/src/mstr.h index 1613a637e..bb8f9c1cf 100644 --- a/src/mstr.h +++ b/src/mstr.h @@ -1,8 +1,9 @@ /* * Copyright Redis Ltd. 2024 - present * - * Licensed under your choice of the Redis Source Available License 2.0 (RSALv2) - * or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * * WHAT IS MSTR (M-STRING)? diff --git a/src/multi.c b/src/multi.c index 1956c3dd8..c8082c297 100644 --- a/src/multi.c +++ b/src/multi.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/networking.c b/src/networking.c index 8a9dfe8fa..eb0b389eb 100644 --- a/src/networking.c +++ b/src/networking.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/notify.c b/src/notify.c index 8c8249131..df5435a08 100644 --- a/src/notify.c +++ b/src/notify.c @@ -2,8 +2,9 @@ * Copyright (c) 2013-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/object.c b/src/object.c index 2917a9117..779a2b014 100644 --- a/src/object.c +++ b/src/object.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/pqsort.h b/src/pqsort.h index 621147424..5a87e55b0 100644 --- a/src/pqsort.h +++ b/src/pqsort.h @@ -4,8 +4,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * See the pqsort.c file for the original copyright notice. */ diff --git a/src/pubsub.c b/src/pubsub.c index 25099055f..be82ced35 100644 --- a/src/pubsub.c +++ b/src/pubsub.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/rand.h b/src/rand.h index ccacbf28a..37b03f41f 100644 --- a/src/rand.h +++ b/src/rand.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef REDIS_RANDOM_H diff --git a/src/rax.c b/src/rax.c index 491e50aa0..5f3a8c176 100644 --- a/src/rax.c +++ b/src/rax.c @@ -3,8 +3,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/rax.h b/src/rax.h index 74963acad..66afe4085 100644 --- a/src/rax.h +++ b/src/rax.h @@ -3,8 +3,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef RAX_H diff --git a/src/rax_malloc.h b/src/rax_malloc.h index a45bc98db..0794b05ec 100644 --- a/src/rax_malloc.h +++ b/src/rax_malloc.h @@ -3,8 +3,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* Allocator selection. diff --git a/src/rdb.c b/src/rdb.c index 7a072cad5..153803939 100644 --- a/src/rdb.c +++ b/src/rdb.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/rdb.h b/src/rdb.h index 85045f152..602b075c1 100644 --- a/src/rdb.h +++ b/src/rdb.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __RDB_H diff --git a/src/redis-benchmark.c b/src/redis-benchmark.c index 94151ba8a..2dbdbd6a1 100644 --- a/src/redis-benchmark.c +++ b/src/redis-benchmark.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/redis-check-rdb.c b/src/redis-check-rdb.c index d7a60fdf3..e070fad9a 100644 --- a/src/redis-check-rdb.c +++ b/src/redis-check-rdb.c @@ -2,8 +2,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "mt19937-64.h" diff --git a/src/redis-cli.c b/src/redis-cli.c index 488ca5f53..bbaabca52 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/redisassert.h b/src/redisassert.h index a85cac6df..179833187 100644 --- a/src/redisassert.h +++ b/src/redisassert.h @@ -10,8 +10,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __REDIS_ASSERT_H__ diff --git a/src/release.c b/src/release.c index f6619bb1d..11f7f5188 100644 --- a/src/release.c +++ b/src/release.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* Every time the Redis Git SHA1 or Dirty status changes only this small diff --git a/src/replication.c b/src/replication.c index 73f37e996..75ad41976 100644 --- a/src/replication.c +++ b/src/replication.c @@ -6,8 +6,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/resp_parser.c b/src/resp_parser.c index c4eb75111..8c0f17d39 100644 --- a/src/resp_parser.c +++ b/src/resp_parser.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* ---------------------------------------------------------------------------------------- diff --git a/src/resp_parser.h b/src/resp_parser.h index 9ca5afa4e..eaf1e323e 100644 --- a/src/resp_parser.h +++ b/src/resp_parser.h @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef SRC_RESP_PARSER_H_ diff --git a/src/rio.c b/src/rio.c index 16ec75b07..bdab6d8c9 100644 --- a/src/rio.c +++ b/src/rio.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/rio.h b/src/rio.h index b868fd366..71412d5f6 100644 --- a/src/rio.h +++ b/src/rio.h @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/script.c b/src/script.c index 4f8468b0e..eb45978f8 100644 --- a/src/script.c +++ b/src/script.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/script.h b/src/script.h index 060c93b44..4f43c09d5 100644 --- a/src/script.h +++ b/src/script.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SCRIPT_H_ diff --git a/src/script_lua.c b/src/script_lua.c index fee3efc98..47fb59683 100644 --- a/src/script_lua.c +++ b/src/script_lua.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "script_lua.h" diff --git a/src/script_lua.h b/src/script_lua.h index 75cb2d582..14abe0d0f 100644 --- a/src/script_lua.h +++ b/src/script_lua.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SCRIPT_LUA_H_ diff --git a/src/sds.c b/src/sds.c index 97c2d7f79..7f1429c46 100644 --- a/src/sds.c +++ b/src/sds.c @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/src/sds.h b/src/sds.h index b20393bc0..c4cbf6bf5 100644 --- a/src/sds.h +++ b/src/sds.h @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SDS_H diff --git a/src/sdsalloc.h b/src/sdsalloc.h index 447cfbf4b..5a53d4de8 100644 --- a/src/sdsalloc.h +++ b/src/sdsalloc.h @@ -3,8 +3,9 @@ * Copyright (c) 2006-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* SDS allocator selection. diff --git a/src/sentinel.c b/src/sentinel.c index 1d6c5659d..bf749e9b4 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/server.c b/src/server.c index e799118ec..364227bd6 100644 --- a/src/server.c +++ b/src/server.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/server.h b/src/server.h index b2e9e9f3b..1fb999c7a 100644 --- a/src/server.h +++ b/src/server.h @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/slowlog.c b/src/slowlog.c index 01a248b48..eaf88cc33 100644 --- a/src/slowlog.c +++ b/src/slowlog.c @@ -13,8 +13,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ diff --git a/src/slowlog.h b/src/slowlog.h index c22f312dc..2e284201c 100644 --- a/src/slowlog.h +++ b/src/slowlog.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SLOWLOG_H__ diff --git a/src/socket.c b/src/socket.c index fd6335251..241a54108 100644 --- a/src/socket.c +++ b/src/socket.c @@ -2,8 +2,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/solarisfixes.h b/src/solarisfixes.h index 1141fba32..1e757490f 100644 --- a/src/solarisfixes.h +++ b/src/solarisfixes.h @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #if defined(__sun) diff --git a/src/sort.c b/src/sort.c index 203a08729..1aed59777 100644 --- a/src/sort.c +++ b/src/sort.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fast_float_strtod.h" diff --git a/src/sparkline.c b/src/sparkline.c index 65a0bf910..133701637 100644 --- a/src/sparkline.c +++ b/src/sparkline.c @@ -8,8 +8,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/sparkline.h b/src/sparkline.h index e27a8b859..7769fdb85 100644 --- a/src/sparkline.h +++ b/src/sparkline.h @@ -5,8 +5,9 @@ * Copyright (c) 2011-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SPARKLINE_H diff --git a/src/syncio.c b/src/syncio.c index 721989878..fc1f553b8 100644 --- a/src/syncio.c +++ b/src/syncio.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/syscheck.c b/src/syscheck.c index 4659c3d5c..1251c1d72 100644 --- a/src/syscheck.c +++ b/src/syscheck.c @@ -2,8 +2,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" #include "config.h" diff --git a/src/syscheck.h b/src/syscheck.h index 46933cd61..6f324d151 100644 --- a/src/syscheck.h +++ b/src/syscheck.h @@ -2,8 +2,9 @@ * Copyright (c) 2022-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __SYSCHECK_H diff --git a/src/t_hash.c b/src/t_hash.c index 718dc6918..b7d899368 100644 --- a/src/t_hash.c +++ b/src/t_hash.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/t_list.c b/src/t_list.c index 8d990ded7..c6fb1e76b 100644 --- a/src/t_list.c +++ b/src/t_list.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/t_set.c b/src/t_set.c index 37055275c..d91edcd1e 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -5,8 +5,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/t_stream.c b/src/t_stream.c index 18a066aec..dae1ce372 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -2,8 +2,9 @@ * Copyright (c) 2017-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/t_string.c b/src/t_string.c index 67b362d1f..fe1058982 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/t_zset.c b/src/t_zset.c index f0172b1bb..c415fdb3c 100644 --- a/src/t_zset.c +++ b/src/t_zset.c @@ -6,8 +6,9 @@ * Copyright (c) 2024-present, Valkey contributors. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). * * Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. */ diff --git a/src/testhelp.h b/src/testhelp.h index 3304ccfee..aeae372dd 100644 --- a/src/testhelp.h +++ b/src/testhelp.h @@ -11,8 +11,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __TESTHELP_H diff --git a/src/threads_mngr.c b/src/threads_mngr.c index 09e7d64ad..606f39c2f 100644 --- a/src/threads_mngr.c +++ b/src/threads_mngr.c @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "threads_mngr.h" diff --git a/src/threads_mngr.h b/src/threads_mngr.h index 009adfb5a..9c585c0bd 100644 --- a/src/threads_mngr.h +++ b/src/threads_mngr.h @@ -2,8 +2,9 @@ * Copyright (c) 2021-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #pragma once diff --git a/src/timeout.c b/src/timeout.c index c5ad34037..01848ceec 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/tls.c b/src/tls.c index 42d3fb5cf..65526c04f 100644 --- a/src/tls.c +++ b/src/tls.c @@ -2,8 +2,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #define REDISMODULE_CORE_MODULE /* A module that's part of the redis core, uses server.h too. */ diff --git a/src/tracking.c b/src/tracking.c index 5eec3e1d1..a50b51232 100644 --- a/src/tracking.c +++ b/src/tracking.c @@ -3,8 +3,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "server.h" diff --git a/src/util.h b/src/util.h index 9745fe282..cbc63ea6c 100644 --- a/src/util.h +++ b/src/util.h @@ -2,8 +2,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __REDIS_UTIL_H diff --git a/src/zipmap.c b/src/zipmap.c index a04919ace..51c64ca81 100644 --- a/src/zipmap.c +++ b/src/zipmap.c @@ -15,8 +15,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* Memory layout of a zipmap, for the map "foo" => "bar", "hello" => "world": diff --git a/src/zipmap.h b/src/zipmap.h index e6127484c..a3e7aea34 100644 --- a/src/zipmap.h +++ b/src/zipmap.h @@ -7,8 +7,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef _ZIPMAP_H diff --git a/src/zmalloc.c b/src/zmalloc.c index 7fabbfde9..b2f57184f 100644 --- a/src/zmalloc.c +++ b/src/zmalloc.c @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "fmacros.h" diff --git a/src/zmalloc.h b/src/zmalloc.h index e8100203e..bbb74a0de 100644 --- a/src/zmalloc.h +++ b/src/zmalloc.h @@ -3,8 +3,9 @@ * Copyright (c) 2009-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #ifndef __ZMALLOC_H diff --git a/tests/cluster/cluster.tcl b/tests/cluster/cluster.tcl index 4ce17a69e..66b7202d6 100644 --- a/tests/cluster/cluster.tcl +++ b/tests/cluster/cluster.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # Track cluster configuration as created by create_cluster below set ::cluster_master_nodes 0 diff --git a/tests/cluster/run.tcl b/tests/cluster/run.tcl index 52aab977e..1deb9e223 100644 --- a/tests/cluster/run.tcl +++ b/tests/cluster/run.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). cd tests/cluster source cluster.tcl diff --git a/tests/helpers/gen_write_load.tcl b/tests/helpers/gen_write_load.tcl index 666750322..8b12d4fd2 100644 --- a/tests/helpers/gen_write_load.tcl +++ b/tests/helpers/gen_write_load.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/instances.tcl b/tests/instances.tcl index 841b872e3..7406f14c1 100644 --- a/tests/instances.tcl +++ b/tests/instances.tcl @@ -6,8 +6,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). package require Tcl 8.5 diff --git a/tests/integration/replication-buffer.tcl b/tests/integration/replication-buffer.tcl index 43a6a757b..616cde0e8 100644 --- a/tests/integration/replication-buffer.tcl +++ b/tests/integration/replication-buffer.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/integration/replication-psync.tcl b/tests/integration/replication-psync.tcl index 3ffa2db93..824ddef4d 100644 --- a/tests/integration/replication-psync.tcl +++ b/tests/integration/replication-psync.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/integration/replication-rdbchannel.tcl b/tests/integration/replication-rdbchannel.tcl index 0b3750345..52637a4af 100644 --- a/tests/integration/replication-rdbchannel.tcl +++ b/tests/integration/replication-rdbchannel.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/integration/replication.tcl b/tests/integration/replication.tcl index 9cab49642..da7983cb7 100644 --- a/tests/integration/replication.tcl +++ b/tests/integration/replication.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/modules/basics.c b/tests/modules/basics.c index 4e8bfba90..ee57f5cc1 100644 --- a/tests/modules/basics.c +++ b/tests/modules/basics.c @@ -5,8 +5,9 @@ * Copyright (c) 2016-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "redismodule.h" diff --git a/tests/modules/hooks.c b/tests/modules/hooks.c index c7e695ac2..59c849276 100644 --- a/tests/modules/hooks.c +++ b/tests/modules/hooks.c @@ -5,8 +5,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "redismodule.h" diff --git a/tests/modules/keyspace_events.c b/tests/modules/keyspace_events.c index a1456ccbc..e8dc1be4a 100644 --- a/tests/modules/keyspace_events.c +++ b/tests/modules/keyspace_events.c @@ -5,8 +5,9 @@ * Copyright (c) 2020-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #define _BSD_SOURCE diff --git a/tests/modules/postnotifications.c b/tests/modules/postnotifications.c index e701dda86..96fb85918 100644 --- a/tests/modules/postnotifications.c +++ b/tests/modules/postnotifications.c @@ -5,8 +5,9 @@ * Copyright (c) 2020-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ /* This module allow to verify 'RedisModule_AddPostNotificationJob' by registering to 3 diff --git a/tests/modules/propagate.c b/tests/modules/propagate.c index 7e737589e..689d6881e 100644 --- a/tests/modules/propagate.c +++ b/tests/modules/propagate.c @@ -12,8 +12,9 @@ * Copyright (c) 2019-Present, Redis Ltd. * All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include "redismodule.h" diff --git a/tests/sentinel/run.tcl b/tests/sentinel/run.tcl index 2c5089502..4f2a65699 100644 --- a/tests/sentinel/run.tcl +++ b/tests/sentinel/run.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). cd tests/sentinel source ../instances.tcl diff --git a/tests/support/cluster.tcl b/tests/support/cluster.tcl index cbe11d7c5..3a666844b 100644 --- a/tests/support/cluster.tcl +++ b/tests/support/cluster.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Example usage: # diff --git a/tests/support/redis.tcl b/tests/support/redis.tcl index 275c726ef..6c8585587 100644 --- a/tests/support/redis.tcl +++ b/tests/support/redis.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Example usage: # diff --git a/tests/support/response_transformers.tcl b/tests/support/response_transformers.tcl index b2ff44238..99c1ebb65 100644 --- a/tests/support/response_transformers.tcl +++ b/tests/support/response_transformers.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2009-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # This file contains a bunch of commands whose purpose is to transform # a RESP3 response to RESP2 diff --git a/tests/support/util.tcl b/tests/support/util.tcl index 150c15644..3e4b0a896 100644 --- a/tests/support/util.tcl +++ b/tests/support/util.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl index a5e5859a4..05197b026 100644 --- a/tests/test_helper.tcl +++ b/tests/test_helper.tcl @@ -3,8 +3,9 @@ # Copyright (C) 2014-Present, Redis Ltd. # All Rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). package require Tcl 8.5 diff --git a/tests/unit/auth.tcl b/tests/unit/auth.tcl index 8be729824..89fc4e06e 100644 --- a/tests/unit/auth.tcl +++ b/tests/unit/auth.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/unit/cluster/hostnames.tcl b/tests/unit/cluster/hostnames.tcl index 1b4bd9dc7..223622864 100644 --- a/tests/unit/cluster/hostnames.tcl +++ b/tests/unit/cluster/hostnames.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/unit/cluster/sharded-pubsub.tcl b/tests/unit/cluster/sharded-pubsub.tcl index 66a1ca2fb..0347ac653 100644 --- a/tests/unit/cluster/sharded-pubsub.tcl +++ b/tests/unit/cluster/sharded-pubsub.tcl @@ -2,8 +2,9 @@ # Copyright (c) 2009-Present, Redis Ltd. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/unit/info.tcl b/tests/unit/info.tcl index c18c76c88..76927bc72 100644 --- a/tests/unit/info.tcl +++ b/tests/unit/info.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/unit/memefficiency.tcl b/tests/unit/memefficiency.tcl index d4ec6a946..3e4793a73 100644 --- a/tests/unit/memefficiency.tcl +++ b/tests/unit/memefficiency.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/tests/unit/querybuf.tcl b/tests/unit/querybuf.tcl index 9dcf986e8..47eb94855 100644 --- a/tests/unit/querybuf.tcl +++ b/tests/unit/querybuf.tcl @@ -5,8 +5,9 @@ # Copyright (c) 2024-present, Valkey contributors. # All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information. # diff --git a/utils/build-static-symbols.tcl b/utils/build-static-symbols.tcl index 7d238a92d..eb0e218b6 100644 --- a/utils/build-static-symbols.tcl +++ b/utils/build-static-symbols.tcl @@ -4,8 +4,9 @@ # # Copyright(C) 2009-Present Redis Ltd. All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). set fd [open redis.c] set symlist {} diff --git a/utils/corrupt_rdb.c b/utils/corrupt_rdb.c index 6d4d127f8..d1a093c2b 100644 --- a/utils/corrupt_rdb.c +++ b/utils/corrupt_rdb.c @@ -3,8 +3,9 @@ * * Copyright (C) 2016-Present Redis Ltd. All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include diff --git a/utils/hyperloglog/hll-err.rb b/utils/hyperloglog/hll-err.rb index fa57547b5..1278397ac 100644 --- a/utils/hyperloglog/hll-err.rb +++ b/utils/hyperloglog/hll-err.rb @@ -1,7 +1,8 @@ # hll-err.rb - Copyright (C) 2014-Present Redis Ltd. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Check error of HyperLogLog Redis implementation for different set sizes. diff --git a/utils/hyperloglog/hll-gnuplot-graph.rb b/utils/hyperloglog/hll-gnuplot-graph.rb index c85158d98..1e48e6c44 100644 --- a/utils/hyperloglog/hll-gnuplot-graph.rb +++ b/utils/hyperloglog/hll-gnuplot-graph.rb @@ -1,7 +1,8 @@ # hll-err.rb - Copyright (C) 2014-Present Redis Ltd. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # This program is suited to output average and maximum errors of # the Redis HyperLogLog implementation in a format suitable to print diff --git a/utils/redis-copy.rb b/utils/redis-copy.rb index bcb66a1fb..816b1e4c0 100644 --- a/utils/redis-copy.rb +++ b/utils/redis-copy.rb @@ -1,7 +1,8 @@ # redis-copy.rb - Copyright (C) 2009-Present Redis Ltd. All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Copy the whole dataset from one Redis instance to another one # diff --git a/utils/redis-sha1.rb b/utils/redis-sha1.rb index 25d3e3137..dc87c775f 100644 --- a/utils/redis-sha1.rb +++ b/utils/redis-sha1.rb @@ -1,7 +1,8 @@ # redis-sha1.rb - Copyright (C) 2009-Present Redis Ltd. All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). # # Performs the SHA1 sum of the whole dataset. # This is useful to spot bugs in persistence related code and to make sure diff --git a/utils/speed-regression.tcl b/utils/speed-regression.tcl index d909934bb..62b5ec8dd 100755 --- a/utils/speed-regression.tcl +++ b/utils/speed-regression.tcl @@ -1,8 +1,9 @@ #!/usr/bin/env tclsh8.5 # Copyright (C) 2011-Present Redis Ltd. All rights reserved. # -# Licensed under your choice of the Redis Source Available License 2.0 -# (RSALv2) or the Server Side Public License v1 (SSPLv1). +# Licensed under your choice of (a) the Redis Source Available License 2.0 +# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the +# GNU Affero General Public License v3 (AGPLv3). source ../tests/support/redis.tcl set ::port 12123 diff --git a/utils/tracking_collisions.c b/utils/tracking_collisions.c index 020d8eefc..42730927c 100644 --- a/utils/tracking_collisions.c +++ b/utils/tracking_collisions.c @@ -19,8 +19,9 @@ * * Copyright (C) 2019-Present Redis Ltd. All rights reserved. * - * Licensed under your choice of the Redis Source Available License 2.0 - * (RSALv2) or the Server Side Public License v1 (SSPLv1). + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). */ #include From 113752ae1b46a7a8776d99ff7135cfec7df5c08a Mon Sep 17 00:00:00 2001 From: YaacovHazan <31382944+YaacovHazan@users.noreply.github.com> Date: Fri, 2 May 2025 11:58:55 +0300 Subject: [PATCH 3/5] Update Security Policy (#14001) --- SECURITY.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 7aad54a30..ea132051f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -9,13 +9,14 @@ performance and security. We generally backport security issues to a single previous major version, unless this is not possible or feasible with a reasonable effort. -| Version | Supported | -| ------- | ------------------ | -| 7.4.x | :white_check_mark: | -| 7.2.x | :white_check_mark: | -| < 7.2.x | :x: | -| 6.2.x | :white_check_mark: | -| < 6.2.x | :x: | +| Version | Supported | +|---------|-------------------------------------------------------------| +| 8.0.x | :white_check_mark: | +| 7.4.x | :white_check_mark: | +| 7.2.x | :white_check_mark: | +| < 7.2.x | :x: | +| 6.2.x | :white_check_mark: Support may be removed after end of 2025 | +| < 6.2.x | :x: | ## Reporting a Vulnerability From 6ec78b47427e3d5b7dcda065f7d405bbbb47a5a4 Mon Sep 17 00:00:00 2001 From: DvirDukhan Date: Fri, 2 May 2025 11:59:19 +0300 Subject: [PATCH 4/5] Update Makefile - RQE 8.0.0 (#14002) --- modules/redisearch/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/redisearch/Makefile b/modules/redisearch/Makefile index 91ee61cdb..6c24a07d6 100644 --- a/modules/redisearch/Makefile +++ b/modules/redisearch/Makefile @@ -1,5 +1,5 @@ SRC_DIR = src -MODULE_VERSION = v7.99.91 +MODULE_VERSION = v8.0.0 MODULE_REPO = https://github.com/redisearch/redisearch TARGET_MODULE = $(SRC_DIR)/bin/$(FULL_VARIANT)/search-community/redisearch.so From 4ec6d54426a7523435a650b043c1bb8853c52fd7 Mon Sep 17 00:00:00 2001 From: YaacovHazan Date: Fri, 2 May 2025 12:09:49 +0300 Subject: [PATCH 5/5] Redis 8.0 GA --- 00-RELEASENOTES | 78 +++++++++++++++++++++++++++++++++++++++++++++++-- src/version.h | 4 +-- 2 files changed, 78 insertions(+), 4 deletions(-) diff --git a/00-RELEASENOTES b/00-RELEASENOTES index 11c8b4e5f..b6a90c5af 100644 --- a/00-RELEASENOTES +++ b/00-RELEASENOTES @@ -1,5 +1,79 @@ -Redis Community Edition 8.0 release notes -========================================= +Redis Open Source 8.0 release notes +=================================== + +======================================================= +8.0 GA (v8.0.0) Released Fri 2 May 2025 12:00:00 IST +======================================================= + +This is the General Availability release of Redis Open Source 8.0. + +Redis 8.0 deprecates previous Redis and Redis Stack versions. + +Stand alone RediSearch, RedisJSON, RedisTimeSeries, and RedisBloom are no longer needed as they are now part of Redis. + + +### Major changes compared to 7.4.2 + +- Name change: Redis Community Edition is now Redis Open Source +- License change: licensed under your choice of + - (a) the Redis Source Available License 2.0 (RSALv2); or + - (b) the Server Side Public License v1 (SSPLv1); or + - (c) the GNU Affero General Public License (AGPLv3) +- Redis Query engine and 8 new data structures are now an integral part of Redis 8 + - (1) Redis Query Engine, which now supports both horizontal and vertical scaling for search, query and vector workloads + - (2) JSON - a queryable JSON document + - (3) Time series + - (4-8) Five probabilistic data structures: Bloom filter, Cuckoo filter, Count-min sketch, Top-k, and t-digest + - (9) Vector set [beta] - a data structure designed for Vector Similarity Search, inspired by Sorted set + - These nine components are included in all binary distributions + + - See instructions in the README.md file on how to build from source with all these components + - New configuration file: redis-full.conf - loads Redis with all these components, + and contains new configuration parameters for Redis Query engine and the new data structures + - New ACL categories: @search, @json, @timeseries, @bloom, @cuckoo, @cms, @topk, @tdigest + - Commands are also included in the existing ACL categories (@read, @write, etc.) + +- More than 30 performance and resource utilization improvements +- A new I/O threading implementation which enables throughput increase on multi-core environments + (set with `io-threads` configuration parameter) +- An improved replication mechanism which is more performant and robust +- New hash commands - `HGETDEL`, `HGETEX`, `HSETEX` + +For more details, see the release notes of 8.0-M01, 8.0-M02, 8.0-M03,8.0-M04, and 8.0-RC1 + +### Binary distributions + +- Alpine and Debian Docker images - https://hub.docker.com/_/redis +- Install using snap - see https://github.com/redis/redis-snap +- Install using brew - see https://github.com/redis/homebrew-redis +- Install using RPM - see https://github.com/redis/redis-rpm +- Install using Debian APT - see https://github.com/redis/redis-debian + +### Operating systems we test Redis 8.0 on + +- Ubuntu 20.04 (Focal Fossa), 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat) +- Rocky Linux 8.10, 9.5 +- AlmaLinux 8.10, 9.5 +- Debian 11 (Bullseye), 12 (Bookworm) +- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia) + +### Supported upgrade paths (by replication or persistence) + +- From previous Redis versions, without modules +- From previous Redis versions with modules (RediSearch, RedisJSON, RedisTimeSeries, RedisBloom) +- From Redis Stack 7.2 or 7.4 + +### Security fixes (compared to 8.0-RC1) + + +* (CVE-2025-21605) An unauthenticated client can cause an unlimited growth of output buffers + +### Bug fixes (compared to 8.0-RC1) + +- #13966, #13932 `CLUSTER SLOTS` - TLS port update not reflected in CLUSTER SLOTS +- #13958 `XTRIM`, `XADD` - incorrect lag due to trimming stream +- #13931 `HGETEX` - wrong order of keyspace notifications + ========================================================== 8.0-RC1 (v7.9.240) Released Mon 7 Apr 2025 10:00:00 IST diff --git a/src/version.h b/src/version.h index 332529d09..416df6daf 100644 --- a/src/version.h +++ b/src/version.h @@ -1,2 +1,2 @@ -#define REDIS_VERSION "7.9.240" -#define REDIS_VERSION_NUM 0x000709f0 +#define REDIS_VERSION "8.0.0" +#define REDIS_VERSION_NUM 0x00080000