环境是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. 我和ChatGPT聊数字人

    ​ 近期,聊天机器人ChatGPT火了,写诗写文写代码,才艺狠狠拉满. 面对如此"会聊"的ChatGPT,很多人好奇相同的问题提问ChatGPT和真人,会有什么样的结果? 于是我们 ...

  2. 反汇编分析C语言

    环境 VC6.0环境 空函数反汇编 #include "stdafx.h" void function(){ } int main(int argc, char* argv[]) ...

  3. Mariadb取24小时数据--九五小庞

    Mariadb是一种常用的关系型数据库管理系统.在进行实时数据处理时,我们常常需要查询最近24小时的数据来进行分析和处理.下面我们将介绍如何使用MySQL查询最近24小时的数据. SELECT * F ...

  4. Cilium系列-4-Cilium本地路由

    系列文章 Cilium 系列文章 前言 在前文中我们提到, cilium install 默认安装后, Cilium 功能启用和禁用情况如下: datapath mode: tunnel: 因为兼容性 ...

  5. 使用LabVIEW 实现物体识别、图像分割、文字识别、人脸识别等深度视觉

    前言 哈喽,各位朋友们,这里是virobotics(仪酷智能),这两天有朋友私信问之前给大家介绍的工具包都可以实现什么功能,最新的一些模型能否使用工具包加载,今天就给大家介绍一下博主目前使用工具包已经 ...

  6. 为什么 API 治理需要内部倡导

    API 治理旨在帮助人们通过 API 实现最大价值.但是,只有了解 API 是什么以及 API 的重要性,并且认识到 API 治理是在帮助他们而不是监管他们,才能实现这一目标.这就是为什么在任何 AP ...

  7. 【Hexo】配置主流搜索引擎收录流程记录

    目录 是否已经被收录 生成站点地图 提交站点地图 Google 注册 Search Console 验证网站所有权 提交站点地图 Bing 从 GSC 导入 手动添加网站 手动请求编入索引 参考资料 ...

  8. 利用AI点亮副业变现:5个变现实操案例的启示

    整体思维导图: 在这里先分享五个实操案例: 宝宝起名服务 AI科技热点号 头像壁纸号 小说推广号 流量营销号 你们好,我是小梦. 最初我计划撰写一篇关于AI盈利策略的文章,对AI目前的技术走向.应用场 ...

  9. 《SQL与数据库基础》10. 存储引擎

    目录 存储引擎 MySQL体系结构 存储引擎简介 三种经典存储引擎 InnoDB 逻辑存储结构 MyISAM Memory 区别及特点 存储引擎选择 本文以 MySQL 为例 存储引擎 MySQL体系 ...

  10. Python 基础面试第三弹

    1. 获取当前目录下所有文件名 import os def get_all_files(directory): file_list = [] # os.walk返回一个生成器,每次迭代时返回当前目录路 ...