据说是比Redis还要快好多倍,多线程“Redis”不具体操作怎么过瘾

昨天写了一篇文章,关于多线程的“redis”中间件--KeyDB的相应介绍

都说redis,可多线程的“redis”中间件,快到你无法想象

然后今天起床看了一下后台,有一个读者给我留言,说有没有具体的api操作

据说是比Redis还要快好多倍,多线程“Redis”不具体操作怎么过瘾_第1张图片

新功能带来了新的选择:

server-threads N

用于处理请求的线程数。这应该与网络硬件中可用队列的数量有关,而不是与计算机上内核的数量有关。因为KeyDB使用自旋锁来减少延迟;使其过高会降低性能。我们建议在这里使用4。默认情况下,它设置为1。

scratch-file-path /path

如果要使用FLASH支持的存储,则此选项可配置KeyDB临时文件的目录。此功能依赖于快照才能工作,因此必须在BTRFS文件系统上使用。ZFS也可以工作,但未经测试。有了这个功能,KeyDB将使用RAM作为缓存,并在必要时使用页面到磁盘。注意:这需要特殊的编译选项,请参阅下面的构建KeyDB。

db-s3-object / path / to / bucket

如果您希望KeyDB直接转储到AWS S3,则此选项指定存储桶。将此选项与传统的RDB选项一起使用将导致KeyDB两次备份到两个位置。这要求安装和配置AWS CLI工具,这些工具在后台用于传输数据。

所有其他配置选项的行为均符合您的预期。您现有的配置文件应继续保持不变。

建立KeyDB

可以编译KeyDB并对其进行测试以在Linux上使用。KeyDB当前依赖于SO_REUSEADDR的负载平衡行为,该行为仅在Linux中可用。当我们支持跨线程的编组连接时,我们计划支持其他操作系统,例如FreeBSD。

编译很简单:

% make

您可以通过以下方式启用Flash支持(注意:必须安装autoconf和autotools):

% make MALLOC=memkind

修复依赖项或缓存的构建选项的构建问题

KeyDB具有一些依赖关系,这些依赖关系已包含在deps目录中。 make即使依赖项源代码中的某些内容发生更改,它也不会自动重建依赖项。

当您使用git pull或以其他任何方式修改依赖关系树中的代码来更新源代码时,请确保使用以下命令来真正清理所有内容并从头开始重建:

make distclean

这将清除:jemalloc,lua,hiredis,linenoise。

同样,如果您强制使用某些构建选项,例如32位目标,没有C编译器优化(用于调试目的)以及其他类似的构建时间选项,则这些选项将无限期缓存,直到发出make distclean 命令为止。

解决构建32位二进制文​​件的问题

如果在使用32位目标构建KeyDB之后,您需要使用64位目标进行重建,或者make distclean反之,则需要在KeyDB发行版的根目录中执行 。

如果在尝试构建KeyDB的32位二进制文​​件时发生构建错误,请尝试以下步骤:

  • 安装软件包libc6-dev-i386(也尝试使用g ++-multilib)。
  • 尝试使用以下命令行代替make 32bit: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"

分配者

通过设置MALLOC环境变量来完成构建KeyDB时选择非默认内存分配器。默认情况下,KeyDB是针对libc malloc编译和链接的,但jemalloc是Linux系统上的默认值。选择该默认值是因为事实证明,与libc malloc相比,jemalloc的碎片问题更少。

要强制针对libc malloc进行编译,请使用:

% make MALLOC=libc

要在Mac OS X系统上针对jemalloc进行编译,请使用:

% make MALLOC=jemalloc

详细构建

默认情况下,KeyDB将使用用户友好的彩色输出进行构建。如果要查看更详细的输出,请使用以下命令:

% make V=1

运行KeyDB

要使用默认配置运行KeyDB,只需键入:

% cd src
% ./keydb-server

如果要提供keydb.conf,则必须使用附加参数(配置文件的路径)运行它:

% cd src
% ./keydb-server /path/to/keydb.conf

可以通过使用命令行直接将参数作为选项传递来更改KeyDB配置。例子:

% ./keydb-server --port 9999 --replicaof 127.0.0.1 6379
% ./keydb-server /etc/keydb/6379.conf --loglevel debug

使用命令行,也可以使用完全相同的名称将keydb.conf中的所有选项作为选项来支持。

玩KeyDB

您可以使用keydb-cli来玩KeyDB。启动keydb-server实例,然后在另一个终端中尝试以下操作:

% cd src
% ./keydb-cli
keydb> ping
PONG
keydb> set foo bar
OK
keydb> get foo
"bar"
keydb> incr mycounter
(integer) 1
keydb> incr mycounter
(integer) 2
keydb>

您可以在http://redis.io/commands中找到所有可用命令的列表。

安装KeyDB

要将KeyDB二进制文件安装到/ usr / local / bin中,请使用:

% make install

make PREFIX=/some/other/directory install如果您想使用其他目的地,则可以使用。

进行安装只会在系统中安装二进制文件,而不会在适当的位置配置初始化脚本和配置文件。如果您只想使用KeyDB,则不需要这样做,但是如果您以生产系统的正确方式安装它,我们有一个脚本可用于Ubuntu和Debian系统:

% cd utils
% ./install_server.sh

该脚本将询问您一些问题,并将设置正确运行KeyDB所需的一切,作为后台守护程序,该守护程序将在系统重新引导时再次启动。

您可以停止并使用名为脚本开始KeyDB /etc/init.d/keydb_,例如/etc/init.d/keydb_6379。

 


至于代码,也已经为大家准备好了,但是,因为部分原因,没有办法直接给大家粘贴复制上来,但是已经为大家准备好了,有需要的朋友,关注私信“资料”即可

但是,我觉得这只是一个技术面的扩展,天知道什么时候会用到呢?而redis在6.0版本之后也已经支持多线程,只不过要付费而已,并且,redis作为内存数据库,强大的性能,最近也是相当受欢迎,在面试的时候也是问到的相当多,为此,整理部分redis的相关资料,有需要的,同样,关注 +转发后,私信“资料”就好

据说是比Redis还要快好多倍,多线程“Redis”不具体操作怎么过瘾_第2张图片

当然怎么能少了视频

据说是比Redis还要快好多倍,多线程“Redis”不具体操作怎么过瘾_第3张图片

只要你来,只要我有

关乎公众号:Java架构师联盟,更多精美文档首发

你可能感兴趣的:(java,redis)