centos 7安装和使用redis,授权远程连接(★firecat推荐★)(一)

简介: centos 7安装和使用redis,授权远程连接(★firecat推荐★)(一)

如果是zip格式,先


[root@localhost ~]# yum -y install zip unzip


[root@localhost ~]# unzip *.zip


1、安装,去官网下载源码 https://redis.io/download或者https://github.com/antirez/redis/tree/3.2.12


tar xzf redis-3.2.12.tar.gz


chmod -R 777 redis-3.2.12 #linux一键获取文件夹下所有文件(尤其是.sh文件)权限,-R是递归的意思

cd redis-3.2.12

make


(1)chmod这个步骤很重要,否则/redis/redis-3.2.12/deps/jemalloc会因为没有权限而编译失败


(2)make默认使用jemalloc的内存分配器。


(3)最后可以不需要执行命令make install,免得redis新版本出来不好管理。


(4)如果编译报错:


In file included from adlist.c:34:0:

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

#include <jemalloc/jemalloc.h>

                              ^

compilation terminated.

make[1]: *** [adlist.o] Error 1

make[1]: Leaving directory `/home/redis-3.2.12/src'

make: *** [all] Error 2


那么请手动进入jemalloc的文件夹,进行make


# cd deps/jemalloc/


# make


(5)如果编译报错:


debug.o: In function `debugCommand':

/home/redis-3.2.12/src/debug.c:535: undefined reference to `je_mallctl'

/home/redis-3.2.12/src/debug.c:537: undefined reference to `je_mallctl'

/home/redis-3.2.12/src/debug.c:529: undefined reference to `je_malloc_stats_print'

zmalloc.o: In function `zmalloc':

/home/redis-3.2.12/src/zmalloc.c:125: undefined reference to `je_malloc'

/home/redis-3.2.12/src/zmalloc.c:129: undefined reference to `je_malloc_usable_size'


那么,把make命令调整为:make CFLAGS="-march=x86-64"


(6)编译完成后,用户直接在源码文件夹路径下启动redis服务器即可。



2、笔者的redis路径是/root/Downloads/redis/redis-3.2.12/


拷贝配置文件/root/Downloads/redis/redis-3.2.12/redis.conf

到以下路径:

/root/Downloads/redis/redis-3.2.12/src

在终端执行命令,启动redis服务器

[root@localhost src]# ./redis-server redis.conf


如果命令不带配置参数文件,则使用默认的参数。Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 ,第136行

daemonize yes


查看运行状态

[root@localhost src]# ps -ef | grep redis


启动客户端并退出


[root@localhost src]# ./redis-cli

127.0.0.1:6379> quit



3、授权远程客户端连接

redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf


打开/root/Downloads/redis/redis-3.2.12/src/redis.conf文件,第69行,在NETWORK部分有说明



################################## NETWORK #####################################

# By default, if no "bind" configuration directive is specified, Redis listens

# for connections from all the network interfaces available on the server.

# It is possible to listen to just one or multiple selected interfaces using

# the "bind" configuration directive, followed by one or more IP addresses.

#

# Examples:

#

# bind 192.168.1.100 10.0.0.1

# bind 127.0.0.1 ::1

#

# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the

# internet, binding to all the interfaces is dangerous and will expose the

# instance to everybody on the internet. So by default we uncomment the

# following bind directive, that will force Redis to listen only into

# the IPv4 lookback interface address (this means Redis will be able to

# accept connections only from clients running into the same computer it

# is running).

#

# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES

# JUST COMMENT THE FOLLOWING LINE.

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

bind 127.0.0.1


解决办法:注释掉bind 127.0.0.1可以使所有的ip访问redis,或者把127.0.0.1修改成0.0.0.0


若是想指定多个ip访问,但并不是全部的ip访问,可以bind


注意


下面还有个说明,第88行



# Protected mode is a layer of security protection, in order to avoid that

# Redis instances left open on the internet are accessed and exploited.

#

# When protected mode is on and if:

#

# 1) The server is not binding explicitly to a set of addresses using the

#    "bind" directive.

# 2) No password is configured.

#

# The server only accepts connections from clients connecting from the

# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain

# sockets.

#

# By default protected mode is enabled. You should disable it only if

# you are sure you want clients from other hosts to connect to Redis

# even if no authentication is configured, nor a specific set of interfaces

# are explicitly listed using the "bind" directive.

protected-mode yes


在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,如下



(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.


修改办法:protected-mode no


4、本地客户端访问


./redis-cli



5、外部客户端想访问进来,还需要考虑防火墙的问题。


CentOS7默认的防火墙是firewall,关掉它


关闭firewall防火墙:sudo systemctl stop firewalld.service


关闭firewall开机启动:sudo systemctl disable firewalld.service


firewall-cmd --state #查看状态


################### 学习资料 redis.conf ############################


在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要额就是对redis.conf进行配置了,下面整理出redis.conf中常见的一些配置介绍。

参数说明

redis.conf 配置项说明如下:


1: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 ,第136行

daemonize no


2: 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

pidfile /var/run/redis.pid


3: 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

port 6379


4: 绑定的主机地址

bind 127.0.0.1


5: 当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

timeout 300


6: 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

loglevel verbose


7: 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

logfile stdout


8: 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id

databases 16


9: 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

save

Redis默认配置文件中提供了三个条件:

save 900 1

save 300 10

save 60 10000

分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。


10: 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

rdbcompression yes


相关文章
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
1076 1
|
10月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
973 6
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
1141 16
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
529 14
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
740 1
|
NoSQL Java Redis
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 安装
本教程介绍在 VMware 虚拟机(CentOS 7)或阿里云服务器中安装 Redis 的过程,包括安装 gcc 编译环境、下载 Redis(官网或 wget)、解压安装、修改配置文件(如 bind、daemonize、requirepass 等设置)、启动 Redis 服务及测试客户端连接。通过 set 和 get 命令验证安装是否成功。适用于初学者快速上手 Redis 部署。
511 0
|
NoSQL Java Redis
Redis 远程连接报错解决方案
本文目录 1. 场景 2. 解决方案
402 0
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
缓存 NoSQL Java
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
1820 0