目錄html
[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
[root@centos ~]# yum install redis -y
[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 -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 *:*
[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
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
# 源碼包存放目錄 [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
[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
[root@centos ~]# mkdir /apps/redis/{etc,logs,data,run} -p # 查看目錄結構 [root@centos ~]# tree /apps/ /apps/ └── redis ├── data ├── etc ├── logs └── run
[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' # 最後報這個就是編譯完成
[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/
[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
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
[root@centos ~]# echo "vm.overcommit_memory = 1" >/etc/sysctl.conf
[root@centos ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 再次啓動服務,警告信息沒有了。 [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
[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
# 添加用戶和組 [root@centos ~]# groupadd -g 1001 redis && useradd -u 1001 -g 1001 redis -s /sbin/nologin # 數據目錄設置全部者所屬組 [root@centos ~]# chown redis.redis -R /apps/redis/
# 開啓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 [::]:*
# 這裏尚未把這個命令加到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
[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 服務啓動命令