首页 数据库 配置 redis 外网可访问

配置 redis 外网可访问

在 Linux 中安装了redis 服务。

在 Windows 中安装了 xampp 环境,以供 PHP 运行。

PHP 代码如下:

<?php
$redis = new Redis();$redis->connect('192.168.1.4', 6379);$redis->set('tag', 'hello');echo 'name:', $redis->get('tag');?>

执行以上代码时,报错如下:

Fatal error: Uncaught exception RedisException with message Redis server went away in xxxxRedisException: Redis server went away in xxxxxx

解错误分析及解决办法

错误的原因很简单,就是没有连接上 redis 服务,由于 redis 采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。

修改 redis 的配置文件,将所有 bind 信息全部屏蔽。

# bind 192.168.1.100 10.0.0.1 # bind 192.168.1.8 # bind 127.0.0.1

修改完成后,需要重新启动 redis 服务。

修改 Linux 的防火墙(iptables),开启你的 redis 服务端口,默认是 6379。

-A INPUT -m state state NEW -m tcp -p tcp dport 6379 -j ACCEPT 
…… -A INPUT -j REJECT reject-with icmp-host-prohibited

请注意,一定要将 redis 的防火墙配置放在 REJECT 的前面。然后执行 service iptables restart

至此,访问刚刚上面的代码,就能够链接到 redis 服务,并且能够正确显示了。

关于bind

翻看网上的文章,此处多翻译为"指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项"。这种解释会 totally 搞糊涂初学者,甚至是错误的。该处的英文原文为:

# If you want you can bind a single interface, if the bind option is not # specified all the interfaces will listen for incoming connections. # bind 127.0.0.1

该处说明 bind 的是interface,也就是说是网络接口。服务器可以有一个网络接口(通俗的说网卡),或者多个。打个比方说机器上有两个网卡,分别为 192.168.205.5 和 192.168.205.6,如果 bind 192.168.205.5,那么只有该网卡地址接受外部请求,如果不绑定,则两个网卡口都接受请求。

OK,不知道讲清楚没有,在举一个例子。在我上面的实验过程中,我是将bind项注释掉了,实际上我还有一种解决方案。由于我redis服务器的地址是 192.168.1.4 。如果我不注释bind项,还有什么办法呢?我可以做如下配置:

# bind 192.168.1.4

这里很多人会误以为绑定的ip应该是请求来源的ip。其实不然,这里应该绑定的是你redis服务器本身接受请求的ip。

站心网

在 Linux 中安装了redis 服务。在 Windows 中安装了 xampp 环境,以供 PHP 运行。PHP 代码如下:<?php $red..

为您推荐

单线程的Redis速度为什么快?

Redis 是一个采用单线程架构的高性能内存键值数据库。官方测试报告中,单机可支持10w左右的 QPS。为什么单线程设计的 Redis 具有这么高性能?我们来探讨一下原因是什么。我将原因归纳为以下的四个方面:单线程架构高..

Redis 在现实世界的 5 个用法

Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面我将会总结一些Redis可以做的事情的真实例子。1.全页面缓存首..

Redis 数据结构详解

Redis 数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。Redis 这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。原子操作:最小的操作单位,不能继续拆分..

Redis 同步、击穿、穿透及雪崩简述

对Redis最常见的几个问题,简要的说下我的理解与解决方法。数据同步指Redis做为缓存,在数据变化时,怎么保持与数据库数据同步的。一般解决方案为:缓存双删(同步方案大都采用删除缓存,而不会更新新缓存。缓存击穿..

宝塔里redis停止了自动启用脚本

redis突然停止的原因有多种:1、内存不足,如果Redis使用的内存超过了服务器可用内存,操作系统会自动杀死Redis进程。2、服务器的资源限制(ulimit)比较低,Redis可能会因为无法打开足够的文件描述符而停止。3、其..

C# .NET Core中Microsoft.Extensions.Caching.Redis库用法

Microsoft.Extensions.Caching.Redis库可以与Redis服务器进行交互,并在应用程序中实现内存缓存功能。使用Microsoft.Extensions.Caching.Redis库进行缓存的示例:首先在项目中通过NuGet包管理器或使用.NET CLI来安装..

Centos7安装Redis教程

在 CentOS 7 上安装 Redis 可以通过以下步骤实现:注意:在开始之前,请确保你拥有 CentOS 7 的 root 或具有 sudo 权限的用户账户。更新系统在安装任何新软件之前,首先要确保系统已经更新到最新版本:sudo yum upda..

Windows下Redis的安装使用教程

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add..

5个Redis使用技巧

使用Redis开发应用程序是一个很愉快的过程,但是就像其他技术一样,基于Redis的应用程序设计你同样需要牢记几点。在之前,你可能已经对关系型数据库开发的那一整个套路了然如胸,而基于Redis的应用程序开发也有许多..

Memcached,Redis,MongoDB的区别

mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached不存在谁替换谁的问题。 和memcached更为接近的是redis。它们都是内..

Redis要收费了有什么平替产品?

Redis 官方在 2023 年 10 月 11 日宣布,将从 2024 年 4 月 1 日起对 Redis 的企业版进行收费。Redis 的开源版本将继续免费提供,但该版本不包括上述企业版功能。Redis 的收费模式如下:按年订阅:每年每节点 1000 ..

微软开源缓存存储系统Garnet平替Redis

近日,微软正式开源缓存存储系统 Garnet。据微软研究院数据库小组高级首席研究员 Badrish Chandramouli 介绍,Garnet 项目是从零开始构建而成,且以性能为核心考量(特别是吞吐量中的线程可扩展性与更高比例的低延迟..

token+redis和Jwt怎么选?

选择使用JWT还是Token+Redis进行项目开发取决于项目的具体需求和规模。下面是对两种方法的简要比较:JWT(JSON Web Token)1. 优点:JWT是一种轻量级的身份验证和授权机制,它可以在客户端和服务器之间传递信息,并..

20万QPS如何利用Redis实现高效、稳定、安全的存储

处理20万QPS(每秒查询数)的业务场景需要一些高效和可扩展的解决方案。Redis是一个非常适合高性能场景的内存数据库,它可以用于缓存、数据结构存储等多种用途。1、场景缓存:数据有效期:为不同的数据设置合适的过..

Redis缓存击穿原因和防范措施

Redis是一种广泛用于缓存的内存数据库,它具有快速读写操作和高并发处理能力。然而,当某个热点数据过期或不存在时,恰好有大量并发请求同时访问该数据,就可能发生缓存击穿问题。本文将深入探讨Redis缓存击穿的原因..

Redis和Memcached的区别 如何选择

Redis和Memcached都是常见的内存缓存系统,它们有一些相似之处,但也有一些区别。数据类型支持:Redis支持的数据类型比Memcached更多。Redis可以支持String、Hash、List、Set、Sorted Set、Bitmaps等数据类型,而Mem..

redis和mongodb的区别?

Redis 和 MongoDB 是两种不同类型的数据库系统,它们在设计和使用场景上有很大的区别。Redis类型: Redis 是一个基于内存的键值存储系统,也被称为数据结构服务器,它支持多种数据类型,包括字符串、哈希表、列表、集..

Redis与数据库数据强一致性解决方案

Redis是一个内存数据库,而传统数据库(如MySQL、PostgreSQL等)通常是基于磁盘的。它们的特性和用途不同,因此在实现强一致性时需要考虑一些因素。数据同步与强一致性保持Redis和传统数据库的强一致性是一个复杂的..

Redis6.x新特性介绍

在Redis 6.x中,引入了多线程IO处理,这意味着在处理客户端的网络请求时,可以使用多个线程来并行处理,从而更有效地利用系统资源,提高系统的吞吐量和响应速度。特别是在高并发场景下,多线程处理可以大幅提高效率..

MongoDB Elasticsearch Redis HBase应用场景分析

MongoDB、Elasticsearch、Redis和HBase都是非常受欢迎的数据库和存储解决方案,但它们各自有其独特的应用场景和优势。让我们分析一下MongoDB、Elasticsearch、Redis和HBase各自的应用场景:1. MongoDB:NoSQL,文档..

发表回复

返回顶部