大家好,我是 JiekeXu,江湖人称“强哥”,青学会 MOP 技术社区主席,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、金仓KCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看国产非关系型数据库 Eloqkv 初体验!欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

前 言
数据库国产化是这两年的一个热门话题,各行各业都在进行国产化,甚至各种类型的数据库也要进行国产化,Oracle、MySQL、SQL Server、DB2 等关系型数据库进行国产化毋庸置疑,但之前有位朋友说他们的客户 MongoDB、Redis 等非关系型数据库也要进行国产化,这让我很吃惊。以前也了解过国内做文档的非云的国产数据库有 SequoiaDB 巨杉数据库, Redis 非云环境的替代品有 360 公司开源的Pika 数据库, 而去年底偶然的机会了解到国内有一家叫成章数据的公司也在做这两款数据库的国产化替代方案,并且今年 3 月份宣布开源了其公司的三款产品。
EloqKV 简介
2025年3月6日,数据库初创公司晨章数据发布了基于数据基层创新架构的三款分布式数据库产品,分别是兼容Redis的分布式KV事务数据库EloqKV,兼容MySQL的分布式关系型数据库EloqSQL,以及兼容MongoDB的分布式文档数据库EloqDoc,并宣布产品全面开源。https://github.com/eloqdata
今天主要是先来看看 EloqKV,兼容 Redis 还是比较受欢迎的,也是我感兴趣的。EloqKV 不仅仅是一个内存缓存,它还是一个功能齐全、符合 ACID 的分布式事务数据库。无需单独的 SQL + Redis 设置,告别缓存一致性挑战。EloqKV 可以跨多个存储层智能地管理数据,从而优化性能和成本。热数据保留在内存中以实现闪电般的访问,暖数据移动到 SSD 以实现平衡性能,冷数据持久保存在对象存储中,同时保持无缝访问。这种多层方法大大降低了 TCO(总拥有成本)。
下载 EloqKV
我们通过如下网址下载 EloqKV
https://www.eloqdata.com/download/eloqkv
下载的安装包名称:eloqkv-0.8.12-rhel7-amd64.tar.gz
安装 EloqKV
EloqKV 兼容 RHEl 7、8 和 9,Ubuntu 20.04、22.04 和 24.04,我这里使用以前的 CentOS 7.6 进行安装。成功下载正确的二进制文件后,上传至服务器,将其解压缩到自定义的 /backup/eloqkv目录中。
# cd /backup/eloqkv
# tar -zxvf eloqkv-0.8.12-rhel7-amd64.tar.gz
# cd EloqKV/
# cd conf/
参数调整
EloqKV 使用配置文件来自定义设置。在安装目录下 conf/eloqkv.ini 中提供了一个例子。下面是一个如何配置 EloqKV 在本地机器上运行的示例。
注:设置 ip 字段设置为 127.0.0.1 将阻止外部访问 EloqKV。建议将 ip 自 服务器的实际 IP 地址(如果你想从另一台机器访问 EloqKV)。还要注意,如果没有用户指定,EloqKV 会自动为其参数设置合理的默认值。因此,如果你对某个参数有疑问,请不要指定它在配置文件中。
启动 EloqKV 服务
cd /backup/eloqkv/EloqKV ./bin/eloqkv --config=conf/eloqkv.ini
EloqKV 兼容 Redis 协议,我们可以使用任何 Redis 客户端连接到 EloqKV,当然也可以使用 EloqKV 自带的客户端 eloqkv-cli 来连接。
redis-cli -h 127.0.0.1 -p 6379 eloqkv-cli -h 127.0.0.1 -p 6379 SET key1 "Hello, EloqKV!" GET key1
启用持久数据存储
EloqKV 支持与可插拔数据存储的集成,即使 EloqKV 服务停止,也能实现数据持久化。此功能有助于实现分层存储策略,允许热数据驻留在内存中以便快速访问,而冷数据可以卸载到磁盘。当前的 EloqKV 版本包括一个本地 RocksDB 存储引擎。您可以通过编辑来打开它 eloqkv.ini 并重启 EloqKV。
enable_data_store=on
请注意,启用持久存储会消耗 CPU 资源,定期将内存中的记录刷新到 kv 存储。因此,减少 core_num 数量。
启用 WAL 以实现持久性
通过启用预写日志记录 (WAL),EloqKV 可以实现持久性,即在系统崩溃的情况下,所有写入都将被记录下来,数据不会丢失。WAL 需要与持久数据存储结合使用才能正常工作。 编辑 eloqkv.ini 并重启 EloqKV 以启用 WAL
enable_wal=on
设置集群
设置 EloqKV 集群非常简单。只需在不同的机器上启动多个 EloqKV 实例,每个实例都提供了一个配置文件,其中节点列在 cluster 部分。
例如,假设我们在 192.168.75.20、192.168.75.21 和 192.168.75.22 上设置一个具有 3 台服务器的集群:
ip_port_list=192.168.75.20:6379,192.168.75.21:6379,192.168.75.22:6379
现在,你可以将客户端连接到集群中的任何一台服务器,并享受增加的容量。数据将自动分片。默认情况下,如果数据位于另一个节点上,则服务器将自动从其他服务器获取数据。你以禁用自动重定向并遵循 Redis 集群协议,让 Redis 集群感知客户端将查询路由到适当的节点。
[local]
auto_redirect=false
Eloqctl 工具
eloqctl 是专为 EloqKV 集群运维而设计的强大工具。使用 Eloqctl,您可以轻松管理日常数据库任务,例如部署、启动、停止、升级和停用 EloqKV 集群,以及配置集群参数。eloqctl 支持部署各种集群类型,包括 EloqKV 事务集群、EloqKV 日志集群、Cassandra 等持久化存储集群以及相关的监控系统。
当配置为集群时,主节点发生故障,EloqKV 可以自动故障转移,备节点将被选为新的 Leader 节点来接收写入工作负载。要使客户端对主故障转移透明,请在 EloqKV 集群前面部署代理,或使用 Redis 集群 SDK 连接到 EloqKV。EloqKV Proxy 是一个用 Go 编写的高性能代理服务器,旨在无缝管理多个 EloqKV 集群。
Eloqctl 常用命令
检查集群状态
eloqctl list --查看集群名称,默认为 eloqkv-cluster
eloqctl status ${cluster_name}
启动集群
eloqctl start ${cluster_name}
–启动指定节点
eloqctl start --nodes node1_ip:node1_port,node2_ip:node2_port ${cluster_name}
关闭集群
eloqctl stop ${cluster_name}
–强制关闭集群
eloqctl stop ${cluster_name} -f
–停止除 Monitor 之外的所有组件
eloqctl stop ${cluster_name} -a
停止监控器
eloqctl monitor stop ${cluster_name}
如果使用密码部署集群,则上述所有命令都需要添加 –password
eloqctl stop ${cluster_name} --password xxxxx
EloqKV 的已知限制
1. 与每个键关联的值限制为最大大小 256MB。
2. RocksDB 持久化存储引擎目前不支持复制,因此当节点发生故障时,数据可能不再可用。为了实现高可用性,请考虑改用 Cassandra 或 DynamoDB。
3. Redis 在单个线程中运行数据作,以串行方式执行包含在 MULTI/EXEC 中的事务。EloqKV 支持并发事务,因此在 EloqKV 中,事务可能会因冲突而中止(即失败)。用户不能假设即使在单节点情况下,所有 MULTI/EXEC 事务也总是返回成功。
4. set 命令不支持过期选项。
参考链接
https://www.eloqdata.com/eloqkv/install-from-binary
https://www.eloqdata.com/eloqkv/configuration
https://www.eloqdata.com/eloqkv/kvstore_compatibility
https://mp.weixin.qq.com/s/04XtgAuBaFgHOipf627FcA
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————





