昨天写了一篇文章,关于多线程的“redis”中间件--KeyDB的相应介绍
都说redis,可多线程的“redis”中间件,快到你无法想象
然后今天起床看了一下后台,有一个读者给我留言,说有没有具体的api操作
新功能带来了新的选择:
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并对其进行测试以在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位目标构建KeyDB之后,您需要使用64位目标进行重建,或者make distclean反之,则需要在KeyDB发行版的根目录中执行 。
如果在尝试构建KeyDB的32位二进制文件时发生构建错误,请尝试以下步骤:
通过设置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,只需键入:
% 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-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二进制文件安装到/ 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_
至于代码,也已经为大家准备好了,但是,因为部分原因,没有办法直接给大家粘贴复制上来,但是已经为大家准备好了,有需要的朋友,关注私信“资料”即可
但是,我觉得这只是一个技术面的扩展,天知道什么时候会用到呢?而redis在6.0版本之后也已经支持多线程,只不过要付费而已,并且,redis作为内存数据库,强大的性能,最近也是相当受欢迎,在面试的时候也是问到的相当多,为此,整理部分redis的相关资料,有需要的,同样,关注 +转发后,私信“资料”就好
当然怎么能少了视频
只要你来,只要我有
关乎公众号:Java架构师联盟,更多精美文档首发