Redis 开源协议变更?可用这一国产中间件平替

Redis 开源协议变更?可用这一国产中间件平替

ShawnYan Lv.6

Redis 是一款非常流行的键值数据库,目前在 DB-Engines 流行度排行榜排名第 6,在 Key-value stores 分榜列首位。

redis.jpg

前段时日,Redis Labs 对 Redis 开源协议的变更,从传统的 BSD 许可证向 RSALv2 和 SSPLv1 转变,引入 Commons Clause 补充条款,针对商业软件服务提供商便提出了额外限制。变更引发了社区对开源精神的广泛讨论。

BSD许可证非常宽松,允许用户任意使用及商业化。而RSALv2和SSPLv1协议则对使用和商业化提出了更严格的要求,这可能会限制Redis的开源精神和广泛应用。Redis Labs 的 CEO 指出,这一变化旨在防止云服务提供商免费使用 Redis 代码,同时促进Redis社区的可持续发展和创新。

但,可真如此?非也,非也。

feiye.jpg

Redis 的许可证在变更的同时,也为其他兼容 Redis 的项目提供了新的发展机遇。

东方通 TongRDS

本文将介绍一款可以平滑替代 Redis 的国产中间件,东方通 TongRDS

TongRDS(东方通分布式数据缓存中间件)是一款高性能多并发分布式数据缓存中间件,为企业信息化系统提供数据信息的缓存、分享与同步功能。通过先进的内存分配算法,产品实现了基于内存方式的数据高性能读写、实时稳定数据同步、分布式部署等功能,满足企业分布式与高可用使用场景。TongRDS提供了高度兼容Redis的数据访问接口,并保持优于Redis的读写性能。目前已在政务、金融行业领域多个业务系统中得到应用。

tongrds.png

它具有以下优势:

  • 高性能:

TongRDS采用Java语言纯自研架构,针对内存数据处理进行了优化,因此能够提供高效的数据处理能力。通过先进的内存分配算法高效存储和使用数据,提供比Redis更高的数据访问效率。

  • 稳定性:

它支持共享内存的搭建和弹性伸缩管理,使得业务应用无需考虑内存管理的复杂性,从而提高了系统的稳定性。

  • 安全性:

TongRDS内核完全自研,避免了使用开源Redis可能存在的安全漏洞和接口后门问题,并且提供了国密加密技术,增强了数据的安全性。支持数据传输通道加密和多种安全策略,支持国家加密算法加密,避免数据被非法访问。

  • 兼容性:

TongRDS完全兼容Redis中间件,这使得从Redis迁移到TongRDS的应用迁移成本几乎为零,可以无缝迁移。

  • 灵活性:

TongRDS支持单节点和集群两种部署模式,可以针对不同的业务场景和需求进行灵活部署。

  • 可靠性:

采用并行方式在节点间同步内存数据,混合集群模式和主从模式可以保证数据的完整性和可靠性。

  • 集中管理:

提供统一的管理控制平台,方便用户对系统进行安装、配置、监控和数据管理。

tongrdsweb.png

TongRDS 基础知识

TongRDS 支持的数据结构和操作类型包括但不限于以下几种:

基本数据类型: TongRDS 支持传统的关系型数据结构,如表、行、列等,同时也支持 Redis 所提供的多种数据结构,例如:

  • 字符串(String):用于存储简单的数据,支持添加、删除、获取等操作。
  • 列表(List):支持添加元素、删除元素、获取元素、获取子列表等操作。
  • 集合(Set):是一个无序的字符串集合,其中不允许有重复元素。
  • 哈希(Hash):存储键值对集合,可以进行字段的增加、删除、获取等操作。
  • 有序集合(Sorted Set 或 Zset):类似于 Set,但其中的元素是有序的。

此外,还提供了定制化的类型,如:Integer, Long, IPv4, IPv6, MAC 等。

数据操作命令: TongRDS 提供了丰富的命令和 API 进行数据操作,例如:

  • SET:设置键的值。
  • GET:获取键的值。
  • HSET:在哈希表中设置字段的值。
  • HGET:获取哈希表中字段的值。
  • LPUSH / RPUSH:在列表的左侧或右侧添加元素。
  • SADD:向集合添加元素。
  • ZADD:向有序集合添加元素。

TongRDS 几乎全部兼容 Redis 的命令,但是,有10个左右的命令因为存在安全隐患,功能被RDS禁止。

例如: config setdir 命令可能导致越权操作被禁止;flushall、shutdown、debug segfault等高风险命令被取消。

1
2
3
4
5
6
7
8
9
localhost:6379 > flushdb
localhost:6379 > +OK
localhost:6379 > flushall
localhost:6379 > +OK

localhost:6379 > debug segfault
localhost:6379 > -ERR unknown command `debug`, with args beginning with: `segfault`,
localhost:6379 > debug object name
localhost:6379 > -ERR unknown command `debug`, with args beginning with: `object`,

TongRDS 支持 GEO

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。

这里测试两个 Redis GEO 操作方法:

  • GEOADD 添加地理位置的坐标。
  • GEODIST 计算两个位置之间的距离。

在 TongRDS 中的演示示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
localhost:6379 > GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
localhost:6379 > :0
localhost:6379 > GEODIST Sicily Palermo Catania
localhost:6379 > $11
localhost:6379 > 166274.1539
localhost:6379 > GEODIST Sicily Palermo Catania km
localhost:6379 > $8
localhost:6379 > 166.2742
localhost:6379 > GEODIST Sicily Palermo Catania mi
localhost:6379 > $8
localhost:6379 > 103.3180
localhost:6379 > GEODIST Sicily Foo Bar
localhost:6379 > $-1

在 Redis 中的演示示例:

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
127.0.0.1:6379> GEODIST Sicily Palermo Catania
"166274.1516"
127.0.0.1:6379> GEODIST Sicily Palermo Catania km
"166.2742"
127.0.0.1:6379> GEODIST Sicily Palermo Catania mi
"103.3182"
127.0.0.1:6379> GEODIST Sicily Foo Bar
(nil)

更多内容,请持续关注本专栏,或请参考官方网站:https://www.tongtech.com/pctype/37.html

– END. –

logo.jpg

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

  • Title: Redis 开源协议变更?可用这一国产中间件平替
  • Author: ShawnYan
  • Created at: 2024-05-02 23:00:00
  • Updated at: 2024-05-02 23:00:00
  • Link: https://shawnyan.cn/2024/tong/tongrds-intro/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments