git:https://github.com/dragonflydb/dragonfly

DOC:https://www.dragonflydb.io/docs

BLOG:https://www.dragonflydb.io/blog

Dragonfly DB 介绍

Dragonfly DB 号称全世界最快的内存数据库,是一种针对现代应用程序负荷需求而构建的内存数据库,完全兼容Redis和Memcached的 API,迁移时无需修改任何代码。在多线程、Shared-nothing 架构之上实现了全新的算法和数据结构。相比于这些传统的内存数据库,Dragonfly提供了是 Redis 25倍的吞吐量,高缓存命中率和低尾延迟,单实例支持百万QPS。同时Dragonfly还能轻松进行垂直扩展。

安装

sudo yum install automake boost-devel g++ git cmake libtool ninja-build libzstd-devel  \
     openssl-devel libunwind-devel autoconf-archive patch

使用二进制运行

./dragonfly --alsologtostderr

如果有报错

# ./dragonfly-x86_64
./dragonfly-x86_64: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.28' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libc.so.6: version `GLIBC_2.30' not found (required by ./dragonfly-x86_64)
./dragonfly-x86_64: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./dragonfly-x86_64)

查看GLIBC

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

需升级GLIBC,可参考 https://blog.51cto.com/yunhuyuetian/1907619

登录

redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> keys *
1) "hello"
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379>

复制

#确定角色
> role
 
#创建复制 //目前 dragonfly 支持 Redis 6.2之前的数据结构和复制协议
> replicaof hostname_or_IP port
 
#从库提升为主库
> replicaof no one

集群

#伪集群模式,为了适配数据迁移
# Running Dragonfly instance in cluster mode
$ dragonfly --cluster_mode=emulated
$ redis-cli
# See which cluster commands are supported
127.0.0.1:6379> cluster help

DragonflyDB 集群模式是伪集群模式,只是为了适合 Redis 集群数据迁移到 DragonflyDB。

目前没有HA方案,到现在也只实现了复制,HA方案需要使用者自已来实现,但考虑到线上生产环境的稳定性,HA方案是必不可少的。考虑到目前DragonflyDB也刚刚才实现GA,所以 DragonflyDB 是否部署到线上生产环境还需要从业务角度、数据库选型、社区、运维等问题综合考虑。 DragonflyDB 还有很远的路要走。

至于部署到 docker 中,需要对 k8s 环境需要有足够的了解和掌控。DragonflyDB 涉及到数据落盘,需要 k8s  支持有状态存储。

使用中需要注意的是:DragonflyDB 支持多核心、多线程,使用中需要考虑到锁、并发资源等问题(Redis核心处理线程为单线程,没有这方面的顾虑)

PS:通过官方BLOG透露出来的信息,可以看到 DragonflyDB 对 Redis集群的诟病,所以 DragonflyDB 未来长时间可能不会有集群版。