【Redis】构建强韧的远程Redis连接与端口保障机制完美指南
大家好 我是寸铁👊
总结了【Redis】构建强韧的远程Redis连接与端口保障机制完美指南✨
喜欢的小伙伴可以点点关注 💝
前言
在当今的软件开发领域中,远程访问和操作数据存储是极为常见且重要的需求之一。特别是对于大规模应用或分布式系统而言,远程连接到数据存储以进行读写操作是至关重要的。在这样的场景中,
Redis
作为一种快速、高效的内存数据库,被广泛应用于缓存、会话管理和消息队列等各种用例中。
在使用Golang
编写程序实现远程连接和操作Redis时,需要一套可靠、高效的解决方案。本篇博客将探讨如何通过Golang语言来实现对Redis数据库的远程访问和操作。我们将介绍如何建立与Redis的连接、进行数据读写操作以及保障远程连接的安全性。 通过学习本文,您将掌握如何利用Golang编写出优雅、稳健的远程Redis连接程序,为您的应用提供可靠的数据支持。
代码如下:
var rdb *redis.Client
// 建立redis连接
func init() {
rdb = redis.NewClient(&redis.Options{
Addr: "182.44.10.6:6379",
Password: "",
DB: 0,
})
}
步骤
Step1
- 先找到
redis.conf
配置文件
find / -name redis.conf
如:我的配置文件在如下目录:
- 之后再cd到所在的目录
cd /xx/redis-7.0.8/
- 进入目录打开文件
vim redis.conf
- 找到如下位置
bind 127.0.0.1
- 修改为如下:
bind 0.0.0.0
这一步是使得不只是向本地开放
redis
连接,而是向外部开放,这样就可以远程连接了。
- 再找到如下信息位置:
protected-mode yes
- 修改内容如下:
protected-mode no
这一步是打开受保护模式,使得外部可以远程访问
redis
- 保存并退出
Step2
- 重新加载服务端
nohup ./redis-server /root/redis-7.0.8/redis.conf > /dev/null 2>&1 &
- 查看
redis-server
的进程号
ps aux | grep redis-server
- 再将原有的带
127.0.0.1:6379
的redis
连接删除
使用如下命令:
kill -9 25633(替换为具体的进程号)
Step3
- 重新后台启动服务端,加载配置文件,确保配置生效。
nohup ./redis-server /xx/redis-7.0.8/redis.conf > /dev/null 2>&1 &
- 再重新查看一下
redis-server
的进程号
ps aux | grep redis-server
Step4
- 重新运行程序,远程连接
redis
成功拿到key
和value
不报错,远程连接成功!
补充
如果说加载按照上面加载配置文件后,还是不能够远程连接,考虑开放防火墙端口。
1.查看防火墙是否已开启对6379
端口的放行
#查看6379/tcp端口是否已开 开为yes 没开为no
firewall-cmd --zone=public --query-port=6379/tcp
#查看系统所有开放的端口
firewall-cmd --zone=public --list-ports
no
说明没开放
- 如果没放行,通过以下命令放行
6379
端口:
#配置防火墙,打开6379端口
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
- 重新启动防火墙
#重新启动防火墙
sudo systemctl restart firewalld.service
- 再次查询开放是否生效
firewall-cmd --zone=public --query-port=6379/tcp
yes
说明开放成功生效!
结语
在现代软件开发中,对于远程访问和操作数据存储的需求变得越来越普遍。通过本文,我们深入探讨了如何利用Golang编写程序实现对Redis数据库的远程连接和操作。我们学习了建立与Redis的连接、进行数据读写操作以及保障远程连接安全性的方法。
通过这些技术,我们可以构建出高效、稳健的远程Redis连接程序,为我们的应用提供可靠的数据支持。无论是缓存、会话管理还是消息队列,Redis都能够为我们的应用提供出色的性能和可伸缩性。
在未来的软件开发中,随着技术的不断发展和需求的不断变化,我们可以继续深入探索更多高级技术和最佳实践,以进一步提升我们的远程连接和操作的效率和安全性。
看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕
往期好文💕
保姆级教程
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero
【Go-Zero】手把手带你在goland中创建api文件并设置高亮
报错解决
【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项
【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案
【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案
【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案
【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案
Go面试向
【Go面试向】defer与time.sleep初探
【Go面试向】defer与return的执行顺序初探
【Go面试向】Go程序的执行顺序
【Go面试向】rune和byte类型的认识与使用
【Go面试向】实现map稳定的有序遍历的方式