01 Redis的特性+下载安装启动+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自动启动

如果不自动启动,每次都要跑到conf所在地方(或输命令时手动指定),才能以配置文件方式启动,

在/etc/rc.d/init.d下新建redis.sh


#!bin/sh
#chkconfig: 2345 80 90
#Description:auto_run

/usr/local/bin/redis-server /opt/apps/redis715/redis.conf
#要注意,看看usr/local/bin下有没有redis-server这个东西,没有的话就把地址改去redis下的redis-server

给该文件增加权限 chmod 777 redis.sh

然后sh redis.sh, 即可执行该脚本,执行后redis会开启, 可以用ps -ef|grep redis检查是否正在执行
.
最后, chkconfig redis.sh on ,即可实现开机自启动.

疑问点, 网络上还存在着一个复杂脚本,不清楚两者实现效果有何不同:

#!/bin/sh
# chkconfig: 2345 80 90  
# description:  Redis is a persistent key-value database

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/redis.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF &
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    restart)
        "$0" stop
        sleep 3
        "$0" start
        ;;
    *)
        echo "Please use start or stop or restart as first argument"
        ;;
esac

2.6 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中看到插入的数据
在这里插入图片描述

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

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

相关文章

AP3464 车充 适配器IC 4-30V 2.4A 同步降压驱动器

AP3464 是一款支持宽电压输入的同步降压电源管理芯片,输入电压 4-30V 范围内可实现2.4A 的连续电流输出。通过调节 FB 端口的分压电阻,设定输出 1.8V 到 28V 的稳定电压。AP3464 具有优秀的恒压/恒流(CC/CV)特性。AP3464 采用电流模式的环路控制原理&…

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入) 反转(转移)控制(IOC Inverse of Control) 控制:对于成员变量赋值的控制权 反转控制:把对于成员变量赋值的控制权,从代码中反转(转移)到Spring⼯⼚和配置⽂件中完成好处:…

基于YOLOv8的摄像头吸烟行为检测系统(Python源码+Pyqt6界面+数据集)

💡💡💡本文主要内容:详细介绍了摄像头下吸烟行为检测系统,在介绍算法原理的同时,给出Pytorch的源码、训练数据集以及PyQt6的UI界面。在界面中可以选择各种图片、视频进行检测识别,可进行置信度、Iou阈值设定…

Pandas.Series.mode() 众数 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 传送门: Pandas API参考目录 传送门: Pandas 版本更新及新特性 传送门&…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题,关键在于理解题意。注意:第一…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go …

【时间安排】

最近刚刚回到家,到家就是会有各种事情干扰,心里变乱人变懒的,而要做的事情也要继续,写论文,改简历,学习新技能。。 明天后天两天写论文改简历 周一(早上去城市书房,可能吵一点戴个耳…

Java 的反射学习总结

一、什么是反射? 反射是指在运行时动态地获取、检查和修改类或对象的信息的能力,不需要在编译时知道类的具体细节。 二、如何获取类对象? 三、如何通过类对象来创建类的对象? 四、类对象获取类构造器的方式 通过获取私有构造器创…

招聘网站简单爬虫_24.1.26

完整程序传送门 24.1.26 前些天接了一个大两届的师兄的小活,做了一下爬boss直聘岗位信息的程序,在这里记录一下 程序框架 定义一个名为paQu的接口函数,用于检查窗口的输入,它接受一个参数self,获取self对象的a属性&am…

vmware-VCSA6.0部署

下载vcsa的iso包,解压后首先安装VMware-ClientIntegrationPlugin-6.0.0-6823256.exe 如果不配置域名配置成ip地址也可以 https://172.16.51.202/

1948-2022年金融许可信息明细数据

1948-2022年金融许可信息明细数据 1、时间:1948-2022年 2、来源:银监会(银监会许可证发布系统) 3、指标:来源表、机构编码、机构名称、所属银行、机构类型、业务范围、机构住所、地理坐标、行政区划代码、所属区县、…

Cloudreve的部署、迁移与新增离线下载节点

如果你是一个万物皆想编译的大佬,那么可以参考这里的官方文档: 构建 - Cloudreve 我们以使用官方提供的已编译的二进制文件部署为例 首先需要购买一台服务器,推荐使用美国等境外服务器,配置1核1G即可,但推荐2核2G Cl…

C++this指针

我们由一个题目引入&#xff1a; class Date { public:void Init(int year2024, int month1, int day27){_year year;_month month;_day day;}void Print(){cout << _year << "-" << _month << "-" << _day << en…

阿里云推出第八代企业级实例 g8i:AI 推理性能最高提升 7 倍、可支持 72B 大语言模型

云布道师 1 月 11 日&#xff0c;全球领先的云计算厂商阿里云宣布推出第八代企业级通用计算实例 ECS g8i&#xff0c;这也是国内首款搭载第五代英特尔至强可扩展处理器&#xff08;代号 EMR&#xff09;的云计算产品。依托阿里云自研的「飞天CIPU」架构体系&#xff0c;ECS g8…

分布式事务入门,最终一致性方案

分布式事务 回顾分布式事务 上篇内容我们说到了分布式事务的基本内容&#xff0c;讲到了分布式事务的实现主要有事务协调以及最终一致性两件事情来完成整个逻辑。 那么上个文章我们说过了 2PC、3PC、XA 三种协调事务的协议&#xff0c;这次我们来说事务协调处理完成后&#x…

node.js 分布式锁看这篇就够用了

Redis SETNX 命令背后的原理探究 当然&#xff0c;让我们通过一个简单的例子&#xff0c;使用 Redis CLI&#xff08;命令行界面&#xff09;来模拟获取锁和释放锁的过程。 在此示例中 获取锁: # 首先&#xff0c;设置锁密钥的唯一值和过期时间(秒) 127.0.0.1:6379> SET …

小型商用机器人,如何做到小而强?

兼顾体型和性能。 体型和性能的矛盾 一直以来&#xff0c;商用清洁机器人的应用场景主要集中在大型商场、超市、写字楼等&#xff0c;为什么1000平米以下的小型商超等中小场景却很少涉足&#xff1f;原因可以说有很多&#xff0c;但核心为两方面&#xff0c;一方面&#xff0…

2024幻兽帕鲁服务器,阿里云配置

阿里云幻兽帕鲁服务器Palworld服务器推荐4核16G配置&#xff0c;可以选择通用型g7实例或通用算力型u1实例&#xff0c;ECS通用型g7实例4核16G配置价格是502.32元一个月&#xff0c;算力型u1实例4核16G是432.0元/月&#xff0c;经济型e实例是共享型云服务器&#xff0c;价格是32…

Metaphor(EXA) 基于大语言模型的搜索引擎

文章目录 关于 Metaphor使用示例 关于 Metaphor Metaphor是基于大语言模型的搜索引擎&#xff0c;允许用户使用完整的句子和自然语言搜索&#xff0c;还可以模拟人们在互联网上分享和谈论链接的方式进行查询内容。 Metaphor同时还能与LLMs结合使用&#xff0c;允许LLMs连接互联…

网络安全04-sql注入靶场第一关

目录 一、环境准备 1.1我们进入第一关也如图&#xff1a; ​编辑 二、正式开始第一关讲述 2.1很明显它让我们在标签上输入一个ID&#xff0c;那我们就输入在链接后面加?id1 ​编辑 2.2链接后面加个单引号()查看返回的内容&#xff0c;127.0.0.1/sqli/less-1/?id1,id1 …