編譯安裝redis

編譯安裝redisd

安裝方法:

yum安裝

  1. 查看yum倉庫redis版本
[root@centos ~]# yum list redis
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
redis.x86_64                             3.2.12-2.el7                              myepel
  1. yum安裝
[root@centos ~]# yum install redis -y
  1. 啓動服務並設爲開機啓動
[root@centos ~]# systemctl enable --now redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
  1. 查看redis端口
[root@centos ~]# ss -ntl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128      127.0.0.1:631                          *:*                  
LISTEN      0      100      127.0.0.1:25                           *:*                  
LISTEN      0      128      127.0.0.1:6010                         *:*                  
LISTEN      0      128              *:54909                        *:*                  
LISTEN      0      128      127.0.0.1:6379                         *:*                  # 這個是redis端口
LISTEN      0      128              *:111                          *:*                  
LISTEN      0      5      192.168.122.1:53                           *:*
  1. 測試登陸redis
[root@centos ~]# redis-cli
127.0.0.1:6379> info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:2914
run_id:c75137717c54caa78bb05757d05c91471ef5817f
tcp_port:6379
uptime_in_seconds:175
uptime_in_days:0
hz:10
lru_clock:4329484
executable:/usr/bin/redis-server
config_file:/etc/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
  1. 測試使用
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> get key1
"value1"

編譯安裝

下載當前最新release版本redis源碼包:http://download.redis.io/releases/
在這裏插入圖片描述git

  1. 編譯安裝命令
    官方安裝命令:https://redis.io/download
# 源碼包存放目錄
[root@centos ~]# cd /usr/local/src/
# 下載源碼包
[root@centos src]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
--2020-02-11 10:37:54--  http://download.redis.io/releases/redis-5.0.7.tar.gz
Resolving download.redis.io (download.redis.io)... 109.74.203.151
Connecting to download.redis.io (download.redis.io)|109.74.203.151|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1984203 (1.9M) [application/x-gzip]
Saving to: ‘redis-5.0.7.tar.gz’

100%[===============================================>] 1,984,203   6.75KB/s   in 3m 35s 

2020-02-11 10:41:39 (9.02 KB/s) - ‘redis-5.0.7.tar.gz’ saved [1984203/1984203]
# 查看下載好的源碼包
[root@centos src]# ll
total 1940
-rw-r--r-- 1 root root 1984203 Nov 20 01:06 redis-5.0.7.tar.gz
  1. 解壓源碼包
[root@centos src]# tar xf redis-5.0.7.tar.gz 
[root@centos src]# ll
total 1940
drwxrwxr-x 6 root root     334 Nov 20 01:05 redis-5.0.7
-rw-r--r-- 1 root root 1984203 Nov 20 01:06 redis-5.0.7.tar.gz
  1. 建立配置文件、日誌、數據等目錄
[root@centos ~]# mkdir /apps/redis/{etc,logs,data,run} -p
# 查看目錄結構
[root@centos ~]# tree /apps/
/apps/
└── redis
    ├── data
    ├── etc
    ├── logs
    └── run
  1. 進入redis目錄編譯安裝
[root@centos ~]# cd /usr/local/src/redis-5.0.7/
[root@centos redis-5.0.7]# make PREFIX=/apps/redis install
cd src && make install
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src'
    CC Makefile.dep
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src'
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src'
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src'
make: *** [install] Error 2

# 出現以上報錯是沒有gcc編譯器致使的
# 下載gcc編譯器
[root@centos redis-5.0.7]# yum install gcc
# 記得這裏要把以前的redis目錄刪除從新解壓
[root@centos src]# rm -rf redis-5.0.7
[root@centos src]# tar xf redis-5.0.7.tar.gz 

# 從新進入目錄進行編譯
[root@centos src]# cd redis-5.0.7/
[root@centos redis-5.0.7]# make PREFIX=/apps/redis install  # 指定安裝目錄
cd src && make install
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src'
    CC Makefile.dep
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src'
make[1]: Entering directory `/usr/local/src/redis-5.0.7/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: Entering directory `/usr/local/src/redis-5.0.7/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory `/usr/local/src/redis-5.0.7/deps'
(rm -f .make-*)
....(省略)
Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/usr/local/src/redis-5.0.7/src'
# 最後報這個就是編譯完成
  1. 拷貝配置文件
[root@centos redis-5.0.7]# ll 
total 276
-rw-rw-r--  1 root root 115100 Nov 20 01:05 00-RELEASENOTES
-rw-rw-r--  1 root root     53 Nov 20 01:05 BUGS
-rw-rw-r--  1 root root   2381 Nov 20 01:05 CONTRIBUTING
-rw-rw-r--  1 root root   1487 Nov 20 01:05 COPYING
drwxrwxr-x  6 root root    192 Feb 11 11:32 deps
-rw-rw-r--  1 root root     11 Nov 20 01:05 INSTALL
-rw-rw-r--  1 root root    151 Nov 20 01:05 Makefile
-rw-rw-r--  1 root root   6888 Nov 20 01:05 MANIFESTO
-rw-rw-r--  1 root root  20555 Nov 20 01:05 README.md
-rw-rw-r--  1 root root  61797 Nov 20 01:05 redis.conf
-rwxrwxr-x  1 root root    275 Nov 20 01:05 runtest
-rwxrwxr-x  1 root root    280 Nov 20 01:05 runtest-cluster
-rwxrwxr-x  1 root root    373 Nov 20 01:05 runtest-moduleapi
-rwxrwxr-x  1 root root    281 Nov 20 01:05 runtest-sentinel
-rw-rw-r--  1 root root   9710 Nov 20 01:05 sentinel.conf
drwxrwxr-x  3 root root   8192 Feb 11 11:33 src
drwxrwxr-x 11 root root    182 Nov 20 01:05 tests
drwxrwxr-x  8 root root   4096 Nov 20 01:05 utils
[root@centos redis-5.0.7]# cp redis.conf /apps/redis/etc/
  1. 啓動redis(這個啓動方式)
[root@centos redis-5.0.7]# /apps/redis/bin/redis-server /apps/redis/etc/redis.conf 
8315:C 11 Feb 2020 11:40:12.016 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8315:C 11 Feb 2020 11:40:12.016 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=8315, just started
8315:C 11 Feb 2020 11:40:12.016 # Configuration loaded
8315:M 11 Feb 2020 11:40:12.017 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 8315
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

8315:M 11 Feb 2020 11:40:12.017 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8315:M 11 Feb 2020 11:40:12.017 # Server initialized
8315:M 11 Feb 2020 11:40:12.017 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
8315:M 11 Feb 2020 11:40:12.017 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
8315:M 11 Feb 2020 11:40:12.018 * Ready to accept connections
  1. 解決當前的警告提示
  • tcp-backlog

The backlog argument defines the maximum length to which the queue of pending connections for sockfdmay grow. If a connection request arrives when the queue is full, the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that a later reattempt at connection succeeds.redis

backlog參數控制的是三次握手的時候server端收到client ack確認號以後的隊列值。centos

[root@centos ~]# echo 511 > /proc/sys/net/core/somaxconn
  • vm.overcommit_memory
    0、表示內核將檢查是否有足夠的可用內存供應用進程使用;若是有足夠的可用內存,內存申請容許;不然,內存申請失敗,並把錯誤返回給應用進程。 一、表示內核容許分配全部的物理內存,而無論當前的內存狀態如何。 二、表示內核容許分配超過全部物理內存和交換空間總和的內存
[root@centos ~]# echo "vm.overcommit_memory = 1" >/etc/sysctl.conf
  • transparent hugepage
    大頁內存動態分配,須要關閉讓redis 負責內存管理。
[root@centos ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
  1. 重啓一下服務
# 再次啓動服務,警告信息沒有了。
[root@centos ~]# /apps/redis/bin/redis-server /apps/redis/etc/redis.conf 
1847:C 13 Feb 2020 12:03:59.281 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1847:C 13 Feb 2020 12:03:59.281 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1847, just started
1847:C 13 Feb 2020 12:03:59.281 # Configuration loaded
1847:M 13 Feb 2020 12:03:59.282 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1847
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1847:M 13 Feb 2020 12:03:59.282 # Server initialized
1847:M 13 Feb 2020 12:03:59.282 * DB loaded from disk: 0.000 seconds
1847:M 13 Feb 2020 12:03:59.282 * Ready to accept connections
  1. 編輯redis服務啓動腳本
[root@centos ~]# cat /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
  1. 添加redis用戶
# 添加用戶和組
[root@centos ~]# groupadd -g 1001 redis && useradd -u 1001 -g 1001 redis -s /sbin/nologin
# 數據目錄設置全部者所屬組
[root@centos ~]# chown redis.redis -R /apps/redis/
  1. system啓動測試
# 開啓redis並設爲開機啓動
[root@centos ~]# systemctl enable --now redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

# 查看端口
[root@centos ~]# ss -tnl
State      Recv-Q Send-Q                                         Local Address:Port                                                        Peer Address:Port              
LISTEN     0      128                                                127.0.0.1:631                                                                    *:*                  
LISTEN     0      100                                                127.0.0.1:25                                                                     *:*                  
LISTEN     0      128                                                127.0.0.1:6010                                                                   *:*                  
LISTEN     0      128                                                127.0.0.1:6011                                                                   *:*                  
LISTEN     0      128                                                        *:43108                                                                  *:*                  
LISTEN     0      511                                                127.0.0.1:6379                                                                   *:*  # 這個爲redis端口                
LISTEN     0      128                                                        *:111                                                                    *:*                  
LISTEN     0      5                                              192.168.122.1:53                                                                     *:*                  
LISTEN     0      128                                                        *:22                                                                     *:*                  
LISTEN     0      128                                                    [::1]:631                                                                 [::]:*                  
LISTEN     0      100                                                    [::1]:25                                                                  [::]:*                  
LISTEN     0      128                                                    [::1]:6010                                                                [::]:*                  
LISTEN     0      128                                                    [::1]:6011                                                                [::]:*                  
LISTEN     0      128                                                     [::]:59279                                                               [::]:*                  
LISTEN     0      128                                                     [::]:111                                                                 [::]:*                  
LISTEN     0      128                                                     [::]:22                                                                  [::]:*
  1. 客戶端鏈接redis測試
# 這裏尚未把這個命令加到PATH變量裏
[root@centos ~]# /apps/redis/bin/redis-cli 
127.0.0.1:6379> info
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b0887378c143d6e9
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:2088
run_id:e0bbd2dc1561d1610565c6c8fb61aa817e30924c
tcp_port:6379
  1. 建立命令軟鏈接(也能夠把這個路徑加到PATH變量裏面)
[root@centos ~]# ln -sv /apps/redis/bin/redis-* /usr/bin/
‘/usr/bin/redis-benchmark’ -> ‘/apps/redis/bin/redis-benchmark’
‘/usr/bin/redis-check-aof’ -> ‘/apps/redis/bin/redis-check-aof’
‘/usr/bin/redis-check-rdb’ -> ‘/apps/redis/bin/redis-check-rdb’
‘/usr/bin/redis-cli’ -> ‘/apps/redis/bin/redis-cli’
‘/usr/bin/redis-sentinel’ -> ‘/apps/redis/bin/redis-sentinel’
‘/usr/bin/redis-server’ -> ‘/apps/redis/bin/redis-server’

# 命令鏈接測試
[root@centos ~]# redis-cli 
127.0.0.1:6379> info
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b0887378c143d6e9
redis_mode:standalone
os:Linux 3.10.0-1062.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:2088
run_id:e0bbd2dc1561d1610565c6c8fb61aa817e30924c
tcp_port:6379
uptime_in_seconds:755
uptime_in_days:0
[root@centos ~]# ll /apps/redis/bin/
total 32772
-rwxr-xr-x 1 redis redis 4366824 Feb 11 11:33 redis-benchmark   # redis性能測試工具
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-check-aof   # AOF文件檢查工具
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-check-rdb   # RDB文件檢查工具 
-rwxr-xr-x 1 redis redis 4807896 Feb 11 11:33 redis-cli         # 客戶端工具
lrwxrwxrwx 1 redis redis      12 Feb 11 11:33 redis-sentinel -> redis-server # 哨兵軟鏈接到server
-rwxr-xr-x 1 redis redis 8125216 Feb 11 11:33 redis-server      # redis 服務啓動命令
**以上就是redis的安裝方法和一些小問題的解決方法了!**
相關文章
相關標籤/搜索