Redis简单阐述、安装配置及远程访问

目录

一、Redis简介

1.什么是Redis

2.特点

3.优势

4.数据库对比

 5.应用场景

二、 安装与配置

1.下载

2.上传解压

3.安装gcc

4.编译

5.查看安装目录

6.后端启动

7.测试

8.系统服务配置

三、Redis远程访问

1.修改访问IP地址

2.设置登录密码

3.重启Redis服务  

4.配置服务器防火墙

5.使用Redis桌面管理工具连接


一、Redis简介

1.什么是Redis

        Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilippo 使用 C 语言编写。

NoSQL = Not Only SQL 不仅仅是SQL,非关系型数据库

        Redis 遵守 BSD 协议,实现了免费开源,其最新版本是 7.0+,常用版本包括 3.0 、4.0、5.0、6.0。自 Redis 诞生以来,它以其超高的性能、完美的文档和简洁易懂的源码广受好评,国内外很多大型互联网公司都在使用 Redis,比如腾讯、阿里、Twitter、Github 等等。


2.特点

  • Redis 不仅可以将数据完全保存在内存中,还可以通过磁盘实现数据的持久存储;

  • Redis 支持丰富的数据类型,包括 string、list、set、zset、hash 等多种数据类型,因此它也被称为“数据结构服务器”;

  • Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向任意数量的从服务器上同步,有效地保证数据的安全性;

  • Redis 支持多种编程语言,包括 C、C++、Python、Java、PHP、Ruby、Lua 等语言。

        与 SQL 型数据库截然不同,Redis 没有提供新建数据库的操作,因为它自带了 16 (0—15)个数据库(默认使用 0 库)。在同一个库中,key 是唯一存在的、不允许重复的,它就像一把“密钥”,只能打开一把“锁”。键值存储的本质就是使用 key 来标识 value,当想要检索 value 时,必须使用与 value 相对应的 key 进行查找。

        Redis 数据库没有“表”的概念,它通过不同的数据类型来实现存储数据的需求,不同的数据类型能够适应不同的应用场景,从而满足开发者的需求。

单线程的Redis为什么这么快呢?

        Redis 的底层是一个单线程模型,单线程指的是使用一个线程来处理所有的网络事件请求,这样就避免了多进程或者多线程切换导致的 CPU 消耗,而且也不用考虑各种锁的问题。虽然是单线程,但可以开多实例弥补

        Redis 为了充分利用单线程,加快服务器的处理速度,它采用 IO 多路复用模型来处理客户端与服务端的连接,这种模型有三种实现方式,分别是 select、poll、epoll。Redis 正是采用 epoll 的方式来监控多个 IO 事件。当客户端空闲时,线程处于阻塞状态;当一个或多个 IO 事件触发时(客户端发起网路连接请求),线程就会从阻塞状态唤醒,并同时使用epoll来轮询触发事件,并依次提交给线程处理。

注意:“多路”指的是多个网络连接,“复用”指的是复用同一个线程。多路 IO 复用技术可以让单个线程高效的处理多个连接请求。


3.优势

  • 性能极高:Redis 基于内存实现数据存储,它的读取速度是 110000次/s,写速度是 81000次/s;

  • 多用途工具: Redis 有很多的用途,比如可以用作缓存、消息队列、搭建 Redis 集群等;

  • 命令提示功能:Redis 客户端拥有强大的命令提示功能,使用起来非常的方便,降低了学习门槛;

  • 可移植性:Redis 使用用标准 C语言编写的,能够在大多数操作系统上运行,比如 Linux,Mac,Solaris 等。


4.数据库对比

        Redis 用来缓存一些经常被访问的热点数据、或者需要耗费大量资源的内容,通过把这些内容放到 Redis 中,可以让应用程序快速地读取它们。例如,网站的首页需要经常被访问,并且在创建首页的过程中会消耗较多的资源,此时就可以使用 Redis 将整个首页缓存起来,从而降低网站的压力,减少页面访问的延迟时间。

        我们知道,数据库的存储方式大体可分为两大类,基于磁盘存储和基于内存存储。磁盘存储的数据库,因为磁头机械运动以及系统调用等因素导致读写效率较低。Redis 基于内存来实现数据存取,相对于磁盘来说,其读写速度要高出好几个数量级。下表将 Redis 数据库与其他常用数据库做了简单对比:

名称类型数据存储选项附加功能
Redis基于内存存储的键值非关系型数据库字符串、列表、散列、有序集合、无序集合发布与订阅、主从复制、持久化存储等
Memcached基于内存存储的键值缓存型数据库键值之间的映射为提升性能构建了多线程服务器
MySQL基于磁盘的关系型数据库每个数据库可以包含多个表,每个表可以包含多条记录; 支持第三方扩展。支持 ACID 性质、主从复制和主主复制
MongoDB基于磁盘存储的非关系文档型数据库每个数据库可以包含多个集合,每个集合可以插入多个文档支持聚合操作、主从复制、分片和空间索引

        Redis 基于内存来实现数据的存储,因此其速度非常快。但是我们知道,计算机的内存是非常珍贵的资源,所以 Redis 不适合存储较大的文件或者二进制数据,否则会出现错误,Redis 适合存储较小的文本信息。理论上 Redis 的每个 key、value 的大小不超过 512 MB。

总得来说,上述数据库各有优势,当我们选用数据库时,也要因地制宜,选择一款与业务场景最相符合的数据库。


 5.应用场景

  • 缓存:合理的使用 缓存 能够明显加快访问的速度,同时降低数据源的压力。这也是 Redis 最常用的功能。Redis 提供了 键值过期时间EXPIRE key seconds)设置,并且也提供了灵活控制 最大内存 内存溢出 后的 淘汰策略

  • 排行榜:每个网站都有自己的排行榜,例如按照 热度排名 的排行榜,发布时间 的排行榜,答题排行榜 等等。Redis 提供了 列表list)和 有序集合zset)数据结构,合理的使用这些数据结构,可以很方便的构建各种排行榜系统。

  • 计数器:计数器在网站应用中非常重要。例如:点赞数1浏览数 1。还有常用的 限流操作,限制每个用户每秒 访问系统的次数 等等。Redis 支持 计数功能INCR key),而且计数的 性能 也非常好,计数的同时也可以设置 超时时间,这样就可以实现限流

  • 社交网络:赞/踩,粉丝,共同好友/喜好,推送,下拉刷新等是社交网站必备的功能。由于社交网站 访问量通常比较大,而且传统的数据库 不太适合保存这类数据,Redis 提供的 数据结构 可以相对比较容易实现这些功能。

  • 消息队列:Redis 提供的 发布订阅PUB/SUB)和阻塞队列 的功能,虽然和专业的消息队列(RocketMQ/RabbitMQ,MQ全称:Message Queue)比,还不够强大,但对于一般的消息队列功能基本满足。


二、 安装与配置

1.下载

进入Index of /releases/对应版本的Redis服务,本篇文章使用的是redis-6.2.1


2.上传解压

        将下载的redis-6.2.1.tar.gz压缩包上传至服务器

# 切换目录
cd /usr/local/mytools
# 上传
rz  redis-6.2.1.tar.gz
# 解压
tar -zxf redis-6.2.1.tar.gz -C /usr/local

3.安装gcc

yum -y install gcc


4.编译

# 切换目录
cd /usr/local/redis-6.2.1
# 编译
make && make install

        编译完成情况 


5.查看安装目录

# 切换目录
cd /usr/local/bin
ll

目录介绍:

  • redis-benchmark:性能测试工具,可以在自己本子允许,看看自己本子性能如何

  • redis-check-aof:修复有问题的AOF文件

  • redis-check-dump:修复有问题的dump.rdb文件

  • redis-sentinel:redis集群使用

  • redis-server:redis服务器启动命令

  • redis-clit:客户端,操作入口


6.后端启动

        使用vi或者vim命令修改/usr/local/redis-6.2.1/redis.conf中的配置,将后台启动设置daemonize改为yes,如下:

        启动redis  

redis-server /usr/local/redis-6.2.1/redis.conf

        查看进程

ps -ef | grep redis

        操作截图

        关闭redis服务        :此处启动Redis后无需停止服务

# 方式一:
kill -9 pid
# 方式二:
redis-cli shutdown

7.测试

        执行 redis-cli 即可进入redis命令窗口,然后就可以执行redis命令了

[root@192 bin]# cd /usr/local/bin/
[root@192 bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
[root@192 bin]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit

8.系统服务配置

        在本机中手动创建一个redis.service服务文件

# 切换到指定目录
cd /usr/lib/systemd/system/
# 上传redis.service服务文件
rz redis.service

         修改redis.service配置:

[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#修改redis-server和redis.conf的路径
ExecStart=/usr/local/redis-6.2.1/src/redis-server /usr/local/redis-6.2.1/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true

[Install]
WantedBy=multi-user.target

         重载、自启动及启停服务

# 重载服务
systemctl daemon-reload
# 自启动服务
systemctl enable redis
# 禁用自启动服务
systemctl disable redis
# 启动服务
systemctl start redis
# 停止服务
systemctl stop redis
# 重启服务
systemctl restart redis

        操作过程如下:


三、Redis远程访问

1.修改访问IP地址

#跳转到redis安装目录
cd /usr/local/redis-6.2.1      
#修改redis.conf配置文件
vim redis.conf        
#注释redis.conf的配置项
#bind 127.0.0.1            

2.设置登录密码

        找到requirepass 一行去除注释,并添加密码

#requirepass foobared   #修改前
requirepass 123456      #修改后

3.重启Redis服务  

# 重启Redis服务
systemctl restart redis

4.配置服务器防火墙

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

5.使用Redis桌面管理工具连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/361480.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二次元插画风生图咒语

中文:一个可爱的卡通女孩穿着漂亮的毛衣,抱着一只可爱的小狗,全身,白色背景,粉色和蓝色,基思哈林风格的涂鸦,Sharpie插图,MBE插图,粗体线条,垃圾美风格&#…

Verdi简介

3.1.1 Verdi的历史 相信做IC验证的朋友或多或少都使用过VCS和Verdi这两个工具,这两个工具目前都属于synopsys公司,但是Verdi的来源可谓一路坎坷。 Verdi最开始是由novas公司设计的,在2008年,被台湾的EDA厂家springsoft&#xff08…

MySQL基础知识(二)

MySQL基础知识(二) 一、MySQL简介 MySQL 是一个关系型数据库管理系统, 由瑞典 MySQL AB 公司开 发, 目前属于 Oracle 公司。MySQL 是一种关系型数据库管理系 统,关系型数据库将数据保存在不同的表 中,而…

微信小程序如何实现实时显示输入内容

如下所示&#xff0c;在许多场景中需要实时显示用户输入&#xff0c;具体实现见下文。 .wxml <input type"text" placeholder"请输入{{item.value}}(必填)" style"width:80%;" bindinput"get_required_value" data-info"{{it…

壹[1],Xamarin开发

1&#xff0c;环境 VS2022 注&#xff1a; 1&#xff0c;本来计划使用AndroidStudio&#xff0c;但是也是一堆莫名的配置让人搞得很神伤&#xff0c;还是回归C#。 2&#xff0c;MAUI操作类似&#xff0c;但是很多错误解来解去&#xff0c;且调试起来很卡。 3&#xff0c;最…

LeetCode —— 137. 只出现一次的数字 II

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

C++类和对象(中)六个默认成员函数

&#x1f308;类的六个默认成员函数 任何一个类&#xff0c;不管是否为空&#xff0c;都会在生成的时候默认调用六个成员函数&#xff0c;这些成员函数可以自动生成&#xff0c;也可以由程序员写出。这六个默认成员函数分别是&#xff1a; 最主要的是前四个&#xff1a; 初始…

DDD学习使用

简介 DDD(Domain-Driven Design)&#xff1a;领域驱动设计。 Eric Evans “领域驱动设计之父” DDD不是架构&#xff0c;而是一种方法论&#xff08;Methodology&#xff09;微服务架构从一出来就没有很好的理论支撑如何合理的划分服务边界&#xff0c;人们常常为服务要划分多…

6.3 内存池模式

Bruce Powel Douglass大师介绍-CSDN博客https://blog.csdn.net/ChatCoding/article/details/134665868嵌入式软件开发从小工到专家-CSDN博客https://blog.csdn.net/ChatCoding/article/details/135297955C嵌入式编程设计模式源码-CSDN博客https://blog.csdn.net/ChatCoding/art…

Android 基础技术——Handler

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 Handler 为什么一个线程对应一个Looper&#xff1f; 核心&#xff1a;通过ThreadLocal保证 Looper.prepare的时候&#xff0c;ThreadLocal.get如果不空报异常&#xff1b;否则调用ThreadLocal.set,…

2、趋势Trend (copy)

利用移动平均数和时间虚拟模型对长期变化进行建模。 文章目录 1、什么是趋势?2、移动平均图3、工程趋势4、示例 - 隧道交通1、什么是趋势? 时间序列的趋势组成部分代表了序列均值的持久、长期变化。趋势是序列中变化最慢的部分,代表了最重要的大时间尺度。在产品销售的时间…

Unity中使用Ultraleap的Slider组件

Unity中使用Ultraleap的Slider组件&#xff0c;实现物体在指定范围内滑动&#xff1a; 本节在上一节基础上进行&#xff0c;上一小结参考如下&#xff1a; Unity中使用Ultraleap的InteractionButton组件 本节工程文件如下&#xff1a; Unity中使用Ultraleap的Slider组件 1、在…

【Algorithms 4】算法(第4版)学习笔记 02 - 1.4 算法分析

文章目录 前言参考目录学习笔记1&#xff1a;科学方法2&#xff1a;观察举例&#xff1a;三数之和3&#xff1a;近似4&#xff1a;增长数量级4.1&#xff1a;二分查找 demo4.2&#xff1a;二分查找代码实现4.3&#xff1a;二分查找比较次数的证明&#xff08;比较次数最多为lgN…

MYSQL的配置和安装

下载安装 打开官网 MYSQL官网 点击DOWNLOADS 滑到最低下点击&#xff1a;MYSQL Community(GPL) Downlads 点击Download Archives 点击MySQL Community Server进入网站 选择相应版本下载&#xff0c;这里选择的是5.7.24版本,x86 64位【按需选择】 下载解压 配置文件…

H5022B降压恒流芯片 内置MOS PWM调光 高性价比 支持48V 60V 80V 100V

内置MOSFET的100V降压恒流芯片是一种能够将高输入电压降低到稳定的输出电流的降压稳流器。以下是其基本工作原理&#xff1a; 输入电压检测&#xff1a;芯片首先检测输入电压&#xff0c;即来自电源的100V。这涉及使用电压检测电路&#xff0c;以确保输入电压在可接受范围内。…

springboot 怎么设置局域网访问

如何配置Spring Boot应用以实现局域网访问 在开发一个Spring Boot应用时&#xff0c;我们通常会通过localhost来访问和测试我们的应用。但是&#xff0c;当我们想要在局域网中分享我们的应用&#xff0c;供其他设备访问时&#xff0c;仅仅使用localhost是不够的。本文将引导你…

PyNest 一个可以搭建微服务的 Python 包

PyNest 在构建 Python API 和微服务方面崭露头角&#xff0c;解决了 FastAPI 中存在的关键问题&#xff0c;因此成为卓越的框架。凭借其模块化的架构和先进的特性&#xff0c;PyNest 在 2024 年及以后有望成为 Python 开发者的首选选择。 随着 Python 生态系统的不断成熟&…

关于信号处理中的测量精度与频谱细化问题及其仿真实践

说明 频谱细化问题其实很早之前就想研究并整理一下了&#xff0c;车载雷达中我们似乎对这个话题并不太涉及(最多只是在测角时用补0 FFT的方法)&#xff0c;想要了解这个话题的源头是很早之前的一次面试时面试官问我&#xff1a;有哪些提高测量精度的方法&#xff1f;并进而引申…

Linux 文件IO

目录 linux下的文件分类&#xff1a; 文件描述符原理&#xff1a;&#xff08;底层原理&#xff0c;可跳过&#xff09; 虚拟文件系统&#xff1a; 内存中的inode与磁盘中的inode open函数 函数原型&#xff1a; 形参列表&#xff1a; 代码&#xff1a; close函数 er…

eNSP学习——华为交换机STP配置和选路规则

目录 原理概述 实验内容 实验目的 实验步骤 实验拓扑 实验步骤 基本配置 配置网络中的根交换机 理解根端口的选举 理解指定端口的选举&#xff08;首先比较根路径开销&#xff09; 原理概述 生成树协议&#xff08;英语&#xff1a;Spanning Tree Protocol&#…