01 Redis的特性+下载安装启动+客户端连接

1.1 NoSQL

NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。

  • 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis
  • 文档数据库 : NoSQL 与关系型数据的结合,最像关系型数据库的 NoSQL 。 如MongoDB

1.2 Redis的用途

Redis 在生产中使用最多的场景就是做数据缓存。即客户端从 DBMS 中查询出的数据首先写入到 Redis 中,后续无论哪个客户端再需要访问该数据,直接读取 Redis 中的即可,不仅减小了响应时间 RT,而且降低了 DBMS 的压力。
在这里插入图片描述

根据 Redis 缓存的数据与 DBMS 中数据的同步性划分,缓存一般可划分为两类:实时同步缓存,与阶段性同步缓存。
实时同步缓存是指,DBMS 中数据更新后,Redis 缓存中的存放的相关数据会被立即清除,于是乎,若再有对该数据的访问请求到来时,必须先从 DBMS 中查询获取到最新数据,然后再写入到 Redis。
阶段性同步缓存是指,Redis 缓存中的数据允许在一段时间内与 DBMS 中的数据不完全一致。而这个时间段就是这个缓存数据的过期时间。

1.3 Redis特性

  • 持久化:Redis 内存中的数据可以进行持久化,其有两种方式:RDB(全量备份) 与 AOF。
  • 高可用集群:Redis 提供了高可用的主从集群功能,可以确保系统的安全性。
  • 丰富的数据类型:Redis 是一个 key-value 存储系统。支持存储的 value 类型很多,包括String(字符串)、List(链表)、Set(集合)、Zset(sorted set --有序集合)和 Hash(哈希类型)等,还有 BitMap、HyperLogLog、Geospatial 类型。
    a. BitMap:一般用于大数据量的二值性统计。
    b. HyperLogLog:其是 Hyperlog Log,用于对数据量超级庞大的日志做去重统计。
    c. Geospatial:地理空间,其主要用于地理位置相关的计算。
  • 强大的功能:Redis 提供了数据过期功能、发布/订阅功能、简单事务功能,还支持 Lua脚本扩展功能。
  • 客户端语言广泛:Redis 提供了简单的 TCP 通信协议,编程语言可以方便地的接入 Redis。所以,有很多的开源社区、大公司等开发出了很多语言的 Redis 客户端。
  • 支持 ACL 权限控制:之前的权限控制非常笨拙。从 Redis6 开始引入了 ACL 模块,可以为不同用户定制不同的用户权限。
    ACL,Access Control List,访问控制列表,是一种细粒度的权限管理策略,可以针对任意用户与组进行权限控制。目前大多数 Unix 系统与 Linux 2.6 版本已经支持 ACL 了。 Zookeeper 早已支持 ACL 了。
    Unix 与 Linux 系统默认使用是 UGO(User、Group、Other)权限控制策略,其是一种粗粒度的权限管理策略。
  • 支持多线程 IO 模型:Redis 之前版本采用的是单线程模型,从 6.0 版本开始支持了多线程模型。

1.4 Redis的IO模型

Redis服务器处理客户端请求所采用的处理架构,称为 Redis 的 IO 模型。不同版本的 Redis 采用的 IO 模型是不同的。对于Redis 6之后的版本,采用多线程模型。

单线程的性能较高
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • Redis6引入了多线程机制,但是不是说有多个worker线程同时并发读写, 而是它有 “一个
    worker线程+多个IO子线程”,其实就是在 IO 就绪之后使用多线程提升读写解析数据的效率,而在 操作内存数据的时候还是用单线程,以在提高性能的同时避免读写安全问题。
  • 同时,这种机制同样不会产生线程安全问题,因为Redis在针对数据的内存操作时,是在一个公共的worker队列中实现的,先进先出,所以不会有线程安全问题。
  • 简单来说,就是 “请求是多线程的,但核心的内存读写操作(或者说读写计算)仍然是单线程的”。

2 下载Redis

2.1 下载gcc

由于 Redis 是由 C/C++语言编写的,而从官网下载的 Redis 安装包是需要编译后才可安装的,所以对其进行编译就必须要使用相关编译器。对于 C/C++语言的编译器,使用最多的是gcc 与 gcc-c++,而这两款编译器在 CentOS7 中是没有安装的,本次首先安装这两款编译器。尽管gcc包含了gcc-c++,但我们安装时仍指定后者,避免不必要的麻烦。

yum -y install gcc gcc-c++
安装完成检查版本
gcc -v

2.2 下载Redis

2.2.1 win中下载导入虚拟机

  1. 在win中进入redis官网,本次下载7.0.15,即7.0的最后一个小版本
  2. 回到mobax

新建一个文件夹,位置是/opt/tools.
在这里插入图片描述
工具左端, 图形化的形式列出了各个linux中的文件(夹)
进入/opt/tools
选择第三个图标进行上传, 将win中的redis压缩包上传.

如果上传失败并提示权限不足, ls -l查看权限,只要不是rwxrwxrwx, 就是权限不够
chmod -R 777 tools ,给足权限.即可上传成功
在这里插入图片描述

2.2.2 解压并更名

在tools下新建一个apps文件夹, 然后

 tar -zxvf redis-7.0.15.tar.gz -C /opt/apps

再将该文件换一个简单的名字
在这里插入图片描述

2.2.3 编译与安装

编译过程是根据 Makefile 文件进行的,而 Redis 解压包中已经存在该文件了。所以可以直接进行编译了。

在这里插入图片描述编译完成后再安装
在这里插入图片描述在这里插入图片描述

在这里插入图片描述这些命令已经写入了系统变量, 可以在任何目录下直接使用.

2.3 三种方式启动和停止Redis

2.3.1 前台启动Redis

在这里插入图片描述

  • Redis的默认端口是6379
  • 前台启动会占用一个终端窗口
    在这里插入图片描述此时Redis控制终端等待接受连接,无法输入其他命令
  • 用ctl+C可以终止

2.3.2 命令式后台启动Redis

在这里插入图片描述缺点是

  • 每次都要键入 nohup 与&符,比较麻烦
  • 运行会在运行目录多出一个nohup.out文件,增加垃圾
  • 用redis-cli shutdown可以终止进程。

2.3.3 配置式后台启动Redis

通过修改 Linux 中 Redis 的核心配置文件 redis.conf 达到后台启动的目的。redis.conf 文件在Redis 的安装目录根下。
vim编辑redis.conf,将 daemonize 属性值由 no 改为 yes,使 Redis 进程以守护进程方式运行。
此时启动命令为

redis-server redis.conf

启动服务后,每次执行以下命令,即可开始对数据库进行操作。
在这里插入图片描述


2.4 使用客户端连接Redis之前的配置

Redis 是一个内存数据库服务器,就像 MySQL 一样,对其操作也需要通过客户端进行。
若要使远程主机上的客户端能够连接并访问到服务端的 Redis,则服务端首先要做如下配置。

2.4.1 确定客户端IP

Redis 可以通过修改配置文件来限定可以访问自己的客户端 IP。
在redis.conf中,默认是:

bind 127.0.0.1 -::1

代表着只允许当前主机访问。这当然不好,我们要使用ssh远程访问。故将这句话注释掉,这样,所有人都能访问本Redis服务器。

2.4.2 关闭保护模式

默认保护模式是开启的。其只允许本机的客户端访问,即只允许自己访问自己。但生产中应该关闭,以确保其它客户端可以连接 Redis。
将protected-mode 属性由yes改为no

2.4.3 设置访问密码

为 Redis 设置访问密码,可以对要读/写 Redis 的用户进行身份验证。没有密码的用户可以登录 Redis,但无法访问。
访问密码的设置requirepass位置大概在45%的位置。默认是被注释掉的,没有密码。现在改为需要111

requirepass 111

2.4.4 使用密码的两种方式

对于密码的使用,有两种方式:登录时未使用密码,则访问时先输入密码;登录时直接使用密码登录,访问时无需再输入密码。

a.登陆时未使用密码:每次redis-cli之后,第一条操作命令之前,都要使用指令输入密码:

在这里插入图片描述b.登陆时直接使用密码:今后所有操作不需要密码:
在这里插入图片描述

2.4.5 关闭Redis的另一种方式

在设置了密码并且没有使用密码登录的情况下

  • 若在普通的命令行模式,使用redis-cli -a 密码 shutdown可以直接关闭
    在这里插入图片描述

  • 若使用了redis-cli进入了操作模式,先用 auth 密码鉴权,然后shutdown结束操作模式,quit退出到linux命令行
    在这里插入图片描述因此,为了后续学习方便,把配置文件中的requirepass注释掉,不需要密码。

2.5 Redis客户端

2.5.1 命令行客户端

Redis 提供了基本的命令行客户端。打开命令行客户端的命令为 redis-cli。
并且可以附带两个参数:

  • -h:指定要连接的 Redis 服务器的 IP。
  • -p:指定要连接的 Redis 的端口号。
  • 若连接的是本机 Redis,且端口号没有改变,保持默认的 6379,则-h 与-p 选项可以省略不写。

2.5.2 图形化客户端

这里选择Another Redis Destop Manger
https://gitee.com/qishibo/AnotherRedisDesktopManager/releases

在虚拟机中插入一个简单键值对:
set name sunsplanter

即可在ARDM中看到插入的数据
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件包管理:在CentOS 7中部署Tengine

目录 下载: 方法一: 方法二: 部署: 实验操作 下载: 方法一: 1、打开浏览器搜索tengine并点击官网 2、选择需要安装的版本并复制链接链接 标题栏处可以更改为中文界面 下滑选择版本单击下载 在远程连…

【yaml 文件使用】pytest+request 框架中 yaml 配置文件使用

又来进步一点点~~ 背景:最近在学习pytestrequest框架写接口测试自动化,使用yaml文件配置更方便管理用例中的数据,这样更方便 yaml 介绍: 什么是 yaml 文件:YAML 是 “YAML Ain’t a Markup Language”(Y…

idea用version标签配置版本号报错版本号missing

问题描述&#xff1a; 用<mybatis-plus.version>3.3.2</mybatis-plus.version>配置pom的版本号&#xff0c;报错 dependencies.dependency.version for com.baomidou:mybatis-plus-boot-starter:jar is missing. line 33, column 21详细报错如下&#xff1a; 详…

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布&#xff0c;广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据&#xff0c;也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。…

uniapp导入uView组件库

目录 准备工作 1. 新建一个项目 2. 导入uview组件库 3. 关于SCSS 配置步骤 1. 引入uView主JS库 2. 在引入uView的全局SCSS 3. 引入uView基础样式 4. 配置easycom组件模式 添加效果实验运行即可成功 准备工作 1. 新建一个项目 2. 导入uview组件库 在进行配置之前&#x…

Doris 与 Clickhouse 对比(一)

1. 常用引擎 ☕️ Doris 表数据模型 duplicate key &#x1f3ac; 场景&#xff1a;适用于数据无需提前聚合的分析业务。 ⚠️ 注意点&#xff1a;只指定排序列&#xff0c;相同的行并不会合并。 unique key &#x1f3ac; 场景&#xff1a;适用于有更新需求的业务。 ⚠…

RustDesk私有化部署,自建远程桌面搭建教程

以linux操作系统为例&#xff1a; 解压安装 # 使用wget进行下载1.1.8-2版本&#xff08;最新版本可以看上述发布地址&#xff09; wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rust…

Debezium发布历史90

原文地址&#xff1a; https://debezium.io/blog/2020/04/09/using-debezium-with-apicurio-api-schema-registry/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 将 Debezium 与 A​​picurio API 和架构注册表…

C++面试:散列表

目录 1. 散列表的基本概念 散列表的定义 散列函数 哈希冲突 2. 处理冲突的方法 链地址法&#xff08;Separate Chaining&#xff09; 开放地址法 再散列 3. 散列表的性能分析 1. 平均查找长度&#xff08;ASL&#xff09; 2. 负载因子&#xff08;Load Factor&#…

java的==运算符和equals详解

①chatgpt的解释 在Java中&#xff0c;和equals都是用于比较两个对象的操作符&#xff0c;但它们的行为和用途有所不同。 操作符&#xff1a; 对于基本数据类型&#xff0c;比较的是它们的值是否相等。例如&#xff0c;int a 5; int b 5; System.out.println(a b); // 输出t…

TensorFlow2实战-系列教程1:回归问题预测

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、环境测试 import tensorflow as tf import numpy as np tf.__version__打印结果 ‘…

Flutter环境搭建【win10虚拟机】+夜神模拟器【主机】

Flutter环境搭建 0 Android Studio 与 VS Code 资源消耗对比1 系统配置要求2 Flutter SDK2.1 获取 Flutter SDK2.2 解压2.3 更新 path 环境变量Dart SDK 要兼容 Flutter SDK双击 flutter_console.bat 输入 flutter doctor 检测环境 3 VS code 与插件3.1 安装 VS code3.2 安装 f…