# 007. 单机版 redis 的安装以及 redis 生产环境启动方案

TIP

都在 /usr/local 目录中安装和下载软件。有的会自动安装到目录。 有一部分就是我们手工安装到该目录下的

# 安装单机版 redis

大家可以自己去官网下载,当然也可以用课程提供的压缩包

安装依赖 tcl,如果先安装 redis 的话,会报错,所以需要安装一下 tcl

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd  /usr/local/tcl8.6.1/unix/
./configure  
make && make install
1
2
3
4
5

安装 redis

使用 redis-3.2.8.tar.gz(截止 20174 月的最新稳定版)
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install
1
2
3
4

在等待很长时间后,最后有一个错误信息

!!! WARNING The following tests failed:

*** [err]: Server is able to generate a stack trace on selected systems in tests/integration/logging.tcl
expected stack trace not found into log file
*** [err]: Test replication partial resync: no backlog (diskless: yes, reconnect: 1) in tests/integration/replication-psync.tcl
Expected condition '[s -1 sync_partial_err] > 0' to be true ([s -1 sync_partial_err] > 0)
Cleanup: may take some time... OK
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/local/redis-3.2.8/src'
make: *** [test] Error 2
1
2
3
4
5
6
7
8
9
10

该错误。暂时不知道是否影响安装,但是这里的命令是 && 连接的,所以后面的 make install 没有被执行。

这里单独执行 make install。完成安装试试

[root@eshop-cache01 redis-3.2.8]# make install
cd src && make install
make[1]: Entering directory `/usr/local/redis-3.2.8/src'
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/redis-3.2.8/src
1
2
3
4
5
6
7
8
9
10
11

安装还是会出现提示说 test 没有通过,但是这里是一个 Hint(提示),经过后面启动方案测试后,可以正常启动

# redis 的生产环境启动方案

如果一般的学习课程,你就随便用 redis-server 启动一下 redis,做一些实验,这样的话没什么意义

在生产环境是要把 redis 作为一个系统的 daemon 进程去运行的,每次系统启动 redis 进程一起启动

  1. redis/utils 目录下,有个 redis_init_script 脚本

  2. 将 redis_init_script 脚本拷贝到 /etc/init.d 目录中

    cp redis_init_script /etc/init.d/
    # 将文件修改为 redis_6379,6379 是 redis 的默认端口号
    cd /etc/init.d/
    mv redis_init_script redis_6379
    
    1
    2
    3
    4

    端口号的配置也在该脚本中配置的 REDISPORT=6379

  3. 创建两个目录:

    • /etc/redis(存放 redis 的配置文件)
    • /var/redis/6379(存放 redis 的持久化文件)
    mkdir /etc/redis
    mkdir /var/redis/
    mkdir /var/redis/6379
    
    1
    2
    3
  4. 修改 redis 配置文件 redis.conf

    该文件默认在 redis 安装目录下,拷贝到 /etc/redis 目录中,修改名称为 6379.conf

    cp /usr/local/redis-3.2.8/redis.conf /etc/redis/
    cd /etc/redis/
    mv redis.conf 6379.conf
    
    1
    2
    3

    这里为什么要这样修改呢?是因为 redis_init_script 脚本中的 conf 配置指定了该目录下的 端口号.conf 文件

    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    
    1
    2
  5. 修改 redis.conf(6379.conf) 中的部分配置为生产环境

    daemonize	yes							          // 让redis以daemon进程运行
    pidfile /var/run/redis_6379.pid     // 设置redis的pid文件位置
    port  6379						            // 设置 redis的监听端口号
    dir /var/redis/6379				      //设置持久化文件的存储位置
    
    1
    2
    3
    4

    建议在 windows 下使用文本编辑器搜索修改后在上传覆盖

  6. 启动 redis

    # 执行 redis_6379 脚本
    cd /etc/init.d
    # 如果没有执行权限的话,修改执行权限 ,可以使用 chmod u+x redis_6379
    # chmod 777 redis_6379
    ./redis_6379 start
    
    1
    2
    3
    4
    5
  7. 确认 redis 进程是否启动,ps -ef | grep redis

  8. 让 redis 跟随系统启动自动启动

    使用 chkconfig 命令开启该文件的系统服务,
    可以在 redis_6379 配置文件中上面添加  chkconfig 的注释信息
    如下,不要在 #!/bin/sh 上面添加
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    
    # chkconfig:   2345 90 10
    # description:  Redis is a persistent key-value database
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    添加完成之后,使用以下命令开启随系统启动

    chkconfig redis_6379 on
    
    1

    有关 chkconfig 命令的更多信息 (opens new window) 参考百度

# redis cli的使用

# 停止本机的 6379 端口的 redis 进程
redis-cli shutdown
# 关闭指定机器的 redis,不加 shutdown 命令的话就是登陆到 cli
redis-cli -h 127.0.0.1 -p 6379 shutdown
# ping redis 的端口,看是否正常
redis-cli PING
# 默认连接本机 6379 的redis
redis-cli
# 在 cli 中可以使用 redis 的命令,下面使用最贱的 set 和 get 命令测试
SET k1 v1
GET k1
1
2
3
4
5
6
7
8
9
10
11

# 小结

redis 的技术包括 4 块:

  • 各种数据结构和命令的使用,包括 java api 的使用
  • 一些特殊的解决方案的使用,pub/sub 消息系统、分布式锁、输入的自动完成,等等
  • 日常的管理相关的命令
  • 企业级的集群部署和架构

我们这套课程,实际上是针对企业级的大型缓存架构,用的项目是真实的大型电商网站的详情页系统(缓存)

我们首先讲解的第一块,其实就是企业级的大型缓存架构中的 redis 集群架构(海量数据、高并发、高可用),最最流行,最最常用的分布式缓存系统

所以前面三块的知识不在本课程范围内,当然后面我们做商品详情页系统的业务开发的时候,当然也会去用 redis 的一些命令。

redis 基础知识可以通过教程、书籍、视频去学习

本课程会重点讲解 redis 持久化、主从架构、复制原理、集群架构、数据分布式存储原理、哨兵原理、高可用架构

本课程与网上一些 redis 的教程有什么不同呢?持久化、集群、哨兵这些都是泛泛而讲,简单带你搭建一下,而我会深入集群架构的底层原理,哨兵的底层原理,用一线的经验告诉你 redis 的大规模的架构师如何去支撑海量数据、高并发、高可用的