Redis安装部署和常用命令

news2024/11/26 2:47:38

文章目录

  • 一、关系数据库与非关系型数据库
    • 1.1 关系型数据库
    • 1.2 非关系型数据库
    • 1.3 关系型数据库和非关系型数据库区别
    • 1.4 非关系型数据库产生背景
    • 1.5 小结
  • 二、Redis基本概念
    • 2.1 Redis 简介
    • 2.2 Redis的优点
    • 2.3 使用场景
    • 2.4 哪些数据适合放入缓存中?
    • 2.5 Redis的数据类型
      • 2.5.1 五大基础数据类型
      • 2.5.2 特殊的数据类型
    • 2.6 Redis的端口号
    • 2.7 Redis为什么这么快?
  • 三、Redis 安装部署
    • Step1 环境准备
    • Step2 修改内核参数
    • Step3 安装redis
    • Step4 创建redis工作目录
    • Step5 修改配置文件
    • Step6 定义systemd服务管理脚本
  • 四、Redis相关工具
    • 4.1 Redis 命令工具
    • 4.2 redis-cli 命令行工具
    • 4.3 redis-benchmark 测试工具
  • 五、Redis 数据库常用命令
    • 5.1 set和get命令
    • 5.2 keys 命令
    • 5.3 del 命令
    • 5.4 exists 命令
    • 5.5 type 命令
    • 5.6 expire 命令
    • 5.7 ttl 命令
    • 5.8 rename 命令
    • 5.9 renamenx 命令
    • 5.10 dbsize 命令
  • 六、Redis 多数据库常用命令
    • 6.1 多数据库间切换
    • 6.2 多数据库间移动数据
    • 6.3 清除数据库内数据(慎用
    • 6.4 密码相关
      • 6.4.1 设置/修改密码
      • 6.4.2 查询redis的密码
      • 6.4.3 密码验证)

一、关系数据库与非关系型数据库

1.1 关系型数据库

关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。
SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgreSQL 等。
以上数据库在使用的时候必须先建库建表设计表结构,然后存储数据的时候按表结构去存,如果数据与表结构不匹配就会存储失败。

1.2 非关系型数据库

NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。
除了主流的关系型数据库外的数据库,都认为是非关系型。
不需要预先建库建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数(比如微信群聊里的文字、图片、视频、音乐等)。
主流的 NoSQL 数据库有 Redis、MongBD、Hbase、Memcached、ElasticSearch、TSDB 等。

1.3 关系型数据库和非关系型数据库区别

SQLNoSQL
存储结构二维表格结构不固定的,键值对、文档、索引、图形结构、时间序列等
扩展方式纵向扩展(提升硬件性能)横向扩展(增加服务器节点数量)
事务支持基于ACID原则,事务控制更稳定,细粒度更高基于BASE原则,稳定性和细粒度控制方面不如SQL
典型代表MySQL;MariaDB;Oracle;SQL-Server;PostgreSQLRedis;Memcached;MongDB;ElasticSearch ;Prometheus

1.4 非关系型数据库产生背景

可用于应对 Web2.0 纯动态网站类型的三高问题(高并发、高性能、高可用)。
1)High performance——对数据库高并发读写需求;

2)Huge Storage——对海量数据高效存储与访问需求;

3)High Scalability && High Availability——对数据库高可扩展性与高可用性需求。

关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给Web2.0的数据库发展带来新的思路。

让关系型数据库关注在关系上和对数据的一致性保障,非关系型数据库关注在存储和高效率上。

例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。

1.5 小结

关系型数据库:
实例–>数据库–>表(table)–>记录行(row)、数据字段(column)

非关系型数据库:
实例–>数据库–>集合(collection)–>键值对(key-value)
非关系型数据库不需要手动建数据库和集合(表)。

二、Redis基本概念

在这里插入图片描述

2.1 Redis 简介

Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的 NoSQL 数据库。
Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。

Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若CPU资源比较紧张,采用单进程即可。

2.2 Redis的优点

1)具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s;

2)支持丰富的数据类型:支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets 等数据类型操作

3)支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

4)原子性:Redis 所有操作都是原子性的;

5)支持数据备份:即 master-salve 模式的数据备份。

2.3 使用场景

Redis作为基于内存运行的数据库,是一个高性能的缓存,一般应用在Session缓存、队列、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等。
Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需要保证弱一致性、逻辑简单的场景。

我们通常会将部分数据放入缓存中,来提高访问速度,然后数据库承担存储的工作。

2.4 哪些数据适合放入缓存中?

●即时性。例如查询最新的物流状态信息。
●数据一致性要求不高。例如门店信息,修改后,数据库中已经改了,五分钟后缓存中才是最新的,但不影响功能使用。
●访问量大且更新频率不高,例如网站首页的广告信息,访问量大,但是不会经常变化。

2.5 Redis的数据类型

2.5.1 五大基础数据类型

string 字符串

list 列表

hash 哈希/散列

set 无序集合

sorted set/zset 有序集合

2.5.2 特殊的数据类型

HyperLogLogs基数统计

Bitmaps位图

geospatial地理位置

2.6 Redis的端口号

6379

还有nginx web nfs 的端口号

2.7 Redis为什么这么快?

1)redis基于内存运行,数据操作都是内存中完成的;

2)数据读写采用单线程模式,避免了多线程切换的CPU性能消耗,同时也不用考虑各种锁的问题;

3)采用IO多路复用模型,可以使线程处理更多的网络连接请求,提高并发能力。

三、Redis 安装部署

Step1 环境准备

#开机自动关闭防火墙
systemctl disable firewalld --now

#永久关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

在这里插入图片描述

Step2 修改内核参数

vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048

#vm.overcommit_memory:该配置项用于设置内存超额分配策略。
#当值为 0 时,表示内核会根据实际情况动态分配内存,但这可能导致内存超额分配,当系统内存不足时,可能会引发OOM(Out of Memory)错误。
#将其设置为 1 可以禁用内存超额分配,确保只有在内存充足的情况下才能进行内存分配。这对于确保系统稳定性和可靠性是有帮助的。

#net.core.somaxconn:该配置项用于设置系统中允许的最大挂起连接数。
#当系统接收到大量并发连接请求时,如果系统的连接队列已满,则新的连接请求会被拒绝。
#通过增加 net.core.somaxconn 的值,可以增加系统的连接队列大小,从而提高系统处理并发连接请求的能力。

sysctl -p

在这里插入图片描述

在这里插入图片描述

Step3 安装redis

wget https://download.redis.io/releases/redis-7.0.13.tar.gz

在这里插入图片描述

yum install -y gcc gcc-c++ make
yum install build-essential tcl python3 -y

tar zxvf /opt/redis/redis-7.0.13

cd /opt/redis/redis-7.0.13/


make
make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用先执行 ./configure 进行配置,可直接执行 make 与 make install 命令进行安装。

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

Step4 创建redis工作目录

mkdir /usr/local/redis/{conf,log,data}

cp /opt/redis/redis-7.0.13/redis.conf /usr/local/redis/conf/

cp /opt/redis-7.0.13/redis.conf /usr/local/redis/conf/
#建立用户redis来管理服务,更改工作目录的属主属组
useradd -M -s /sbin/nologin redis
chown -R redis.redis /usr/local/redis/

#环境变量
vim /etc/profile 
PATH=$PATH:/usr/local/redis/bin		
#增加一行
#可以直接使用redis命令

source /etc/profile

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

Step5 修改配置文件

vim /usr/local/redis/conf/redis.conf

bind 127.0.0.1 192.168.2.100				#87行,添加 监听的主机地址
protected-mode no					
#111行,将本机访问保护模式设置no。如果开启了,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应
port 6379									#138行,Redis默认的监听6379端口
daemonize yes								#309行,设置为守护进程,后台启动
pidfile /usr/local/redis/log/redis_6379.pid		#341行,指定 PID 文件
logfile "/usr/local/redis/log/redis_6379.log"
#354行,指定日志文件
dir /usr/local/redis/data	#504行,指定持久化文件所在目录
requirepass abc123			#1037行,增加一行,设置redis密码

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

Step6 定义systemd服务管理脚本

vim /usr/lib/systemd/system/redis-server.service
[Unit]
Description=Redis Server
After=network.target

[Service]
User=redis
Group=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#启动服务
systemctl start redis-server
systemctl enable redis-server

在这里插入图片描述

ss -lntp | grep 6379

在这里插入图片描述

四、Redis相关工具

4.1 Redis 命令工具

redis-server:Redis 服务器启动命令
redis-benchmark:性能测试工具,用于检测 Redis 在本机的运行效率
redis-check-aof:修复有问题的 AOF 持久化文件
redis-check-rdb:修复有问题的 RDB 持久化文件
redis-cli:Redis 客户端命令行工具
redis-sentinel:Redis 哨兵集群使用

4.2 redis-cli 命令行工具

#语法#
redis-cli -h host -p port [-a password]
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
#若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库
redis-cli -h 192.168.2.100 -p 6379 -a 'abc123' 

在这里插入图片描述

4.3 redis-benchmark 测试工具

基本的测试语法:redis-benchmark [选项] [选项值]-h :指定服务器主机名。
-p :指定服务器端口。
-s :指定服务器 socket
-c :指定并发连接数。 
-n :指定请求数。
-d :以字节的形式指定 SET/GET 值的数据大小。
-k :1=keep alive 0=reconnect 。
-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P :通过管道传输<numreq>请求。
-q :强制退出 redis。仅显示 query/sec 值。
--csv :以 CSV 格式输出。
-l :生成循环,永久执行测试。
-t :仅运行以逗号分隔的测试命令列表。
-I :Idle 模式。仅打开 N 个 idle 连接并等待。

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。

#向 IP 地址为 192.168.2.100、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能
redis-benchmark -h 192.168.2.100 -a 'abc123' -p 6379 -c 100 -n 100000

在这里插入图片描述

#测试存取大小为 100 字节的数据包的性能
redis-benchmark -h 192.168.2.100 -a 'abc123' -p 6379 -q -d 100

在这里插入图片描述

#可以只测试指定的几个命令
#测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
redis-benchmark -h 192.168.2.100 -a 'abc123' -p 6379 -t set,get,lpush -n 100000 -q

五、Redis 数据库常用命令

5.1 set和get命令

setget命令用于设置和获取键值对的

set用于存放数据

set key value [EX seconds] [PX milliseconds] [NX|XX]

#key 为键名
#value为键值
127.0.0.1:6379>set key1 1

在这里插入图片描述

get用于获取数据

get key

举个例子

127.0.0.1:6379> get key1

在这里插入图片描述

5.2 keys 命令

keys命令用于查询键,支持通配符*

#先赋值
127.0.0.1:6379> set k1 1
127.0.0.1:6379> set k2 2
127.0.0.1:6379> set k3 3
127.0.0.1:6379> set v1 4
127.0.0.1:6379> set v5 5
127.0.0.1:6379> set v22 5
#查看当前数据库中所有键
keys *

在这里插入图片描述

127.0.0.1:6379> KEYS v*				
#查看当前数据库中以 v 开头的数据

127.0.0.1:6379> KEYS v?				
#查看当前数据库中以 v 开头后面包含任意一位的数据

127.0.0.1:6379> KEYS v??				
#查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据

在这里插入图片描述

5.3 del 命令

删除当前数据库的指定键。

#
192.168.2.105:6379> del v1

192.168.2.105:6379> get v1

在这里插入图片描述

5.4 exists 命令

判断键是否存在,1表示键存在,0表示键不存在。
在这里插入图片描述

5.5 type 命令

查看键的数据类型
在这里插入图片描述

5.6 expire 命令

已存在的键设置过期时间

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

5.7 ttl 命令

查看键的生命周期时间,-1表示永不过期,-2表示已过期。

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

5.8 rename 命令

重命名键名,会覆盖已存在的键的值。

#命令格式
rename 源key 目标key

在这里插入图片描述

5.9 renamenx 命令

重命名键名,如果新键已存在则不执行重命名操作即不会覆盖

#命令格式
renamenx 源key 目标key

在这里插入图片描述

5.10 dbsize 命令

统计当前库的键的数量
在这里插入图片描述

六、Redis 多数据库常用命令

Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。
多数据库相互独立,互不干扰

6.1 多数据库间切换

#切换库,默认库ID为 0~15
select 库ID 

在这里插入图片描述

6.2 多数据库间移动数据

#移动键到指定的库
move 键 库ID            

在这里插入图片描述

6.3 清除数据库内数据(慎用

#清空当前库(慎用)
flushdb

#清空所有库(慎用)
flushall                

6.4 密码相关

#先登录到redis数据库
redis-cli -p 6379 [-a <password>] [-h IP]

在这里插入图片描述

6.4.1 设置/修改密码

config set requirepass 密码    

在这里插入图片描述

6.4.2 查询redis的密码

config get requirepass         

在这里插入图片描述

6.4.3 密码验证)

auth 密码                   

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2015-2022年商道融绿 ESG数据

2015-2022年商道融绿 ESG数据 1、时间&#xff1a;2015-2022年 2、指标&#xff1a;证券代码、证券简称、商道融绿ESG评级 3、范围&#xff1a;沪深A股上市公司 4、来源&#xff1a;整理自wind 5、指标解释&#xff1a; 商道融绿&#xff08;Sustainalytics&#xff09;E…

【Flink、java】

依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.11</artifactId><version>1.14.6</version></dependency><dependency><groupId>org.apache.flink</groupId>&…

jenkins流水线实现xjar加固

jenkins流水线实现xjar加固 xjar的定义 Spring Boot JAR 安全加密运行工具&#xff0c;同时支持的原生JAR。 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动&#xff0c;动态解密运行的方案&#xff0c;避免源码泄露或反编译功能特性 无需侵入代码&am…

nvm nodejs的版本管理工具

nvm 全英文名叫 node.js version management&#xff0c;是一个 nodejs 的版本管理工具&#xff0c;为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口&#xff0c;输入 npm cache clean…

rs渲染VRAM内存不足怎么解决?Redshift 处理 VRAM 不足的情况

在某些极少数情况下&#xff0c;Redshift 可能会生成以下类型的消息并中止渲染&#xff1a; Redshift cannot operate with less than 256MB of free VRAM. Frame rendering aborted. 或者… There is less than 128MB of free VRAM once fixed data and minimal ray memory ar…

用简单例子讲清楚webgl模板测试

文章目录 搭建简易的webgl环境绘制简单三角形&#xff08;不带stencilTest)绘制另一个三角形&#xff08;不带模板测试&#xff09;加入模板测试总结调参练习 搭建简易的webgl环境 一直以来&#xff0c;我只是想通过搭建纯webgl环境&#xff0c;进行开发&#xff0c;来清楚地了…

计算机毕业设计 基于微信小程序的学习资料销售平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

IP地址最终弹,DNS,数据链路层,特殊地址

目录 一、特殊地址 二、数据链路层 三、DNS 一、特殊地址 将IP地址中的主机IP全部设置为0&#xff0c;就成了网络号&#xff0c;代表这个局域网&#xff08;不可给具体的设备分配这个IP&#xff09; 将IP地址中的主机IP全部设置为1&#xff0c;就成了广播地址&#xff0c;给同…

灰色预测GM(1,1)

目录 一、灰色预测模型简介 二、GM(1,1)灰色模型 1、GM(1,1)模型预测方法 &#xff08;1&#xff09;原始数据&#xff08;参考列&#xff09; &#xff08;2&#xff09;累加生成序列&#xff08;Acumulated Generating Operator,1-AGO&#xff09; &#xff08;3&#xff…

一台电脑安装多个不同版本Python

1、前提 当前Windows电脑下已经安装了一个python3.11&#xff0c;现在需要安装一个python3.9。下载地址&#xff1a;Python Releases for Windows | Python.org 2、步骤 找到对应的版本&#xff0c;并下载安装包。下载后&#xff0c;打开安装包。按图片勾选&#xff0c;点击n…

【网络安全自学宝典】从零开始自学网络安全,按照这个路线就可以了

前景 很多零基础朋友开始将网络安全作为发展的大方向&#xff0c;的确&#xff0c;现如今网络安全已经成为了一个新的就业风口&#xff0c;不仅大学里开设相关学科&#xff0c;连市场上也开始大量招人。那么网络安全到底前景如何&#xff1f;大致从市场规模、政策扶持、就业方…

共赴华为全联接大会2023,新点软件携手加速数字政府建设

数字技术使能&#xff0c;加速行业智能化。9月20—22日&#xff0c;华为全联接大会2023在上海拉开序幕&#xff0c;来自全球ICT产业的业界思想领袖、商业精英、技术专家、先锋企业、生态合作伙伴、应用服务商以及开发者共襄盛会&#xff0c;共同探讨行业智能化的未来路径。 作…

【c语言】详解动态内存管理

目录 关于动态内存分配malloc和calloc函数介绍动态内存回收----freerealloc函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…

Windows系统ping命令的c++实现

// ping.cpp : 定义控制台应用程序的入口点。 //#include <winsock2.h> #include <stdio.h> #include <stdlib.h> #define ICMP_ECHO 8 #define ICMP_ECHOREPLY 0 /* The IP header */ typedef struct iphdr { unsigned char h_len:4; // length of the…

什么是内容运营?

关于内容运营&#xff0c;在不同种类的公司&#xff0c;侧重点也不一样。 电商平台的内容运营岗更偏内容营销&#xff1b;产品功能比较简单的公司&#xff0c;内容运营和新媒体运营的岗位职责差不多&#xff1b;而内容平台的内容运营更多的是做内容的管理和资源整合。

使用ElementUI结合Vue完善主页的导航菜单和书籍管理的后台数据分页查询

目录 一、动态树 ( 1 ) 数据表 ( 2 ) 后端 ( 2 ) 前端 二、书籍管理 数据表 后端 前端 ElementUI的背景 是一套基于Vue.js的桌面端组件库&#xff0c;由饿了么前端团队开发维护。它提供了丰富的UI组件和交互效果&#xff0c;可以帮助开发者快速构建出美观、易用的We…

第77步 时间序列建模实战:多因素预测 vol-2(以ARIMA为例)

基于WIN10的64位系统演示 一、写在前面 上一期&#xff0c;我们构建了多变量的ARIMA时间序列预测模型&#xff0c;其实人家有名字的&#xff0c;叫做ARIMAX模型&#xff08;X就代表解释变量&#xff09;。 这一期&#xff0c;我们介绍其他机器学习回归模型如何建立多变量的时…

『C语言进阶』qsort函数及模拟实现

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言 &#x1f325;️每日语录&#xff1a;没有退路&#xff0c;只能让自己变得强大 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前言 在上篇指针进阶中&#xff0c;我们对函数指针、函数…

深入理解 Swift 新并发模型中 Actor 的重入(Reentrancy)问题

问题现象 我们知道,Swift 5.5 引入的新并发模型极大简化了并行逻辑代码的开发,更重要的是:使用新并发模型中的 Actor 原语可以大大降低并发数据竞争的可能性。 不过,即便 Actor 有如此神奇之功效,它也不是“万能药”,仍不能防止误用带来的问题。比如:Actor 重入(Reen…