Redis 服务器单机的安装

缓存在高性能的企业分布式应用中扮演着至关重要的作用,而 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。下载源码,编译。

## 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 设置环境变量

## 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

## 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 或更高:
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):
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:
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 服务器配置参数详解):

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 手动启停服务

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

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,必须把监听端口放行。

### 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 客户端命令参考

[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

## 卸载服务,每个实例(端口)的服务都要停止、卸载
# 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.zip
- 安装版:Redis-x64-3.0.504.msi
可采用绿色版,解压至 {???}\Redis-x64-3.0.504

3.2 解压并配置

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

## 需要修改的参数
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 启动服务端

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

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

3.4 启动客户端

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

3.5 安装为服务

参考资料:Running Redis as a Service

## 【以“管理员权限”(避免多次询问)打开 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

猜你喜欢

转载自blog.csdn.net/kefengwang/article/details/81165676