前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何部署Linux基金会Valkey开源内存数据库平替数据库Redis

如何部署Linux基金会Valkey开源内存数据库平替数据库Redis

作者头像
Tinywan
发布2024-04-28 11:08:35
970
发布2024-04-28 11:08:35
举报
文章被收录于专栏:开源技术小栈开源技术小栈

介绍

Redis Labs 修改 Redis 的开源协议确实是因为它们认为一些大型云服务提供商在没有对项目做出贡献的情况下利用 Redis 赚取利润。Redis Labs 从 Redis 7.4 版本开始,将原先的 BSD 源码使用协议修改为 RSALv2 和 SSPLv1 协议,这一变化意味着 Redis 在 OSI(开放源代码促进会)定义下不再被视为“开源”项目。

Redis Labs 首席执行官 Ofer Bengal 曾表示,云计算公司利用其垄断力量采用开源项目而不贡献。同时 Redis Labs 首席营销官 Manish Gupta 指出,新的许可证 RSAL 旨在保护 Redis Labs 开发的模块,如 RedisSearch、RedisGraph 等,这些模块将不再是开源软件,而是源码可用(source available)级别的软件。

Linux 基金会宣布创建 Valkey 7.2.5 的版本,这可能是对 Redis Labs 修改开源协议行为的回应。Valkey 7.2.5 是基于 Redis 7.2.4 版本 fork 出来的,旨在提供一个不受 Redis Labs 新许可证影响的 Redis 实现。

开源社区对于许可证的修改可能会有不同的反应,一些开发者和公司可能会支持这种改变,认为这有助于保护开源项目的可持续发展,而另一些人可能会对此持批评态度,认为这限制了开源精神的自由和开放性。无论如何,Redis Labs 的这一决策显然在开源社区引起了广泛的讨论和关注。

更多了解:【Linux基金会宣布推出Valkey作为Redis的开源替代方案】

使用

下载与解压
代码语言:javascript
复制
wget https://github.com/valkey-io/valkey/archive/refs/tags/7.2.5.tar.gz

tar -zxvf 7.2.5.tar.gz
编译
代码语言:javascript
复制
cd valkey-7.2.5

make
安装

这通常需要几分钟才能完成。测试完成后,输入以下命令将二进制文件安装到系统上:

代码语言:javascript
复制
sudo make install

输出以下提示表示安装成功啦!

代码语言:javascript
复制
Hint: It's a good idea to run 'make test' ;)

    INSTALL valkey-server
    INSTALL valkey-benchmark
    INSTALL valkey-cli
    INSTALL SYMLINK redis-server -> valkey-server  
    INSTALL SYMLINK redis-cli -> valkey-cli  
    INSTALL SYMLINK redis-benchmark -> valkey-benchmark  
    INSTALL SYMLINK redis-check-rdb -> valkey-check-rdb  
    INSTALL SYMLINK redis-check-aof -> valkey-check-aof  
    INSTALL SYMLINK redis-sentinel -> valkey-sentinel  
启动
代码语言:javascript
复制
/usr/local/bin/valkey-server /etc/valkey/valkey.conf

发现本地端口6379被原有Redis占用,这里使用其他端口6378。再次启动就正常啦

服务

为了更好地控制Valkey的管理方式,您可以创建一个systemd单元文件,使其可以作为systemd服务。这样做的好处是可以服务器启动时启动Valkey。

创建并打开/etc/systemd/system/valkey.service文件:

代码语言:javascript
复制
[Unit]
Description=Valkey a new project to resume development on the formerly open-source Redis project
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/valkey-server /etc/valkey/valkey.conf
ExecStop=/usr/local/bin/valkey-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

输入以下命令启动systemd服务

代码语言:javascript
复制
sudo systemctl start valkey.service

运行以下命令检查服务有没有错误

代码语言:javascript
复制
sudo systemctl status valkey.service

输出以下内容表示服务启动成功

代码语言:javascript
复制
● valkey.service - Valkey a new project to resume development on the formerly open-source Redis project
   Loaded: loaded (/etc/systemd/system/valkey.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2024-04-23 23:21:29 CST; 13min ago
 Main PID: 26924 (valkey-server)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/valkey.service
           └─26924 /usr/local/bin/valkey-server 127.0.0.1:6378

Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:C 23 Apr 2024 23:21:29.735 * Valkey version=7.2.5, bits=64, commit=000
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:C 23 Apr 2024 23:21:29.735 * Configuration loaded
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.736 # You requested maxclients of 10000 requiri
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.736 # Server can't set maximum open files to 10
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.737 # Current maximum open files is 4096. maxcl
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.737 * monotonic clock: POSIX clock_gettime
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.737 # Failed to write PID file: Permission deni
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.738 * Running mode=standalone, port=6378.
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.741 * Server initialized
Apr 23 23:21:29 wt-test-develop valkey-server[26924]: 26924:M 23 Apr 2024 23:21:29.742 * Ready to accept connections tcp

客户端

要测试您的服务是否正常运行,请使用命令行客户端连接到Valkey服务器。

代码语言:javascript
复制
$ valkey-cli -p 6378

127.0.0.1:6378> set name "Tinywan"
OK
127.0.0.1:6378> get name
"Tinywan"
127.0.0.1:6378> 

由于客户端跟Redis完全一样,端口和提示信息也一样,所以可以直接使用Redis客户端连接

代码语言:javascript
复制
$ redis-cli -p 6378

127.0.0.1:6378> keys *
1) "name"
127.0.0.1:6378> get name
"Tinywan"
127.0.0.1:6378> 

性能测试

在 Redis 安装完毕后会自动安装一个 redis-benchmark 测试工具,其是一个压力测试工具,用于测试 Redis 的性能。同理在安装完成Valkey后也会生成一个 valkey-benchmark 测试工具。

valkey-benchmark
代码语言:javascript
复制
valkey-benchmark -h 127.0.0.1 -p 6378 -n 10000 -c 20 -q
PING_INLINE: 45248.87 requests per second, p50=0.143 msec         
PING_MBULK: 31545.74 requests per second, p50=0.359 msec                   
SET: 28409.09 requests per second, p50=0.607 msec                   
GET: 31645.57 requests per second, p50=0.343 msec                   
INCR: 29940.12 requests per second, p50=0.375 msec                   
LPUSH: 30487.80 requests per second, p50=0.439 msec                   
RPUSH: 30864.20 requests per second, p50=0.407 msec                   
LPOP: 33670.04 requests per second, p50=0.167 msec                  
RPOP: 24154.59 requests per second, p50=0.479 msec                   
SADD: 31250.00 requests per second, p50=0.351 msec                   
HSET: 47169.81 requests per second, p50=0.143 msec                  
SPOP: 42918.46 requests per second, p50=0.151 msec                  
ZADD: 30959.75 requests per second, p50=0.287 msec                  
ZPOPMIN: 48076.92 requests per second, p50=0.143 msec                 
LPUSH (needed to benchmark LRANGE): 49019.61 requests per second, p50=0.143 msec                  
LRANGE_100 (first 100 elements): 15600.62 requests per second, p50=0.551 msec                   
LRANGE_300 (first 300 elements): 6968.64 requests per second, p50=1.351 msec                  
LRANGE_500 (first 500 elements): 4466.28 requests per second, p50=2.031 msec                  
LRANGE_600 (first 600 elements): 3821.17 requests per second, p50=2.439 msec                  
MSET (10 keys): 32467.53 requests per second, p50=0.487 msec                   
XADD: 31446.54 requests per second, p50=0.479 msec  
redis-benchmark
代码语言:javascript
复制
redis-benchmark -h 127.0.0.1 -p 6378 -n 10000 -c 20 -q
PING_INLINE: 42735.04 requests per second, p50=0.159 msec          
PING_MBULK: 46511.63 requests per second, p50=0.143 msec                  
SET: 34843.21 requests per second, p50=0.151 msec                  
GET: 49019.61 requests per second, p50=0.143 msec                  
INCR: 46511.63 requests per second, p50=0.143 msec                   
LPUSH: 44052.86 requests per second, p50=0.143 msec                   
RPUSH: 33222.59 requests per second, p50=0.287 msec                   
LPOP: 23419.21 requests per second, p50=0.655 msec                   
RPOP: 43668.12 requests per second, p50=0.143 msec                   
SADD: 35087.72 requests per second, p50=0.159 msec                   
HSET: 32786.88 requests per second, p50=0.351 msec                   
SPOP: 26954.18 requests per second, p50=0.623 msec                   
ZADD: 23752.97 requests per second, p50=0.615 msec                   
ZPOPMIN: 23696.68 requests per second, p50=0.615 msec                   
LPUSH (needed to benchmark LRANGE): 31347.96 requests per second, p50=0.391 msec                   
LRANGE_100 (first 100 elements): 16051.36 requests per second, p50=0.959 msec                   
LRANGE_300 (first 300 elements): 7082.15 requests per second, p50=1.375 msec                  
LRANGE_500 (first 500 elements): 4679.46 requests per second, p50=1.991 msec                  
LRANGE_600 (first 600 elements): 4004.81 requests per second, p50=2.295 msec                  
MSET (10 keys): 27247.96 requests per second, p50=0.519 msec                   
XADD: 24449.88 requests per second, p50=0.455 msec                   

简单比较

数据库

PING

SET

GET

SPOP

ZPOPMIN

XADD

Redis

42735.04

34843.21

49019.61

26954.18

23696.68

24449.88

Valkey

45248.87

28409.09

31645.57

42918.46

48076.92

23752.97

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-24,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 使用
    • 下载与解压
      • 编译
        • 安装
          • 启动
          • 服务
          • 客户端
          • 性能测试
            • valkey-benchmark
              • redis-benchmark
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com