环境是win11的Linux子系统Ubuntu-18.04,安装方式是源码安装,也可以用apt安装(见本文最后参考资料),用的用户是默认用户(所以一些关键命令要注意用sudo,不用会报错)

安装:

joey@JoeyRedfield615:~$ sudo apt-get update
joey@JoeyRedfield615:~$ sudo apt-get -y install build-essential
#build-essential把所有要安装的全部都安装好。build-essential是c/c++语言的开发包,包含了gcc、g++、make、gdb和libc等函数库,很多工具。相当于已经安装了gcc,g++,make
joey@JoeyRedfield615:~$ sudo apt install wget
joey@JoeyRedfield615:~$ wget https://download.redis.io/releases/redis-6.2.0.tar.gz joey@JoeyRedfield615:~$ tar xzf redis-6.2.0.tar.gz 
# 移动到你要安装的目录,我这里安装到了/usr/local下

joey@JoeyRedfield615:~$ tar xzf redis-6.2.0.tar.gz
  joey@JoeyRedfield615:~$ ls
  redis-6.2.0 redis-6.2.0.tar.gz
  joey@JoeyRedfield615:~$ sudo mv ./redis-6.2.0 /usr/local/redis
  joey@JoeyRedfield615:~$ cd /usr/local/redis

 # 执行make命令(编译)

joey@JoeyRedfield615:/usr/local/redis$ sudo make

如果make出现错误,可能是前面安装命令没执行成功的问题,

joey@JoeyRedfield615:~/redis-6.2.0/src$ make
/bin/sh: 1: pkg-config: not found
CC adlist.o
/bin/sh: 1: cc: not found
Makefile:359: recipe for target 'adlist.o' failed
make: *** [adlist.o] Error 127

解决方法:

joey@JoeyRedfield615:~$ sudo apt-get update
joey@JoeyRedfield615:~$ sudo apt-get -y install build-essential

注意如果make命令已经报过错了,就要执行 make distclean  && make 命令,清除上一次残留文件

执行完make后,要测试编译是否成功

  Hint: It's a good idea to run 'make test' ;)

  make[1]: Leaving directory '/usr/local/redis/src'

  # 上面Hint和make[1]是make成功的提示,接下来要测试编译是否成功
joey@JoeyRedfield615:/usr/local/redis$ sudo make test

如果make test出错如下

joey@JoeyRedfield615:/usr/local/redis$ sudo make test
cd src && make test
make[1]: Entering directory '/usr/local/redis/src'
/bin/sh: 1: pkg-config: not found
CC Makefile.dep
/bin/sh: 1: pkg-config: not found
You need tcl 8.5 or newer in order to run the Redis test
Makefile:374: recipe for target 'test' failed
make[1]: *** [test] Error 1
make[1]: Leaving directory '/usr/local/redis/src'
Makefile:6: recipe for target 'test' failed
make: *** [test] Error 2

解决方案:

joey@JoeyRedfield615:~$ wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
# 这个要下载挺久的,我在后面放网盘链接了

joey@JoeyRedfield615:~$ sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/
joey@JoeyRedfield615:~$ cd  /usr/local/tcl8.6.1/unix/
joey@JoeyRedfield615:/usr/local/tcl8.6.1/unix$ sudo ./configure
joey@JoeyRedfield615:/usr/local/tcl8.6.1/unix$ sudo make
joey@JoeyRedfield615:/usr/local/tcl8.6.1/unix$ sudo make install

tcl8.6.1网盘链接:https://pan.baidu.com/s/1BmLkY0oV636nka_SGzB9pQ?pwd=fkwx

提取码:fkwx

安装好tcl8.6.1之后,回去执行sudo make test

joey@JoeyRedfield615:/usr/local/tcl8.6.1/unix$ cd /usr/local/redis/
joey@JoeyRedfield615:/usr/local/redis$ sudo make test

joey@JoeyRedfield615:/usr/local/redis$ cd src
  joey@JoeyRedfield615:/usr/local/redis/src$ sudo make install

如果sudo make install报错(pkg.config not found),就执行安装命令:sudo apt-get install pkg-config

再去安装目录(一路执行下来的话,默认是/usr/local/bin)下执行./redis.server

进入这里就相当于安装成功了。然后ctrl+c退出。

如果用的不是root用户,由于没有相应权限去创建/写入dump.rdb,所以ctrl+c没法退出。这时候如果强行关闭窗口的话,redis就会一直占用6379端口。

要处理一下也很简单,查出进程号关闭就好了。

joey@JoeyRedfield615:~$ ps aux|grep redis
root 11124 0.5 0.1 62980 8824 ? Sl 16:05 0:00 ./redis-server *:6379
joey 11163 0.0 0.0 14864 1084 pts/0 S+ 16:05 0:00 grep --color=auto redis joey@JoeyRedfield615:~$ kill -9 11124
-bash: kill: (11124) - Operation not permitted
joey@JoeyRedfield615:~$ sudo kill -9 11124
[sudo] password for joey:
joey@JoeyRedfield615:~$ ps aux|grep redis
joey 11168 0.0 0.0 14864 1156 pts/0 S+ 16:06 0:00 grep --color=auto redis
joey@JoeyRedfield615:~$

所以以一般用户开启redis,也要 sudo ./redis-server

可以用kill (正常) 或者kill -9(强制) 去结束进程,也可以通过redis-cli去结束。

joey@JoeyRedfield615:/usr/local/redis/bin$ ./redis-cli
127.0.0.1:6379> shutdown
not connected> #然后ctrl+c就结束进程了
joey@JoeyRedfield615:/usr/local/redis/bin$ ps aux|grep redis
joey 11284 0.0 0.0 14864 1024 pts/0 S+ 16:22 0:00 grep --color=auto redis

另外linux子系统一个问题就是如果用的是默认的用户,它是没有root级别权限的,一些安装、访问类型的命令会有权限限制,每次都要用sudo。

joey@JoeyRedfield615:/usr/local/redis/bin$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

joey@JoeyRedfield615:/usr/local/redis/bin$ su root
Password:

root@JoeyRedfield615:/usr/local/redis/bin# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server

切换一下就好了。

现在要改配置文件以接近生产环境,还有设置成开机自启。

sudo vi /usr/local/redis/etc/redis.conf
# 注释掉bind 127.0.0.1,bind用于限制访问Redis的机器ip,直接关掉,方便后续做集群或其他客户端进行连接
# bind 127.0.0.1
# 修改daemonize no为yes,让Redis可以后台启动
daemonize yes protected-mode no

# 这个是为了方便看日志,如果不设置的话,logs will be sent to /dev/null
logfile "/var/log/redis/redis_server.log"

# 记得去创建对应目录和文件,joey@JoeyRedfield615:/var/log/redis$ sudo touch redis_server.log # 为Redis添加服务密码# requirepass foobared,这里我们将密码设置为123456
requirepass 123456
# 修改rdb文件存储路径,rdb文件是Redis默认的数据持久化到磁盘的文件,默认配置为dir ./,则存储在相对目录
# 即每次运行redis-server的目录,这里我们修改为绝对路径,以便于后续的管理
dir /var/lib/redis/rdb/

#:wq 保存并退出

按n可以向前搜索。

这里提醒一下,密码尽量不要设置成数字开头,设置成a123456都行。如果想用RDM去连接redis的话,纯数字密码是有可能报错的!

我输入了123456,但是不知道RDM是识别成什么,变成了7位字符。

设置自启动配置文件

joey@JoeyRedfield615:/var/lib/redis$ cd /usr/local/redis/
joey@JoeyRedfield615:/usr/local/redis$ ls
00-RELEASENOTES CONTRIBUTING MANIFESTO TLS.md runtest runtest-sentinel tests
BUGS COPYING Makefile deps runtest-cluster sentinel.conf utils
CONDUCT INSTALL README.md redis.conf runtest-moduleapi src
joey@JoeyRedfield615:/usr/local/redis$ vim utils/redis_init_script

joey@JoeyRedfield615:/usr/local/redis$ cd utils/

#接下来是重命名、复制文件、添加权限
joey@JoeyRedfield615:/usr/local/redis/utils$ mv redis_init_script redisd
joey@JoeyRedfield615:/usr/local/redis/utils$ cp redisd /etc/init.d/

joey@JoeyRedfield615:/usr/local/redis/utils$ sudo chmod +x /etc/init.d/redisd
  joey@JoeyRedfield615:/usr/local/redis/utils$ sudo update-rc.d redisd defaults

update-rc.d就相当于设置redis为自启动了

编辑redis_init_script时,头部加上这两句
#!/bin/sh
# chkconfig: 2345 90 10 正文部分:
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

其中,6379是redis端口号;CONF是redis配置文件,将在下一步设置;EXEC、CLIEXEC是服务所在路径,在上步make install时,已经放入默认路径/usr/local/bin中

joey@JoeyRedfield615:/usr/local/bin$ cd /etc/redis/
joey@JoeyRedfield615:/etc/redis$ ls
joey@JoeyRedfield615:/etc/redis$ sudo cp /usr/local/redis/redis.conf ./

joey@JoeyRedfield615:/etc/redis$ sudo mv redis.conf 6379.conf
  joey@JoeyRedfield615:/etc/redis$ ls
  6379.conf

也可以直接去把CONF的地址改成原来redis文件夹下redis.conf的地址。重要的是要EXEC、CLIEXEC、CONF三者地址要匹配。

到这里算是配置成功了。

要验证的话,可以重启一下Ubuntu再看看。这里要用管理员权限打开cmd窗口。

如果redis没有自动启动的话,参考这个博客:ubuntu 如何安装 sysv-rc-conf 配置chkconfig_forrestGTJU的博客-CSDN博客,然后将redisd的2,3,4,5级别全部选中,q键退出

然后修改redis-server.log的权限;chmod 777 /var/log/redis/redis_server.log

再去修改redisd文件

最后执行 sudo update-rc.d redisd defaults

Redis.conf部分参数说明

其实文件里面的英文已经讲得很清楚了,翻译或者直接看都行。这里就简单说一下。

1、units are case insensitive so 1GB 1Gb 1gB are all the same. 在Redis中对单位字母大小写并不敏感。

2、bind 127.0.0.1 只能接受本机的访问请求。不写的情况下无限制接受任何ip地址的访问。

生产环境下肯定得写服务器的地址,而服务器是需要被远程访问的,所以需要将其注释掉。

如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应。

3、protected-mode,保护模式是指当没有设置密码的时候,只能通过本机访问,设置了密码之后其他电脑也可以访问。设置成no的话不设置密码,其它电脑也可以访问了。

4、tcp-backlog:

5、timeout:超时时间,如果有timeout秒没有操作的话,就会断开与redis的连接。默认设置成0是永不超时(0 to disable)

6、tcp-keepalive:心跳时间,在Redis3.2.1后默认300秒,没操作的话就结束链接了。

我个人的理解是timeout是指连接到6379端口进行redis操作的问题,过了这个时间就断开连接了,但是tcp连接还在,重新连接redis也简单,

而tcp-keepalive则是客户端与服务器之间tcp连接,还有节约连接资源的问题?

7、daemonize 后台启动,改成yes

8、pidfile,存放pid文件的位置,每次

9、loglevel 默认notice,注释说生产环境用这个。

10、logfile,设置日志生成位置,

11、requirepass,设置密码,尽量不要设置成纯数字密码,以字母开头好点。

12、maxclients,设置redis同时可以与多少个客户端进行连接,默认为10000个。

13、maxmemory,建议必须设置,这是redis可以使用的内存量,否则将内存占满会造成服务器宕机。可以指定policy(满内存后的策略)和samples(样本数量)

参考资料

redis 安装fatal error: jemalloc/jemalloc.h: No such file or directory 错误_baidu_38558076的博客-CSDN博客

ubuntu命令安装redis并设置自启动_擦肩而过的博客-CSDN博客_ubuntu启动redis

Redis开机自启失败(systemd服务)_學如逆水行舟的博客-CSDN博客_redis systemd

You need tcl 8.5 or newer in order to run the Redis test - 我为什么要写这个 - 博客园 (cnblogs.com)

Ubuntu18.04环境下安装redis 6.2.0,配置文件的部分参数说明的更多相关文章

  1. Ubuntu18.04环境下melodic安装gmapping

    Ubuntu18.04 环境下melodic中很多包没有提供sudo apt install的安装方式,需要通过源代码安装,安装方法如下: 1.先安装依赖库: sudo apt--dev sudo a ...

  2. 在linux环境下安装redis并且搭建自己的redis集群

    此文档主要介绍在linux环境下安装redis并且搭建自己的redis集群 搭建环境: ubuntun 16.04 + redis-3.0.6 本文章分为三个部分:redis安装.搭建redis集群 ...

  3. php redis使用 常用方法 | Windows环境下安装Redis | Windows下php安装redis扩展(详解版)

    redis可视化工具:http://www.treesoft.cn/dms.html #php redis使用 常用方法 https://www.cnblogs.com/mg007/p/1043107 ...

  4. 在windows环境下安装redis和phpredis的扩展

    在windows环境下安装redis和phpredis的扩展 1.首先配置php: 需要在windows的集成环境中找到php的扩展文件夹,ext,然后在网上寻找自己的php对应的.dll文件 比如说 ...

  5. centos / Linux 服务环境下安装 Redis 5.0.3

    原文:centos / Linux 服务环境下安装 Redis 5.0.3 1.首先进入你要安装的目录 cd /usr/local 2.下载目前最新稳定版本 Redis 5.0.3 wget http ...

  6. Linux环境下安装Redis

    记录一下Linux环境下安装Redis,按顺序执行即可,这里下载的是Redis5,大家可根据自己的需求,修改版本号就好了,亲测可行. 1.下载Redis安装包cd /usr/local/wget ht ...

  7. Centos 7环境下安装配置Hadoop 3.0 Beta1简记

    前言 由于以前已经写过一篇Centos 7环境下安装配置2.8的随笔,因此这篇写得精简些,只挑选一些重要环节记录一下. 安装环境为:两台主机均为Centos 7.*操作系统,两台机器配置分别为: 主机 ...

  8. win环境下安装配置openCV-4.3.0

    win环境下安装openCV-4.3.0 首先下载 推荐国内镜像 官网太太太慢了 附上 下载地址 下载之后打开exe解压到目录都是常规操作 环境变量的配置 依次打开到系统变量的path 新建一个路径为 ...

  9. Linux环境下安装Redis并完成测试(已验证)

    准备工作: 本人测试环境:Win7 xshell远程登录Linux Linux: ubuntu 软件包:redis-3..2.6.tar.gz (Linux下redis安装包) =========== ...

  10. Windows环境下安装redis及PHP Redis扩展

    附带管理工具安装教程 安装环境 WNMP环境 参考教程:WIN10下WNMP开发环境部署 安装windows的redis服务 安装包下载 选择msi安装包下载并安装,下载可能会有点慢,请自行使用梯子. ...

随机推荐

  1. 即构发布 LCEP 产品「RoomKit」 ,实现房间内0代码接入

    2021年2月5日,即构科技正式发布全新形态「低代码互动平台」(Low-code Engagement Platform,简称LCEP)产品「RoomKit」. RoomKit定位为低代码互动平台(L ...

  2. 利用python的PyPDF2和PyMuPDF库玩转PDF的提取、合并、旋转、缩放、加密

    一.安装PyPDF2和PyMuPDF库 pip install PyPDF2 pip install pymupdf # fitz是pymupdf的子模块 二.工具类代码 from PyPDF2 im ...

  3. ABP VNext添加全局认证(如何继承AuthorizeFilter)

    前言 目前公司采用的开发框架是ABP VNext微服务框架 最近突然发现一个问题,ABP中如果控制器或服务层没有加 Authorize特性的话,则不会走身份认证,且不会认证Token 如图: 但是项目 ...

  4. C# 多线程访问之 SemaphoreSlim(信号量)【进阶篇】

    SemaphoreSlim 是对可同时访问某一共享资源或资源池的线程数加以限制的 Semaphore 的轻量替代,也可在等待时间预计很短的情况下用于在单个进程内等待. 由于 SemaphoreSlim ...

  5. Linux文件管理知识查找文件

    Linux文件管理知识:查找文件 前几篇文章一一介绍了LINUX进程管理控制命令及网络层面的知识体系,综所周知,一个linux系统是由很多文件组成的,那么既然有那么多文件,那我们该如何管理这些文件呢? ...

  6. @ControllerAdvice 注解使用及原理探究

    最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配.这些异常流程涉及业务层和控制层的各个地方,如果每个地方都 ...

  7. Vue3 vite:is a JavaScript file. Did you mean to enable the 'allowJs' option?

    描述 今天在vue3+vite下进行打包时,突然vscode报了一个error. 大概的意识是询问是否启用"allowJS"选项,因为该文件在程序内是指定用于编译的根文件. 提示信 ...

  8. 推荐几款三维模型OBJ格式轻量化处理工具软件

    推荐几款三维模型OBJ格式轻量化处理工具软件 以下是几款常用的三维模型OBJ格式轻量化处理软件的介绍: 1.MeshLab: MeshLab是一款免费且强大的开源三维模型处理软件,支持多种文件格式,包 ...

  9. Codeforces Round #576 (Div. 2)

    A - City Day 题意:给n,x,y和数组a[n],求最小的下标d,使得有a[d-x,d-x+1,--d-1,d+1,d-1,d+1,--d+y-1,d+y]都比a[d]小,若d-x<= ...

  10. elasticsearch wildcard 慢查询原因分析(深入到源码!!!)

    大家好,我是蓝胖子,前段时间线上elasticsearch集群遇到多次wildcard产生的性能问题, elasticsearch wildcard 一直是容易引发elasticsearch 容易宕机 ...