AlmaLinux 编译安装KeyDB

KeyDB是一个比Redis性能更强的数据库,属于可以平替Redis的分支版本,网络上的KeyDB编译教程不多,这里以AlmaLinux系统为例做个补充。

安装编译所需的库:

dnf install libuuid-devel libcurl-devel openssl-devel zlib-devel gcc gcc-c++ libatomic tar wget

下载与解压缩KeyDB源码:

wget https://github.com/Snapchat/KeyDB/archive/refs/tags/v6.3.4.tar.gz -O keydb-6.3.4.tar.gz
tar zxvf keydb-6.3.4.tar.gz

创建keydb用户与用户组:

/usr/sbin/groupadd keydb
/usr/sbin/useradd -g keydb keydb

编译与安装KeyDB:

cd KeyDB-6.3.4
make
make PREFIX=/usr/local/keydb install
mkdir -p /usr/local/keydb/conf
chown -R keydb:keydb /usr/local/keydb/
cp keydb.conf /usr/local/keydb/conf/keydb.conf
make clean
cd ../

修改KeyDB配置文件:

主要需要修改以下的参数

bind 127.0.0.1 
如果需要外部访问,应修改为0.0.0.0,同时应配置防火墙或数据库密码以保证安全性

port 6379
如果需要修改默认端口,应修改此处,如果使用unix socket监听,改为0即可

unixsocket /dev/shm/keydb.sock
unixsocketperm 777
如果本地使用unix socket监听,则需要添加上面两行,否则请勿添加

daemonize yes
开启进程守护

supervised auto
这里要改成auto,自动检测使用的进程管理器,以便使用系统服务接管服务

pidfile /var/run/keydb/keydb.pid
修改pid位置,防止用户权限问题报错

loglevel warning
将日志等级修改为warning,如果生产环境对日志有比较强的依赖,建议改为notice,但应配置好日志的各种处理服务

logfile /usr/local/keydb/keydb.log
日志的存储位置,可以根据实际需求更改,日志目录需要更改为keydb用户或用户组所有

always-show-logo no
一般生产环境下关闭即可,会让日志更精简

dbfilename dump.rdb
数据库的命名,默认即可

dir /usr/local/keydb
数据库的目录位置,可以根据实际需求修改,数据库目录需要更改为keydb用户或用户组所有

maxmemory 67108864
数据库的内存占用,单位是字节,可以根据实际需求调整

maxmemory-policy noeviction
这个参数是用于处理KeyDB服务器在达到最大内存限制时,选择要移除的键的策略:

volatile-lru:根据近似的LRU算法,仅删除具有到期时间的键

allkeys-lru:根据近似的LRU算法,删除任何键

volatile-lfu:根据近似的LFU算法,仅删除具有到期时间的键

allkeys-lfu:根据近似的LFU算法,删除任何键

volatile-random:随机删除一个具有到期时间的键

allkeys-random:随机删除任何键

noeviction:不执行驱逐,仅对写操作返回错误

server-threads 4
server-thread-affinity true
这两个参数是用于开启KeyDB服务器多线程优化的,如果服务器上还有其它服务,server-threads可以设置为2

配置KeyDB服务:

vi /usr/lib/systemd/system/keydb.service 输入以下内容

[Unit]
Description=KeyDB Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/keydb/keydb.pid
User=keydb
Group=keydb

Environment=statedir=/var/run/keydb
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R keydb:keydb ${statedir}
ExecStart=/usr/local/keydb/bin/keydb-server /usr/local/keydb/conf/keydb.conf
ExecStop=/bin/kill -s TERM $MAINPID
Restart=always
LimitNOFILE=65535
LimitNPROC=65535
LimitCORE=65535

[Install]
WantedBy=multi-user.target

启动KeyDB服务:

systemctl start keydb
systemctl enable keydb
systemctl status keydb

至此KeyDB编译安装完成。