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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
62 14
|
11天前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
51 7
|
27天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
98 24
|
20天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
151 7
|
2月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
86 4
|
2月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
2月前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
24天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
167 85
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
89 6
|
21天前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。