【Redis核心知识 一】Linux中搭建Redis环境

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【Redis核心知识 一】Linux中搭建Redis环境

今天恰逢1024盛事,为了共襄盛举,决定把Redis相关知识梳理一下,纪念一波这个节日。之前的学习都是基于windows做的简单的数据结构、指令的一些学习,从今天开始学习下Redis的高级用法。

Redis的Linux安装

其实安装起来很简单,之前我就搭建过分布式的Centos7的虚拟机集群,感兴趣的朋友可以参见之前的一篇blog,详细介绍了如何按照、配置和操作虚拟机【分布式集群搭建 一】虚拟机配置(VMware+Centos7+SecureCRT+AppNode),这里就不再赘述。有了Linux的虚拟机环境,Redis的安装就很简单了,接下来我们还是使用SecureCRT来执行远程操作,同时在AppNode可视化的查看安装状态。

下载Redis到Linux

下载的时候先去官网查看下最新版本Redis官方下载地址,可以看到现在最新稳定版是6.0.8版本。

我们直接使用wget命令进行下载 wget https://download.redis.io/releases/redis-6.0.8.tar.gz

下载速度还是非常快的,下载完成后我们直接进行解压tar -zvxf redis-6.0.8.tar.gz,解压完成后所有目录都被打印了出来:

编译Redis

接下来我们编译下Redis,运行命令make,但是发现有如下报错:

提示gcc命令未找到,这是因为redis没有安装gcc编译器没安装,这时候只要安装编译器即可,运行命令yum install -y gcc g++ gcc-c++ make,安装完成后显示:

此时再次执行又会出现如下报错:

此时查了资料发现,需要更新gcc的版本,当前gcc版本太低。查看gcc版本,gcc -v

使用如下命令进行gcc版本的升级:

gcc -v                                                                     # 查看gcc版本
yum -y install centos-release-scl                                          # 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash                                               # 临时启用gcc9.1版本
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile                   #长期使用gcc 9.1

启用完成后再次执行编译命令make,结果又报错了。

从网上查了,原来是需要进入deps文件夹下执行如下命令:make lua hiredis linenoise,好吧,执行完后经历了千辛万苦,终于看到了理想的画面:

安装Redis

编译终于成功了,然后我们运行下Redis的安装,使用命令make install,安装也是ok的:

安装完成后我们进入Redis的src目录下可以看到Redis安装的全部内容:

启动Redis服务端

接下来我们在src下敲命令redis-server即可启动Redis的服务端,启动后又可以看到我们熟悉的画面

启动Redis客户端

接下来我们另起一个会话,启动客户端来连接Redis的服务,并且set一个key进去:

[root@192 ~]# cd redis-6.0.8/
[root@192 redis-6.0.8]# cd src/
[root@192 src]# redis-cli
127.0.0.1:6379> set name tml
OK
127.0.0.1:6379> get name
"tml"

Redis多终端启动

一台电脑上其实可以同时启动多个Redis服务,Redis可以换端口启动,现在默认的端口号是6379,接下来我们启动一个6380端口的Redis:

redis-server --port 6380

启动后我们从客户端如果用之前的方式连接是会报错的

redis-cli

报错内容如下:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

此时启动客户端去连接需要我们指定端口号去连接:

redis-cli -p 6380

可以进行正常操作。需要注意的是,每换一个端口启动就相当于启动了一个Redis的实例,一个Redis库,这些是彼此分离的,所以你可以在一个机器上通过不同的端口号启动一堆实例,并且用对应端口号的客户端访问即可,不同的端口互不干扰,例如我在6380端口的Redis操作:

127.0.0.1:6380> set name tml
OK
127.0.0.1:6380> get name
"tml"
127.0.0.1:6380> set love guochengyu
OK
127.0.0.1:6380> get love
"guochengyu"
127.0.0.1:6380>

我从6379的端口想要获取是获取不到的,而且可以在6379端口独立操作:

127.0.0.1:6379> set name tml
OK
127.0.0.1:6379> get name
"tml"
127.0.0.1:6379> get love
(nil)
127.0.0.1:6379>

Redis指定配置文件启动

在实际场景中,企业级多服务端启动的时候,把一个实例的配置信息持久化到配置文件中,然后指定配置文件启动,配置文件路径为:/root/redis-6.0.8/redis.conf,我们需要把它其中的关键信息分端口生成对应的配置文件,使用如下命令进行操作:

cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf

可以看到全部的配置信息如下:

[root@192 redis-6.0.8]# cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
[root@192 redis-6.0.8]# cat redis-6379.conf
bind 127.0.0.1            
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
oom-score-adj no
oom-score-adj-values 0 200 800
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

其中目前指定启动的关心的核心配置是:

port 6379            //启用端口号为6379
daemonize yes      //使用守护进程的模式启动,后台默认开启
logfile "redis-6379.log"         //日志文件名称
dir /root/redis-6.0.8/data/                 //日志文件目录,在redis下创建一个data文件夹用来存放

配置文件redis-6379.conf只保留如下配置:

由于我们配置文件可能会很多,所以统一新建一个config文件夹,所有端口配置都放进去/root/redis-6.0.8/config/

此时我们启动如下:

[root@192 redis-6.0.8]# redis-server config/redis-6379.conf
[root@192 redis-6.0.8]# ps -ef |  grep redis-  
root      34776      1  0 10:36 ?        00:00:01 redis-server *:6380
root      35067      1  0 10:43 ?        00:00:01 redis-server *:6379
root      35673  35330  0 11:11 pts/0    00:00:00 grep --color=auto redis-
[root@192 redis-6.0.8]# redis-cli
127.0.0.1:6379> set love guochengyu
OK
127.0.0.1:6379> get love
"guochengyu"
127.0.0.1:6379>

通过守护线程启动后,可以看到存在的端口redis,我们请求一下也是可以请求成功的。同时可以查看日志文件,发现服务器启动的打印内容:

当然我们也可以复制多个配置,指定多个配置启动,举例我们再增加一个6380端口的配置:

配置内容如下:

port 6380
daemonize yes
logfile "redis-6380.log" 
dir /root/redis-6.0.8/data/

此时我们再去启动6380端口:

[root@192 redis-6.0.8]# ps -ef |  grep redis-              
root      35924      1  0 11:28 ?        00:00:00 redis-server *:6379
root      36032  35330  0 11:35 pts/0    00:00:00 grep --color=auto redis-
[root@192 redis-6.0.8]# redis-server config/redis-6380.conf 
[root@192 redis-6.0.8]# ps -ef |  grep redis-               
root      35924      1  0 11:28 ?        00:00:00 redis-server *:6379
root      36048      1  0 11:35 ?        00:00:00 redis-server *:6380
root      36054  35330  0 11:36 pts/0    00:00:00 grep --color=auto redis-
[root@192 redis-6.0.8]# redis-cli -p 6380
127.0.0.1:6380> set love guochengyu
OK
127.0.0.1:6380> get love
"guochengyu"
127.0.0.1:6380>

首先查看Redis进程只有一个6379,然后开启6380 ,Redis进程增加一个,然后进行数据操作。同样日志文件也正常生成了:

以上就是Redis的linux部署和配置启动方式,再次祝大家程序猿节快乐!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
安全 Linux 网络安全
Linux环境中安装和使用Paramiko
Linux环境中安装和使用Paramiko
130 12
|
2月前
|
Java 关系型数据库 MySQL
Linux环境
Linux环境
35 5
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
286 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
20天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
43 3
|
20天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
32 3
|
2月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
|
1月前
|
Linux UED iOS开发
|
2月前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
43 3
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
347 3
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
45 5