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

本文涉及的产品
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部署和配置启动方式,再次祝大家程序猿节快乐!

相关文章
|
29天前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
161 11
|
3月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
142 20
|
3月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
135 16
|
3月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
256 8
|
4月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
484 16
|
4月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
325 10
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
3月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
470 0