zoukankan      html  css  js  c++  java
  • 编译安装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/
    在这里插入图片描述

    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.

    backlog参数控制的是三次握手的时候server端收到client ack确认号之后的队列值。

    [root@centos ~]# echo 511 > /proc/sys/net/core/somaxconn
    
    • vm.overcommit_memory
      0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 2、表示内核允许分配超过所有物理内存和交换空间总和的内存
    [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的安装方法和一些小问题的解决方法了!**
  • 相关阅读:
    第13组 Beta (2/6)(俞子君)
    第13组 Beta (1/6)(俞子君)
    第13组 Alpha (6/6)(俞子君)
    第13组 Alpha (5/6)(俞子君)
    第13组 Alpha (4/6)(俞子君)
    第13组 Alpha (3/6)(俞子君)
    第13组 Alpha (2/6)(俞子君)
    番茄蛋花汤口罩识别系统汇报
    β(56/6)
    β(34/6)
  • 原文地址:https://www.cnblogs.com/www233ii/p/12303139.html
Copyright © 2011-2022 走看看