Win/Mac/CentOS/Ubuntu 安装和配置Redis

Win

  1. Win下载redis数据库有两种方式

  2. 下载RESP.app图形化客户端界面

    • 在这里插入图片描述
  3. 配置Redis

  4. 启动Redis

    • redis.windows-service.conf:双击redis-server.exe启动redis时并不会加载此默认配置,估计是BUG导致。
    • redis.windows.conf:在redis目录下运行 redis-server.exe redis.windows.conf 启动redis时就会加载此配置
      • 推荐使用第方案二这种方式启动
  5. 加载到windows的服务中
    每次启动 redis-server redis.windows.conf 会很麻烦,可以加入到服务中,设置开机自启或者手动启动都可
    在这里插入图片描述
    代码如下

# --service-install注册到服务中 --loglevel日志级别 --service-name服务名称
redis-server.exe --service-install redis.windows.conf --loglevel notice --service-name redis

Mac

  1. redis压缩包安装
  2. 构建测试
    我没有放在 /usr/local 目录下,其实就和 Tomcat 一样放在自己知道的地方就好了。把文件压缩出来之后进入到文件中执行命令即可运行成功「后续会配置环境变量」。
# 进入到redis解压目录下构建测试
make test
 
# 如果报错如下:是因为苹果的Xcode指令出现了问题,可能是之前卸载时候没有卸载干净或者系统升级原因。重新安装一下即可
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

# 重新安装Xcode
xcode-select --install
# Xcode安装完毕如下
xcode-select: note: install requested for command line developer tools

# 重新执行一次编译测试
make test

显示OK代表测试成功,下面执行redis安装
在这里插入图片描述
3. 执行安装

make install

在这里插入图片描述
Mac图形化界面需要付费订阅下载Resp,app
在这里插入图片描述

在这里插入图片描述
4. 修改配置
vim 修改 redis.conf,通过 /关键字 可以根据关键字搜索

# /bind「默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0」
bind 127.0.0.1

# /daemonize「守护进程,修改为yes后即可后台运行」
daemonize yes 

# /requirepass「密码,设置后访问Redis必须输入密码」
requirepass 12345678

# /logile「日志文件,默认为空,不记录日志,可以指定日志文件名」
logfile "redis.log"

允许任意ip访问Redis
在这里插入图片描述
Redis挂载后台运行
在这里插入图片描述
设置链接Redis密码

设置Redis日志
在这里插入图片描述
查看运行状况
在这里插入图片描述

Linux

  1. redis压缩包安装
  2. 编译测试
# 进入到 redis 的解压目录
make test

# 如果提示如下报错则需要:安装最低不低于8.5版本的tcl
[root@ECSn4 redis-7.0.5]# make test
cd src && make test
make[1]: Entering directory `/root/redis-7.0.5/src'
    CC Makefile.dep
make[1]: Leaving directory `/root/redis-7.0.5/src'
make[1]: Entering directory `/root/redis-7.0.5/src'
#...其它信息
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/root/redis-7.0.5/src'
make: *** [test] Error 2

发现提示我们需要进入到src目录运行 make test

[root@ECSn4 redis-7.0.5]# cd src/
[root@ECSn4 src]# make test
    CC Makefile.dep
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1

提示我们需要安装不低于8.5的tcl

TCL:并不是我们熟悉的那个电子科技公司。而是一种编程语言「Tool Command Language」。Redis的安装运行离不开它,就像安装Apache服务器需要安装GCC来编译效果一样

方案一:通过 yum 在线安装

yum install -y tcl


方案二:通过官网手动下载压缩包安装

然后再继续编译测试和安装

make test

阿里云服务器配置

2核2G,IO优化型。CentOS7 64位

一路ok到这里就有开始警告了

警告很正常,不影响后续的安装。只是作为一种日志提醒用户注意事项

在这里插入图片描述
在这里插入图片描述
查看服务器的CPU资源百分比信息

top -bn1 -o "%CPU"

在这里插入图片描述
查看服务器的内存资源百分比信息

top -bn1 -o "%MEM"

在这里插入图片描述

查看服务器内存占用详细信息

free -h

在这里插入图片描述
最后总结发现
CPU占用已经达到了 98%
内存占用率大约有35%
所以这cpu的性能还是被redis狠狠的蔑视了
我们继续查看一下途中提示报错的行数 13,113,73,89 代码

cat -n memefficiency.tcl

13
在这里插入图片描述

73
在这里插入图片描述
89
在这里插入图片描述

113
在这里插入图片描述
发现一头雾水怎么办?我们可以根据报错关键词 $max_latency 来查看
在这里插入图片描述

  1. 由于高碎片化、100赫兹以及活动碎片整理周期最大设置为75
  2. 我们预计最大延迟不会比7.5ms高很多,但由于罕见的缓慢,阈值被设置得更高

在这里插入图片描述

  1. 确保我们在AOF加载期间有碎片整理命中
  2. 确保碎片整理程序做了足够的工作,以在加载过程中保持较低的碎片。
  3. 我们无法检查它是否一直在下降,因为我们不会等待完整的碎片整理周> 期完成
  4. 由于AOF包含简单(快速)的set命令(加载过程中cron每1000个命令运行一次)
  5. 仍然不会在很长一段时间内阻止加载。

发现还是贫穷限制了我们的redis,云服务器性能已经被redis警告了。
最后我们测试一下安装能否正常进行

make install

发现安装成功,虽然有一个小提示让我们运行 make test
在这里插入图片描述

  1. 启动redis
# 进入redis安装目录 
cd /usr/local/src/redis-6.2.6
# 启动
redis-server redis.conf
  1. 停止redis
# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,
# 因为之前配置了密码,因此需要通过 -u 来指定密码
redis-cli -u 12345678 shutdown

也可以通过关闭进程来关闭redis

# 查看运行 redis 命令的 PID
ps -ef | grep redis
# 根据PID关闭redis进程
kill -9 PID
  1. 开机自启
# 首先创建一个系统服务文件
vi /etc/systemd/system/redis.service

内容如下

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
# 一般都安装在 /usr/local/bin 目录下
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-7.0.5/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后重载服务

systemctl daemon-reload 

现在,我们可以用下面这组命令来操作redis了:

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

执行一下命令即可redis开机自启

systemctl enable redis

Ubuntu

  1. 自动安装
# 搜索redis
apt search redis
# 安装 redis
apt install redis
  1. 手动redis压缩包安装

  2. 构建测试

# 解压
tar -zxvf redis-7.2.2.tar.gz
# 编译
cd redis-7.2.2
# 编译测试,如果通过之后就会执行 make 命令进行安装
make test && make

4.报错解决
找不到命令 makesudo apt install make
在这里插入图片描述
执行 make 出现 cc not found、pkg-config not found
在这里插入图片描述
cc需要安装gcc编译器,这里介绍一个工具包 build-essential
GNU Compiler Collection (GCC) 是一系列编译器的集合,它包括 C,C++,Objective-C,Fortran,Ada,Go,和 D语言。很多开源的项目包括 GNU 工具和 Linux Kernel 都是用 GCC 编译的。此处的Redis的安装也离不开 GCC 编译器
在这里插入图片描述

默认的 Ubuntu 软件源包含了一个名为“build-essential”的软件集,它包含了 GCC 、G++、Make软件及其它编译必备软件

因此前文的 sudo apt install make 也可以因此省略掉。这里顺序没有提到前边是为了看到错误提示,知道我们需要安装哪些软件。了解到这一块知识之后就可以先安装 build-essential 在安装 pkg-config

报错提示进入到src目录
在这里插入图片描述
提示没有jemalloc/jemalloc.h:没有那个文件或目录

经过网友的解释:首先打开redis的README.md文档
在这里插入图片描述
在 “make” 是指定分配器通常指的是在编译过程中选择使用特定的内存分配器(memory allocator)来管理分配内存

其实这是一个错误的方案,README.md文档中也说了 jemalloc 的内存管理比 libc 内存管理的碎片更少那么为什么还要选择 libc 呢?

导致这个错误的原因

错误的本质是在开始执行 make 时由于未安装 gcc 导致的错误,这个错误导致编译失败有残留文件。然后安装 gcc 之后再执行 make,就会出现 jemalloc/jemalloc.h:没有那个文件或目录 ,我们只需要清理一下再重新编译就好了

make distclean && make test清理残留、测试通过之后再 make 构建或者直接 rm- rf redis7.2.2 删除解压的文件夹之后在 tar -zxvf redis7.2.2.tart.gz 之后进入到 redis的src 目录下重新运行 make test && make即可

如果出现了如下报错:using serial compilation of 2 LTRANS jobs

命令行连接Redis服务器

Win,Mac,Linux均可通用连接Redis服务器

redis-cli [options] [commands]
redis-cli -h 127.0.0.1 -p 6379

在这里插入图片描述

设置了密码之后就需要通过密码验证才能使用redis命令行客户端

常用配置总结

# /bind 连接IP
bind 127.0.0.1

# /port 进程端口
port 6379

# /dir 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .

# /datebase 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 16

# /daemonize Mac/Linux可以设置守护进程【Win不支持】
daemonize yes 

# /requirepass「密码,设置后访问Redis必须输入密码」
requirepass 12345678

# /logile「日志文件,默认为空,不记录日志,可以指定日志文件名」
logfile "redis.log"

# /maxmemory 最大内存「单位是字节,一般推荐Redis设置内存为最大物理内存的四分之三,假设服务器1G内存所以设置0.75G,换成byte是751619276.」
maxmemory 751619276

# maxmemory-policy「拒绝策略」
maxmemory-policy allkeys-lru
# 1.noeviction:不会继续服务写请求(del请求可以继续服务),读请求可以继续进行。这样可以保证不会丢失数据,但是会让线上的业务不能持续进行。这是默 认的淘汰策略
# 2.volatile-lru: 尝试淘汰设置了过期时间的 key,最少使用的 key 优先被淘汰。 没有设置过期时间的 key不会被淘汰,这样可以保证需要持久化的数据不会突然丢失
# 3.volatile-ttl:跟上面几乎一样,不过淘汰的策略不是 LRU,而是比较 key 的剩余寿命时的值,ttl越小越优先被淘汰
# 4.volatile-random:跟上面几乎一样,不过淘汰的 key 是过期 key 集合中随机的 key
# 5.allkeys-lru:区别于 volatile-lru,这个策略要淘汰的 key 对象是全体的 key 集 合,而不只是过期的 key 集合。这意味着一些没有设置过期时间的 key 也会被淘汰
# 6.allkeys-random:跟上面几乎一样,不过淘汰的 key 是随机的 key
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值