背景 现需要在一台信创虚拟机安装redis 6.x, 未找到二进制包版本,因此需要自行编译安装。 服务器环境如下:
CPU架构 系统类别 系统发行版本 x86_64 Linux Kylin Linux Advanced Server release V10 (Sword)
因为是编译安装,一切都是从源码开始,实际上跟CPU架构和操作系统版本关系不大。下面着重记录一下安装配置过程。
安装redis前的准备工作 1. 预期目标 目标项 目标值 安装目录 /usr/local/redis 支持TLS 是 支持远程访问 否 支持免密访问 否 集群部署 暂不考虑
2. 编译环境准备 主要是准备好gcc编译器。 一般来说麒麟V10已经自带gcc,我机器上gcc版本是7.3.0,版本已经比CentOS 7.x
的4.8.5
新了,本着够用就好的原则,没有升级到高版本的必要。
3. 准备依赖包 主要是openssl
库。如果redis不使用TLS
模式的话,本步骤可以跳过。 我机器上已经自带了OpenSSL 1.1.1f
版本,只需要额外安装openssl-devel
库即可。 偷懒选择yum
方式安装。
1 yum -y install openssl-devel
这里简单说明一下,机器是离线的,但事先配置好了本地yum源本地yum源配置方法看这里 ,所以可以用yum install
来安装一些系统镜像里自带的库。
编译安装redis 1. 准备官网源码 先从官网(http://download.redis.io/releases/)下载对应版本源码包。 我下载的是6.2.14
版本,下面的记录都以这个版本为准。 上传压缩包到安装目标机器,使用tar xvfz redis-6.2.14.tar.gz
解压。 解压后目录为:redis-6.2.14
2. 编译安装 依次执行如下命令进行编译:
1 2 3 4 5 6 7 8 9 10 11 12 # 进入源码目录 cd redis-6.2.14 # 先编译deps子目录下的依赖库 cd deps make -j4 hiredis lua jemalloc linenoise cd .. # 编译(启用TLS支持,这个参数可选) make -j4 BUILD_TLS=yes # 测试一下,这个命令执行时间较长 make test # 安装到自定义目录 make install PREFIX=/usr/local/redis
make
过程中可能会出现各种问题,这里就要具体问题具体分析了。一般都是因为缺少lib库,或者没有事先编译deps目录下的依赖库造成的,根据错误提示找找缺少的库文件等等,缺啥补啥,然后make distclean
后重新make,大概率能解决。
配置redis服务 设置配置文件 1 2 3 4 5 6 7 8 # 在安装目录下创建子目录: mkdir /usr/local/redis/conf mkdir /usr/local/redis/data # 从源码目录copy配置文件`redis.conf`到安装目录的`conf`子目录 cd redis-6.2.14 cp redis.conf /usr/local/redis/conf # 根据预先规划需要,编辑redis.conf vim redis.conf
主要修改配置项包括:
1 2 3 4 5 6 7 8 9 # 只开启本地监听 bind 127.0.0.1 -::1 protected-mode yes port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile "" dir /usr/local/redis/data requirepass "密码"
使用cat /usr/local/redis/conf/redis.conf |grep -v "^#"|grep -v "^$"
命令得到完整有效的配置项如下(已过滤注释),供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 bind 127.0.0.1 -::1 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 16 always-show-logo no set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb rdb-del-sync-files no dir /usr/local/redis/data replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 requirepass "jgDWw**RxRG&%#J3" lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no lazyfree-lazy-user-del no lazyfree-lazy-user-flush no oom-score-adj no oom-score-adj-values 0 200 800 disable-thp yes appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes jemalloc-bg-thread yes
配置开机启动 新建或编辑一个启动配置文件:vim /lib/systemd/system/redis.service
文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description=Redis After=network.target [Service] Type=forking PIDFile=/var/run/redis_6379.pid ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
然后执行:
1 2 3 4 systemctl daemon-reload systemctl enable redis systemctl start redis systemctl status redis
测试验证 下面列一下我用来验证redis的命令, 供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 打开命令行客户端 cd /usr/local/redis bin/redis-cli # 输入密码完成认证 auth "密码" # 选择db 0 select 0 # 设置键值对 a:10 set a 10 # 获取所有key keys * # 获取a的值 get a # 删除键值对a del a # 获取所有key keys * # 退出客户端 quit