在linux下安装Redis

Redis是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,在高并发的应用系统中有很多应用场景.简单介绍一下在linux 下如何安装redis.

下载源码编译和安装

3.2版本下载地址 
Redis官网

1
root@iZ25j7qhlyuZ:/usr/lib# wget -c http://download.redis.io/releases/redis-3.2.0.tar.gz

下载完成之后在当前目录下会得到一个压缩包redis-3.2.0.tar.gz,解压

1
root@iZ25j7qhlyuZ:/usr/lib# tar -xzvf redis-3.2.0.tar.gz redis-3.2.0/

编译和安装

1
2
root@iZ25j7qhlyuZ:/usr/lib# cd redis-3.2.0/
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# make && make install

接下来输出了一大堆日志,好难懂,应该没有ERROR就行

修改配置文件

首先修改内存分配策略

1
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# vi /etc/sysctl.conf

在尾部添加

1
vm.overcommit_memory=1

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存。
保存

1
:wq

使其生效

1
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# sysctl vm.overcommit_memory=1

拷贝redis.conf到etc目录下

1
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# cp -rvf redis.conf /etc/

然后编辑etc目录下的redis.conf

1
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# vi /etc/redis.conf

daemonize yes #转为守护进程,否则启动时会每隔5秒输出一行监控信息
save 60 1000 #保存快照的频率,这里表示每分钟1000次改变的话保存到磁盘
maxmemory 256000000 #分配内存
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
requirepass yangkui 客户端访问时的密码(当前密码是yangkui)
…其他配置请参照官方文档 官方文档配置部分
保存

1
:wq

启动Redis和测试连接
启动Redis服务

1
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# redis-server /etc/redis.conf

查看Redis服务进程看是否正常启动

1
2
3
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# ps -ef|grep redis
root 17896 1 0 17:22 ? 00:00:00 redis-server 127.0.0.1:6379
root 17903 14451 0 17:24 pts/0 00:00:00 grep --color=auto redis

启动正常,使用客户端工具连接

1
2
root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# redis-cli -h 127.0.0.1
127.0.0.1:6379>

连接正常,输入密码

1
2
3
127.0.0.1:6379> AUTH yangkui
OK
127.0.0.1:6379>

然后Redis 就可以用起来了

1
2
3
4
5
127.0.0.1:6379> set myblog yangkui.net
OK
127.0.0.1:6379> get myblog
"yangkui.net"
127.0.0.1:6379>

至此,一个Redis单机安装完成.
补充,设置Redis开机启动

  1. 编写开机自启动脚本
    1
    2
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# cp ./utils/redis_init_script /etc/init.d/redis
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# vi /etc/init.d/redis
  2. 修改配置文件中注释位置的路径
    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
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    PIDFILE=/var/run/redis.pid
    CONF="/etc/redis.conf"
    case "$1" in
    start)
    if [ -f $PIDFILE ]
    then
    echo "$PIDFILE exists, process is already running or crashed"
    else
    echo "Starting Redis server..."
    $EXEC $CONF
    fi
    ;;
    stop)
    if [ ! -f $PIDFILE ]
    then
    echo "$PIDFILE does not exist, process is not running"
    else
    PID=$(cat $PIDFILE)
    echo "Stopping ..."
    $CLIEXEC -p $REDISPORT -a yangkui shutdown
    while [ -x /proc/${PID} ]
    do
    echo "Waiting for Redis to shutdown ..."
    sleep 1
    done
    echo "Redis stopped"
    fi
    ;;
    *)
    echo "Please use start or stop as first argument"
    ;;
    esac
  3. 通过VI保存好之后,赋给它可执行的权限和设置开机启动
    1
    2
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# chmod 777 /etc/init.d/redis
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# vi /etc/rc.local #非Ubuntu系统的话通过 chkconfig redis on来设置开机启动
  4. 在exit 0 前面添加service redis start保存
    1
    2
    3
    service redis start
    exit 0
    ~
  5. 测试下脚本是不是好使
    先杀掉redis进程,然后
    1
    2
    3
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0# service redis start
    Starting Redis server...
    root@iZ25j7qhlyuZ:/usr/lib/redis-3.2.0#
    大功告成了