본문 바로가기

Developer/Infra

Valkey - Redis를 대체하는 인메모리 데이터 저장소

Valkey Logo

개요

 

Valkey

Welcome! For the inaugural blog post on valkey.io, I’d like to recap the story so far, what to look forward...

valkey.io

 

3월 28일 리눅스 재단에서 Valkey를 공개했다.

Valkey는 인메모리(in-memory) 데이터저장소로 NoSQL 데이터베이스, 캐시, 메세지 큐 등 기존에 Redis가 하던 역할을 대체하는 오픈소스 프로젝트이다. 이전에도 비슷한 사례가 있긴한데 Redis는 또 왜 그런가 찾아봤는데... 🤔

 

 

Linux Foundation Launches Open Source Valkey Community

Community maintainers, contributors, and users will continue collaborative development of an open source, in-memory data store under the new Valkey name.

www.linuxfoundation.org

 

Valkey

Valkey는 최근 Redis Inc.가 Redis 7.4 버전부터 BSD 라이선스에서 RSALv2와 SSPLv1의 듀얼 라이선스로 변경하였고 이에 대응하기 등장했다. Redis 7.4 버전부터는 듀얼 라이선스로 변경되었는데 사용자는 목적에 따라 RSALv2 또는 SSPLv1 라이선스 중 하나를 선택해 적용할 수 있다.

 

즉 그동안 오픈소스로 관리되었고 누구나 무료로 사용할 수 있던 Redis가 7.4 버전부터 라이선스의 변화로 이제는 조건부로 무료로 사용하거나 돈을 지불하고 상업 라이센스을 획득 후 사용할 수 있게된 것이다. 다만 위에서 언급했듯이 대부분은 큰 영향이 없으나 기업이나 CSP 등은 더이상 무료로 사용할 수가 없게 된 것이다. 이에 커뮤니티에서는 BSD 라이선스를 사용하는 마지막 Redis 버전을 포킹하여 Valkey 프로젝트를 만들어 이전과 동일한 라이선스로 사용하며 기존에 Redis에서 기여했던 많은 사람들이 Valkey로 옮겨가 기존과 동일하게 기여하기 시작했다.

 

P.S MongoDB, Elasticsearch에서도 Redis와 유사한 사례가 있음, 결국엔 다 비슷한 이유로 이렇게 되는 것 같다.

 

Redis 7.4 버전부터 적용되는 듀얼 라이센스

RSALv2 - Redis Source Available License 2.0

SSPLv1 - Server Side Public License 1

 

Under the new license, cloud service providers hosting Redis offerings will no longer be permitted to use the source code of Redis free of charge.

 

 

Redis Adopts Dual Source-Available Licensing - Redis

Beginning today, all future versions of Redis will be released with source-available licenses. Read more on the blog.

redis.io

 

Redis Licensing Overview - Redis

Learn about the Redis Source Available License 2.0 (RSALv2), SSPL, and the open source 3-Clause-BSD license.

redis.io

 

특징

지난 주인 4월 16일 Valkey 최초의 Stable 릴리즈인 7.2.5 버전이 출시되었다.

  • Valkey는 Redis 7.2.4 버전을 포킹하여 개발
  • 모든 API가 완벽하게 하위 호환
  • Berkeley Software Distribution (BSD) 3-clause license 라이선스 채택
  • Redis에 기여했던 사람들과 AWS, Google Cloud, Oracle, Ericsson, Snap 등 주요 CSP과 큰 기업들이 참여
  • Redis와 동일한 기능 제공 (Clustering, Persistence, ACL 등)
 

Releases · valkey-io/valkey

A new project to resume development on the formerly open-source Redis project. We're calling it Valkey, since it's a twist on the key-value datastore. - valkey-io/valkey

github.com

 

사용법

Redis를 포킹하였고 릴리즈에서도 완벽하게 하위 호환된다고 언급한 만큼 기존에 Redis와 동일하게 사용하면 되고 Redis를 사용하던 애플리케이션에서도 이미 작성된 코드를 변경할 필요가 없다. 포트도 동일하게 tcp/6379를 사용하고 API도 동일하다.

 

Docker를 이용해 구축

$ docker run -it --rm --name valkey -p 6379:6379 valkey/valkey:7.2.5

1:C 22 Apr 2024 14:35:49.679 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:C 22 Apr 2024 14:35:49.680 * oO0OoO0OoO0Oo Valkey is starting oO0OoO0OoO0Oo
1:C 22 Apr 2024 14:35:49.680 * Valkey version=7.2.5, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 22 Apr 2024 14:35:49.680 # Warning: no config file specified, using the default config. In order to specify a config file use valkey-server /path/to/valkey.conf
1:M 22 Apr 2024 14:35:49.680 * monotonic clock: POSIX clock_gettime
                .+^+.
            .+#########+.
        .+########+########+.           Valkey 7.2.5 (00000000/0) 64 bit
    .+########+'     '+########+.
 .########+'     .+.     '+########.    Running in standalone mode
 |####+'     .+#######+.     '+####|    Port: 6379
 |###|   .+###############+.   |###|    PID: 1
 |###|   |#####*'' ''*#####|   |###|
 |###|   |####'  .-.  '####|   |###|
 |###|   |###(  (@@@)  )###|   |###|          https://valkey.io
 |###|   |####.  '-'  .####|   |###|
 |###|   |#####*.   .*#####|   |###|
 |###|   '+#####|   |#####+'   |###|
 |####+.     +##|   |#+'     .+####|
 '#######+   |##|        .+########'
    '+###|   |##|    .+########+'
        '|   |####+########+'
             +#########+'
                '+v+'

1:M 22 Apr 2024 14:35:49.681 * Server initialized
1:M 22 Apr 2024 14:35:49.681 * Ready to accept connections tcp

 

파이썬 테스트

import redis

client = redis.Redis('127.0.0.1', 6379)
client.ping()  # 응답: True
client.keys()  # 응답: []

client.set('hello', 'world!')  # 응답: True
client.get('hello')  # 응답: world!

 

Tl;dr

  1. Redis가 7.4 버전부터 듀얼 라이선스로 변경하고 CSPs(AWS, GCP, Oracle 등)는 더 이상 무료로 Redis를 사용할 수 없게 됨
  2. 리눅스 재단에서는 Redis 7.2.4 버전을 포킹하여 Valkey 프로젝트 생성 - BSD  3-clause 라이선스
  3. Valkey의 첫 안정화(Stable) 버전인 7.2.5가 4월 16일 릴리즈 됨
  4. 앞으로 어떻게 될지는 지켜봐야 할 듯...