1. KeyDB简介
KeyDB是由Snap Inc.开发的开源内存数据库,是Redis的多线程分支版本。KeyDB完全兼容Redis协议,但通过多线程架构实现了更高的性能和吞吐量。KeyDB适合需要高性能缓存的场景,如实时数据处理、会话管理、消息队列等。更多学习教程www.fgedu.net.cn
KeyDB的主要特点包括:多线程架构、完全兼容Redis协议、高性能吞吐量、主动复制支持、MVCC非阻塞架构、TLS加密支持、ModJS脚本支持、FLASH存储支持。
2. KeyDB版本说明
KeyDB提供多个版本系列,用户可根据需求选择:
当前稳定版本
KeyDB 6.3.4:最新稳定版本
KeyDB 6.3.2:稳定版本,包含FLASH存储Beta支持
版本特性
KeyDB 6.3.x:支持FLASH存储、多线程优化
KeyDB 6.2.x:稳定版本
支持的平台
Linux:Ubuntu、Debian、CentOS、RHEL、Fedora
Docker:官方Docker镜像
源码编译:支持多平台
3. 官方下载方式
KeyDB是完全开源免费的数据库,可直接从官网或GitHub下载。学习交流加群风哥微信: itpux-com
官方下载地址
KeyDB官网:https://keydb.dev/
文档地址:https://docs.keydb.dev/
GitHub仓库:https://github.com/Snapchat/KeyDB
使用PPA安装(Ubuntu/Debian)
$ sudo add-apt-repository ppa:keydb/ppa
$ sudo apt-get update
# 输出示例如下:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://ppa.launchpad.net/keydb/ppa/ubuntu jammy InRelease [23.8 kB]
Get:3 http://ppa.launchpad.net/keydb/ppa/ubuntu jammy/main amd64 Packages [1,234 B]
Fetched 25.0 kB in 2s (12.5 kB/s)
Reading package lists… Done
# 安装KeyDB
$ sudo apt-get install keydb
# 输出示例如下:
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following NEW packages will be installed:
keydb
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,234 kB of archives.
After this operation, 5,678 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/keydb/ppa/ubuntu jammy/main amd64 keydb amd64 6.3.4-1 [1,234 kB]
Fetched 1,234 kB in 2s (617 kB/s)
Selecting previously unselected package keydb.
(Reading database … 123456 files and directories currently installed.)
Preparing to unpack …/keydb_6.3.4-1_amd64.deb …
Unpacking keydb (6.3.4-1) …
Setting up keydb (6.3.4-1) …
Processing triggers for man-db (2.10.2-1) …
4. Docker安装方式
Docker是部署KeyDB最简单的方式。from:www.itpux.com
$ sudo docker pull eqalpha/keydb
# 输出示例如下:
Using default tag: latest
latest: Pulling from eqalpha/keydb
Digest: sha256:abc123def456…
Status: Downloaded newer image for eqalpha/keydb:latest
docker.io/eqalpha/keydb:latest
# 启动KeyDB容器
$ sudo docker run -d –name keydb -p 6379:6379 eqalpha/keydb
# 输出示例如下:
abc123def456789…
# 使用自定义配置启动
$ sudo docker run -d –name keydb -p 6379:6379 eqalpha/keydb keydb-server /etc/keydb/keydb.conf –requirepass yourpassword
# 输出示例如下:
def456abc123789…
# 查看容器状态
$ sudo docker ps
# 输出示例如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 eqalpha/keydb “keydb-server /etc/k…” 5 seconds ago Up 4 seconds 0.0.0.0:6379->6379/tcp keydb
5. 安装介质说明
KeyDB提供多种安装介质,用户可根据实际需求选择。学习交流加群风哥QQ113257174
安装包类型
DEB包:Ubuntu/Debian专用
RPM包:CentOS/RHEL/Fedora专用
Docker镜像:跨平台通用
源码编译:支持多平台
使用RPM安装(CentOS/RHEL)
$ wget https://github.com/Snapchat/KeyDB/releases/download/v6.3.4/keydb-6.3.4-1.el8.x86_64.rpm
# 输出示例如下:
–2026-04-04 10:15:00– https://github.com/Snapchat/KeyDB/releases/download/v6.3.4/keydb-6.3.4-1.el8.x86_64.rpm
Resolving github.com… 140.82.121.4
Connecting to github.com|140.82.121.4|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 1234567 (1.2M) [application/octet-stream]
Saving to: ‘keydb-6.3.4-1.el8.x86_64.rpm’
keydb-6.3.4-1.el8.x86_64.rpm 100%[===========================================>] 1.18M 5.5MB/s in 0.2s
# 安装RPM包
# rpm -ivh keydb-6.3.4-1.el8.x86_64.rpm
# 输出示例如下:
Preparing… ################################# [100%]
Updating / installing…
1:keydb-6.3.4-1 ################################# [100%]
# 启动KeyDB服务
# systemctl start keydb
# systemctl enable keydb
# 输出示例如下:
Created symlink /etc/systemd/system/multi-user.target.wants/keydb.service → /usr/lib/systemd/system/keydb.service.
6. 数据库配置方法
KeyDB安装后需要进行基本配置,以下是常用配置方法。更多学习教程公众号风哥教程itpux_com
配置文件修改
$ sudo vi /etc/keydb/keydb.conf
# 主要配置参数
# 绑定地址
bind 0.0.0.0
# 端口
port 6379
# 密码
requirepass yourpassword
# 最大内存
maxmemory 4gb
# 最大内存策略
maxmemory-policy allkeys-lru
# 线程数
server-threads 4
# 持久化配置
save 900 1
save 300 10
save 60 10000
# AOF配置
appendonly yes
appendfsync everysec
# 重启服务
$ sudo systemctl restart keydb
# 输出示例如下:
$ sudo systemctl status keydb
# 输出示例如下:
● keydb.service – KeyDB In-Memory Data Store
Loaded: loaded (/etc/systemd/system/keydb.service; enabled)
Active: active (running) since Fri 2026-04-04 10:30:00 CST; 5s ago
Main PID: 12345 (keydb-server)
Tasks: 5 (limit: 4915)
Memory: 50.0M
CGroup: /system.slice/keydb.service
└─12345 /usr/bin/keydb-server /etc/keydb/keydb.conf
连接KeyDB
$ keydb-cli -h 127.0.0.1 -p 6379 -a yourpassword
# 输出示例如下:
Warning: Using a password with ‘-a’ or ‘-u’ option on the command line interface may not be safe.
127.0.0.1:6379>
# 测试连接
127.0.0.1:6379> PING
# 输出示例如下:
PONG
# 设置键值
127.0.0.1:6379> SET name “风哥教程”
# 输出示例如下:
OK
# 获取键值
127.0.0.1:6379> GET name
# 输出示例如下:
“\xe9\xa3\x8e\xe5\x93\xa5\xe6\x95\x99\xe7\xa8\x8b”
# 查看服务器信息
127.0.0.1:6379> INFO
# 输出示例如下:
# Server
redis_version:6.3.4
keydb_version:6.3.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:abc123
redis_mode:standalone
os:Linux 5.15.0-91-generic x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:11.4.0
process_id:12345
run_id:abc123def456
tcp_port:6379
uptime_in_seconds:300
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:12345678
executable:/usr/bin/keydb-server
config_file:/etc/keydb/keydb.conf
# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:0
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
# Memory
used_memory:1234567
used_memory_human:1.18M
used_memory_rss:2345678
used_memory_rss_human:2.24M
used_memory_peak:1234567
used_memory_peak_human:1.18M
used_memory_peak_perc:100.00%
used_memory_overhead:123456
used_memory_startup:987654
used_memory_dataset:1111111
used_memory_dataset_perc:90.00%
allocator_allocated:1234567
allocator_active:1345678
allocator_resident:1456789
total_system_memory:16777216000
total_system_memory_human:15.63G
used_memory_lua:32768
used_memory_vm_eval:32768
used_memory_lua_evaluator:16384
used_memory_vm_eval_lua_total:32768
used_memory_functions:32768
used_memory_scripts:0
number_of_cached_scripts:0
maxmemory:4294967296
maxmemory_human:4.00G
maxmemory_policy:allkeys-lru
7. 生产环境建议
在生产环境中使用KeyDB时,需要考虑以下因素:
多线程配置
# 编辑keydb.conf
server-threads 4
server-thread-affinity true
# 查看线程状态
127.0.0.1:6379> INFO server
# 输出示例如下:
server_threads:4
server_thread_affinity:yes
# 性能测试
$ keydb-benchmark -t set,get -n 100000 -c 50
# 输出示例如下:
====== SET ======
100000 requests completed in 0.50 seconds
50 parallel clients
3 bytes payload
keep alive: 1
host configuration “save”: 900 1 300 10 60 10000
host configuration “appendonly”: no
multi-thread: yes
threads: 4
0.00% <= 0.1 milliseconds 50.00% <= 0.2 milliseconds 90.00% <= 0.3 milliseconds 99.00% <= 0.5 milliseconds 99.90% <= 1.0 milliseconds 99.99% <= 2.0 milliseconds 100.00% <= 2.0 milliseconds 200000.00 requests per second ====== GET ====== 100000 requests completed in 0.45 seconds 50 parallel clients 3 bytes payload keep alive: 1 host configuration "save": 900 1 300 10 60 10000 host configuration "appendonly": no multi-thread: yes threads: 4 0.00% <= 0.1 milliseconds 50.00% <= 0.2 milliseconds 90.00% <= 0.3 milliseconds 99.00% <= 0.5 milliseconds 99.90% <= 1.0 milliseconds 99.99% <= 2.0 milliseconds 100.00% <= 2.0 milliseconds 222222.22 requests per second
主动复制配置
# 编辑keydb.conf
active-replica yes
replicaof 192.168.1.52 6379
# 从节点配置
# 编辑keydb.conf
active-replica yes
replicaof 192.168.1.51 6379
# 查看复制状态
127.0.0.1:6379> INFO replication
# 输出示例如下:
# Replication
role:active-replica
master_host:192.168.1.52
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_read_repl_offset:12345
slave_read_offset:12345
slave_priority:100
slave_priority:100
connected_slaves:1
slave0:ip=192.168.1.52,port=6379,state=online,offset=12345,lag=0
master_failover_state:no-failover
master_replid:abc123def456
master_replid2:000000000000
master_repl_offset:12345
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:12345
8. 高级特性
KeyDB提供多种高级特性:
FLASH存储
# 编辑keydb.conf
storage-provider flash /fgeudb/keydb/flash
# 输出示例如下:
# KeyDB将使用FLASH存储扩展内存容量
# ModJS脚本支持
127.0.0.1:6379> MODULE LOAD /usr/lib/keydb/modules/modjs.so
# 输出示例如下:
OK
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
