redis安装(小节1)

235 阅读3分钟

redis安装(小节1)

Linux安装Redis及使用

官方下载地址: download.redis.io/releases/

实验:windows 安装 redis

  1. Windows 版 Redis 下载地址: github.com/MicrosoftAr… 强烈不推荐在生产环境使用 Windows 系统运行 Redis 服务。

解压后目录 图片.png

  1. 编辑配置文件并执行 redis-server.exe:
  1. cd C:\Users\ZhangShiJie\Desktop\Redis-x64-3.0.504
  2. redis-server.exe redis.windows.conf
  1. 验证redis服务端口
  1. netstat -t -n

实验:yum安装redis

安装epel源

~]# yum install epel-release -y

安装redis服务

~]# yum install redis -y

启动服务、并设为开机启动

~]# systemctl start redis
~]# systemctl enable redis

查看端口号

~]# ss -ntlp |grep redis
LISTEN     0      128    127.0.0.1:6379                     *:*                   users:(("redis-server",pid=4760,fd=4))

redis命令工具行

[root@controller1 ~]# redis-cli
127.0.0.1:6379> info
...
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-957.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
...

实验:编译安装redis

下载当前最新 release 版本 redis 源码包:

download.redis.io/releases/

官网提供了交互式的教程

try.redis.io/ 图片.png

安装epel源及相关依赖包

~]# yum install -y epel-release
~]# yum install -y make wget gcc gcc-c++

下载redis包

~]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz

解压缩、编译安装

~]# tar xzf redis-5.0.5.tar.gz

~]# cd redis-5.0.5/

#指定安装目录
redis-5.0.5]# make PREFIX=/apps/redis install

redis-5.0.5]# cp redis.conf /apps/redis/etc/

前台启动redis

#启动后面跟redis文件所在位置'/apps/redis/etc/redis.conf'
redis-5.0.5]# /apps/redis/bin/redis-server /apps/redis/etc/redis.conf

解决警告提示

图片.png

  1. backlog 参数控制的是三次握手的时候 server 端收到 client ack 确认号之后的队列值
~]# echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
~]# sysctl -p
  1. 内核允许分配所有的物理内存

0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2:表示内核允许分配超过所有物理内存和交换空间总和的内存

~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
~]# sysctl -p
  1. 开启大页内存动态分配,需要关闭让 redis 负责内存管理。
~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

再次启动 redis,警告就没了

图片.png

编辑 redis 服务启动脚本

[root@redis ~]# vim /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=/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

注意ExecStart这项,安装路径和配置文件路径要对应

写到开机启动项中、并加载权限

redis-5.0.5]# vim /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled    <--

redis-5.0.5]# chmod a+x /etc/rc.d/rc.local

创建 redis 用户和数据目录

redis-5.0.5]# useradd -s /sbin/nologin redis
redis-5.0.5]# mkdir -pv /apps/redis/{etc,logs,run,data}

#更改权限
redis-5.0.5]# chown redis.redis /apps/redis/ -R

验证 redis 启动服务

redis-5.0.5]# systemctl daemon-reload
redis-5.0.5]# systemctl enable redis
redis-5.0.5]# systemctl restart redis

创建软链接

redis-5.0.5]# ln -sv /apps/redis/bin/redis* /usr/local/sbin

启动

#编译安装后的命令
 redis-5.0.5]# ll /apps/redis/bin/
total 32736
-rwxr-xr-x 1 redis redis 4366680 Nov 27 13:12 redis-benchmark   #redis性能测试工具
-rwxr-xr-x 1 redis redis 8111928 Nov 27 13:12 redis-check-aof   #AOF文件检查工具
-rwxr-xr-x 1 redis redis 8111928 Nov 27 13:12 redis-check-rdb   #RDB文件检查工具
-rwxr-xr-x 1 redis redis 4806912 Nov 27 13:12 redis-cli   #客户端工具
lrwxrwxrwx 1 redis redis      12 Nov 27 13:12 redis-sentinel -> redis-server   #哨兵,软连接到server
-rwxr-xr-x 1 redis redis 8111928 Nov 27 13:12 redis-server   #redis 服务启动命令

#redis交换窗口 “--help”可看帮助
redis-5.0.5]# /apps/redis/bin/redis-cli
127.0.0.1:6379> info
# Server
redis_version:5.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:573cee96230ac1e2
redis_mode:standalone

脚本:编译安装redis

#!/bin/bash

#函数
gecho() {
	echo -e "\e[1;32m $1 \e[0m"
	sleep 1
}
recho() {
	echo -e "\e[1;31m $1 \e[0m"
	sleep 1
}

#--------------参数修改-----------------
#└--1.redis版本
redis_ver="redis-4.0.14"
#└--2.安装目录
install_dir="/apps/redis"
#--------------------------------------

#下载解压
gecho "下载解压redis"
wget http://download.redis.io/releases/${redis_ver}.tar.gz 
tar xf ${redis_ver}.tar.gz
cd ${redis_ver}

#环境安装
gecho "环境安装"
yum install -y epel-release
yum install -y wget gcc gcc-c++ || ( recho "安装环境失败" ; exit )

#编译redis
gecho "编译redis"
make PREFIX=${install_dir} install  || recho "编译失败"
gecho "拷贝配置文件"
mkdir -p ${install_dir}/{etc,log,data,run}
cp redis.conf ${install_dir}/etc/
cp sentinel.conf ${install_dir}/etc/

#配置环境
gecho "配置环境"
echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p || recho "配置环境失败"
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local 
chmod +x /etc/rc.local 

#配置启动脚本
gecho "配置启动脚本"
cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=${install_dir}/bin/redis-server ${install_dir}/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
EOF

#启动服务
gecho "启动服务"
useradd -s /sbin/nologin redis  || recho "redis用户已存在"
chown redis.redis -R ${install_dir}
systemctl daemon-reload
systemctl restart redis
systemctl enable redis
ln -sv ${install_dir}/bin/redis* /usr/local/sbin

#修改配置文件
gecho "修改配置文件"
#快照文件保存路径
sed -i "s@^dir.*@dir \"${install_dir}/data\"@" ${install_dir}/etc/redis.conf
#redis日志路径
sed -i "/^logfile/s#^.*\$#logfile \"${install_dir}/log/redis.log\"#" ${install_dir}/etc/redis.conf