文章目录
  1. 1 概述
    1. 1.1 功能
    2. 1.2 特点
  2. 2 CentOS 环境下安装
    1. 2.1 下载与编译
    2. 2.2 设置环境变量
    3. 2.3 安装成服务
      1. 2.3.1 整理安装脚本
      2. 2.3.2 调整系统参数
        1. 2.3.2.1 设置客户端连接密码
        2. 2.3.2.2 上调系统最大连接数
        3. 2.3.2.3 调整分配内存检查方式
        4. 2.3.2.4 关闭系统透明大页功能
      3. 2.3.3 安装成服务
      4. 2.3.4 手动启停服务
    4. 2.4 防火墙放行
    5. 2.5 客户端验证
    6. 2.6 卸载
  3. 3 Windows 环境下安装
    1. 3.1 下载
    2. 3.2 解压并配置
    3. 3.3 启动服务端
    4. 3.4 启动客户端
    5. 3.5 安装为服务
  4. 4 Redis 浏览器 Redis Desktop

缓存在高性能的企业分布式应用中扮演着至关重要的作用,而 Redis 是缓存中间件中的佼佼者。本文总结了 Redis 服务器的安装(CentOS/Windows环境),Redis 常用命令及其界面工具的使用。

作者:王克锋
出处:https://kefeng.wang/2017/08/10/redis-installation/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1 概述

官网: redis.iodocumentation

1.1 功能

Redis=REmote DIctionary Server,是一个由Salvatore Sanfilippo写的key-value存储系统。
是一个BSD协议开源的、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Map), 列表(List), 集合(Sets) 和 有序集合(Sorted Sets)等类型。

1.2 特点

  • 数据保存在内存中,磁盘只是为了持久化;
  • 存储的数据类型很丰富(字符串,列表,集合,可排序集合,哈希),这是memcached不具备的;
  • 发布与订阅,支持数据复制至从服务器,这是memcached不具备的;
  • 操作都是原子的。

2 CentOS 环境下安装

2.1 下载与编译

V4.0.8,发布于 2008-02-02。下载源码,编译。

1
2
3
4
5
6
## https://redis.io/download
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
sudo tar xzf redis-4.0.8.tar.gz -C /opt
cd /opt/redis-4.0.8
sudo make ## create $REDIS_HOME/src/redis-*
sudo make install ## create linker /usr/local/bin/redis-*

2.2 设置环境变量

1
2
3
## sudo vim /etc/profile ## 所有用户有效
export REDIS_HOME=/opt/redis-4.0.8
export PATH=$PATH:$REDIS_HOME/bin

文件保存后,Linux用户重新登录后生效。

2.3 安装成服务

2.3.1 整理安装脚本

此脚本是为了封装程式化操作,以便接下来在单机实验多个 Redis 实例时,对每个实例(端口)重复执行。
所依赖脚本源码在这里:utils/install_server.sh

1
2
3
4
5
6
7
8
9
## sudo vim $REDIS_HOME/utils/install_server_x.sh
## sudo chmod +x $REDIS_HOME/utils/install_server_x.sh

sudo REDIS_PORT=$1 \
REDIS_CONFIG_FILE=/etc/redis/$1.conf \
REDIS_LOG_FILE=/var/log/redis_$1.log \
REDIS_DATA_DIR=/var/lib/redis/$1 \
REDIS_EXECUTABLE=`command -v redis-server` \
$REDIS_HOME/utils/install_server.sh

将来执行 install_server_x.sh 6379(参数为服务监听端口号),会完成以下操作:

  • 设定监听端口 6379
  • 设定配置文件 /etc/redis/6379.conf
  • 设定日志文件 /var/log/redis_6379.log
  • 设定数据目录 /var/lib/redis/6379
  • 设定服务器可执行文件 /usr/local/bin/redis-server
  • 设定客户端可执行文件 /usr/local/bin/redis-cli
  • 创建服务 redis_6379
  • 启动服务 redis_6379

2.3.2 调整系统参数

2.3.2.1 设置客户端连接密码

如果需要设置 Redis 客户端连接的密码,则调整模板文件(假设密码为 passwd):

  • 配置文件 $REDIS_HOME/redis.conf:设置为 requirepass passwd
  • 服务脚本 $REDIS_HOME/utils/redis_init_script.tpl:修改为 $CLIEXEC -a passwd -p $REDISPORT shutdown

如果服务安装之前忘记了调整模板文件,则要在服务安装后手工调整:

  • 配置文件 /etc/redis/{PORT}.conf
  • 服务脚本 /etc/init.d/redis_{PORT}
2.3.2.2 上调系统最大连接数
  • 警告日志:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  • 参数含义:Redis 参数 tcp-backlog 表示服务器容许积压的客户端连接数(初始设定为 511),并发量大时要上调该参数值。但受限于 Linux 系统定义的限值(参数 net.core.somaxconn,默认值为 128)。
  • 调整系统上限为 1024 或更高:
    1
    2
    3
    echo "net.core.somaxconn=1024" | sudo tee -a /etc/sysctl.conf ## 永久有效
    sudo sysctl -p ## 立即生效
    sudo sysctl net.core.somaxconn ## 查看结果
2.3.2.3 调整分配内存检查方式
  • 警告日志:WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
  • 参数含义:表示内核在分配内存时候做检查的方式,0(GUESS 默认值)表示根据是否有足够的可用内存再决定,1(ALWAYS)表示总是允许分配内存,2(NEVER)表示允许分配超过所有物理内存和交换空间总和的内存。
  • 调整取值为 1(ALWAYS):
    1
    2
    3
    echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf ## 永久有效
    sudo sysctl -p ## 立即生效
    sudo sysctl vm.overcommit_memory ## 查看结果
2.3.2.4 关闭系统透明大页功能
  • 警告日志:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis.
  • 参数含义:默认值是 always,使用透明大页,可能导致 Redis 延迟和内存使用问题。
  • 调整取值为 never:
    1
    2
    echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled ## 立即生效
    echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" | sudo tee -a /etc/rc.local ## 永久生效

2.3.3 安装成服务

执行命令 $REDIS_HOME/utils/install_server_x.sh 6379
自动生成配置文件 /etc/redis/6379.conf,关键内容如下(可参考我的文章 Redis 服务器配置参数详解):

1
2
3
4
5
6
port 6379 ## 服务监听端口号
daemonize yes ## 守护进程模式,否则启动时卡死而超时
requirepass passwd ## 客户端连接时的密码
pidfile /var/run/redis_6379.pid ## 必须与 redis.service 一致
logfile /var/log/redis_6379.log ## 必须指定绝对路径
dir /var/lib/redis/6379 ## 数据目录

2.3.4 手动启停服务

服务已设置为开机自动启动。如果参数调整后想立即生效,则要手工启停:

1
2
3
4
5
sudo service redis_6379 stop ## 停止
sudo service redis_6379 start ## 启动
sudo service redis_6379 restart ## 重启
/etc/init.d/redis_6379 status ## 查看服务运行状态
redis-cli -a passwd info server ## 查看服务信息

2.4 防火墙放行

如果非本机客户端需要连接 Redis,必须把监听端口放行。

1
2
3
### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

除了服务监听端口,服务监听地址,也要根据客户端情况调整:

  • 客户端在本机:bind 127.0.0.1,只允许本机连接,最安全
  • 客户端在局域网:bind 192.x.x.x,只允许本机和局域网连接
  • 客户端在因特网:bind 0.0.0.0,允许所有机器连接,最不安全

2.5 客户端验证

Redis 命令请查阅 Redis 客户端命令参考

1
2
3
[admin@centos] /home/admin $ redis-cli -a passwd
127.0.0.1:6379> keys *
127.0.0.1:6379> quit

2.6 卸载

如果要重新安装,则需要先卸载。
所谓卸载,就是对安装动作的撤消操作:utils/install_server.sh

1
2
3
4
5
6
7
8
9
10
11
## 卸载服务,每个实例(端口)的服务都要停止、卸载
# sudo chkconfig --list
sudo service redis_6379 stop
sudo chkconfig --del redis_6379

## 删除文件
sudo rm -rf /etc/redis ## {port}.conf
sudo rm -rf /var/lib/redis ## dump.rdb
sudo rm -rf /var/{run,log}/redis_*.*
sudo rm -rf /usr/local/bin/redis-*
sudo rm -rf $REDIS_HOME

3 Windows 环境下安装

注意:Redis 官方没有 Windows 版本,只能从 MicrosoftArchive 下载。
Windows 版不稳定,而且好久不更新,建议仅用于 Windows 试验环境。

3.1 下载

V3.0.504,发布于 2006-07-01。最新版本

可采用绿色版,解压至 {???}\Redis-x64-3.0.504

3.2 解压并配置

{???}\Redis-x64-3.0.504\redis.windows.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 需要修改的参数
daemonize yes # 以后台方式启动(否则服务启动时会超时)
bind 127.0.0.1 # 绑定的主机(默认为0.0.0.0):尽量缩小范围
maxclients 32 # 客户端最大并发数(0为不限)
maxmemory 10485760 # 指定最大内存 10M(达到时清除过期或早期)
requirepass passwd # 设置 client/slave 连接时的密码(AUTH passwd提供)

## 日志级别(debug / verbose / notice[默认] / warning)和文件
loglevel verbose
logfile redis.log

## 无需修改的参数
port 6379 # 监听端口:建议默认不要修改
timeout 0 # 客户端闲置关闭时长(秒), 0表示不超时
loglevel notice # 日志级别, debug, verbose, notice(默认), warning
save [s] [n] # s 秒内有 n 次更新操作,就同步至数据文件
rdbcompression yes # 存储前压缩(省空间但耗时)

## 主从相关参数
slaveof <masterip> <masterport> # 自身作为slave, 指定master的host:port
masterauth <master-password> # 自身作为slave, 指定master的密码

3.3 启动服务端

1
2
cd /d {???}\Redis-x64-3.0.504
redis-server.exe redis.windows.conf # 如果不指定配置文件,则不加载任何配置,采用默认配置

CTRL+C 退出,或者关闭 DOS 窗口

3.4 启动客户端

1
2
redis-cli.exe # host:port 可缺省为 localhost:6379
redis-cli.exe -h localhost -p 6379 -a passwd

3.5 安装为服务

参考资料:Running Redis as a Service

1
2
3
4
5
6
7
8
9
10
11
12
13
## 【以“管理员权限”(避免多次询问)打开 cmd.exe 再执行】
cd /d "{???}\Redis-x64-3.0.504"

## 默认服务名为 Redis,可自定义: --service-name RedisNew
## 【不推荐】可指定日志级别,覆盖配置文件的定义:--loglevel notice
redis-server.exe --service-install redis.windows.conf

## 服务安装后,Windows 启动时服务会自动启动,但本次必须手工启动:
redis-server.exe --service-start

## 如需停止与卸载,执行:
redis-server.exe --service-stop
redis-server.exe --service-uninstall

4 Redis 浏览器 Redis Desktop

以 GUI 方式更方便地查看、操作 Redis 数据。
Download Redis Desktop Manager
redis-desktop-manager-0.9.0.684.exe

文章目录
  1. 1 概述
    1. 1.1 功能
    2. 1.2 特点
  2. 2 CentOS 环境下安装
    1. 2.1 下载与编译
    2. 2.2 设置环境变量
    3. 2.3 安装成服务
      1. 2.3.1 整理安装脚本
      2. 2.3.2 调整系统参数
        1. 2.3.2.1 设置客户端连接密码
        2. 2.3.2.2 上调系统最大连接数
        3. 2.3.2.3 调整分配内存检查方式
        4. 2.3.2.4 关闭系统透明大页功能
      3. 2.3.3 安装成服务
      4. 2.3.4 手动启停服务
    4. 2.4 防火墙放行
    5. 2.5 客户端验证
    6. 2.6 卸载
  3. 3 Windows 环境下安装
    1. 3.1 下载
    2. 3.2 解压并配置
    3. 3.3 启动服务端
    4. 3.4 启动客户端
    5. 3.5 安装为服务
  4. 4 Redis 浏览器 Redis Desktop