当前位置: 首页 > news >正文

【redis】初识redis入门,基础部署以及介绍

 本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、Redis简介

1.redis是什么

CopyRedis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。
Redis采用内存(In-Memory)数据集(DataSet) 。
支持多种数据类型。
运行于大多数POSIX系统,如Linux、*BSD、OS X等。
​
redis就是非关系型数据库的一种,存储方式是:key:value

2.redis的作用

Copy1.会话保持(键过期)
2.缓存(放在数据库前面,memcache,mongodb)
3.消息队列(kafka)

3.为什么要用Redis

Copy1.redis功能全面
2.redis企业使用率高

4.redis优点

Copy1.高速读写将所有数据存储在内存,单线程服务,使用C语言
2.部署简单,使用稳定
3.数据类型丰富String: 字符串类型Hash: 哈希类型List: 列表类型Set: 集合类型Sorted set: 顺序集合类型
4.支持持久化将内存的数据写入磁盘
5.多种内存分配及回收策略
6.支持事物、锁
7.消息队列、消息订阅
8.支持高可用哨兵模式
9.支持分布式分片集群
10.支持的客户端语言很多java,php,python,nodejs,C语言
​
11.redis为什么速度快呢:· 因为存储在内存当中,所以读写数据的时候不会受到磁盘i/o速度的限制,所以速度极快
12.redis为什么要部署多实例呢:· 因为redis是使用单线程方式,所以无法发挥多核cpu的性能,所以可能通过多实例来完善
13.为什么redis要基于单线程呢?· 单线程在每秒就能抗住10万+的并发,速度已经非常快了,所以就没有考虑多线程,毕竟也比较复杂,但是在redis4.0版本之后就       在某些功能上进行多线程操作

5.redis帮助

Copy官方网站:https://redis.io/
下载网站:http://download.redis.io/releases/
帮助网站:http://redisdoc.com/

6.缓存服务对比

Copy#Memcached:
1.优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。
2.缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高
​
#Redis:
1.优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
2.缺点:多线程读写较Memcached慢
​
#Tair:
1.优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
2.缺点:单机情况下,读写性能较其他两种产品较慢
​
#对比结论:
1.Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)。
2.Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景。

二、Redis使用场景

Copy1.缓存放在数据库前面
2.会话保持登录cookie、session折扣券,代金券
3.排行榜
4.计数器论坛帖子点赞点踩
5.社交软件QQ共同好友,微博共同爱好
6.消息队列结合ELK做日志收集

三、redis搭建

1.下载软件包

Copy[root@db01 ~]# rz redis-3.2.12.tar.gz
或者
[root@db01 ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz

2.安装依赖

Copy[root@db01 ~]# yum install -y gcc gcc-c++

3.解压移动

Copy[root@db01 ~]# tar xf redis-3.2.12.tar.gz 
[root@db01 ~]# mv redis-3.2.12 /usr/local/
[root@db01 ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis

4.安装

Copy[root@db01 ~]# cd /usr/local/redis
[root@db01 redis]# make

5.启动redis

Copy[root@db01 redis]# ./src/redis-server &
​
[root@db01 redis]# netstat -lntp  
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      11759/./src/redis-s

6.连接redis

Copy#配置环境变量
[root@db01 redis]# vim /etc/profile.d/redis.sh
export PATH=/usr/local/redis/src:$PATH
​
#连接
[root@db01 redis]# redis-cli 
127.0.0.1:6379> 

7.关闭redis

Copy[root@db01 redis]# redis-cli shutdown
11759:M 03 Aug 10:20:20.535 # User requested shutdown...
11759:M 03 Aug 10:20:20.535 * Saving the final RDB snapshot before exiting.
11759:M 03 Aug 10:20:20.546 * DB saved on disk
11759:M 03 Aug 10:20:20.546 # Redis is now ready to exit, bye bye...
[1]+  Done                    ./src/redis-server
​
​
[root@db01 redis]# redis-cli 
127.0.0.1:6379> shutdown
11851:M 03 Aug 10:20:59.580 # User requested shutdown...
11851:M 03 Aug 10:20:59.580 * Saving the final RDB snapshot before exiting.
11851:M 03 Aug 10:20:59.584 * DB saved on disk
11851:M 03 Aug 10:20:59.584 # Redis is now ready to exit, bye bye...
not connected> quit
[1]+  Done                    ./src/redis-server

四、redis配置文件

1.配置

Copy#默认的配置文件
[root@db01 redis]# pwd
/usr/local/redis
[root@db01 redis]# ll
-rw-rw-r--  1 root root 46695 Jun 13  2018 redis.conf
​
#创建reids配置文件目录
[root@db01 redis]# mkdir /service/redis/6379 -p
​
#编写配置文件
[root@db01 redis]# vim /service/redis/6379/redis.conf
bind 172.16.1.51 127.0.0.1                         #绑定的主机地址
port 6379                      #端口
daemonize no                             #守护进程模式启动
pidfile /service/redis/6379/redis_6379.pid                                 #指定pid文件
loglevel notice                     #指定日志级别
logfile /service/redis/6379/redis_6379.log                                #指定日志文件
databases 16                                                                              #设置数据库的数量,默认数据库为0
dbfilename redis_6379.rdb                                                                 #指定本地持久化文件的文件名,默认是dump.rdb
dir /etc/redis/6379                                                                       #持久化数据文件存储地址

2.指定配置文件启动

Copy[root@db01 redis]# redis-server /service/redis/6379/redis.conf

五、redis操作

1.基本操作

Copy1.连接redis[root@db01 redis]# redis-cli 127.0.0.1:6379>
2.查看所有数据127.0.0.1:6379> keys *(empty list or set)#查看时注意不要轻易使用,如想查看数据,先查看数据量DBSIZE127.0.0.1:6379> DBSIZE(integer) 2018041
3.添加数据127.0.0.1:6379> set k1 v1OK
4.查看数据127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> get k1"v1"
5.删除数据127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> DEL k1(integer) 1127.0.0.1:6379> keys *(empty list or set)
6.修改数据127.0.0.1:6379> set k1 v1OK127.0.0.1:6379> set k1 v11111OK127.0.0.1:6379> get k1"v11111"
7.追加数据127.0.0.1:6379> APPEND k1 000000(integer) 12127.0.0.1:6379> get k1"v11111000000"
8.切换库127.0.0.1:6379> SELECT 1OK127.0.0.1:6379[1]> SELECT 2OK127.0.0.1:6379[2]> SELECT 3OK127.0.0.1:6379> SELECT 16(error) ERR invalid DB index

2.密码的设置

Copy1.配置文件配置密码[root@db01 redis]# vim redis.conf requirepass 123
2.使用密码连接[root@db01 redis]# redis-cli -a 123
3.登陆后输入密码[root@db01 redis]# redis-cli127.0.0.1:6379> AUTH 123OK127.0.0.1:6379> DBSIZE(integer) 2018041
4.redis连接后获取密码127.0.0.1:6379> CONFIG GET requirepass1) "requirepass"2) "123"
5.redis连接后修改密码127.0.0.1:6379> CONFIG set requirepass 234OK[root@db01 redis]# redis-cli127.0.0.1:6379> DBSIZE(error) NOAUTH Authentication required.127.0.0.1:6379> auth 123(error) ERR invalid password127.0.0.1:6379> auth 234OK

3.通用操纵

Copy1.判断key是否存在127.0.0.1:6379> EXISTS k1(integer) 1           #存在则返回1127.0.0.1:6379> EXISTS k2(integer) 0           #不存在则返回0
​
状态码:
0   表示这个key不存在
1   表示这个key存在
N   表示有的N个key存在
​
2.修改key的名字127.0.0.1:6379> KEYS *1) "k1"127.0.0.1:6379> RENAME k1 k100OK127.0.0.1:6379> KEYS *1) "k100"
3.查看数据类型127.0.0.1:6379> TYPE k100string
4.设置生存时间#以秒为单位127.0.0.1:6379> EXPIRE qiudao 10(integer) 1#以毫秒为单位127.0.0.1:6379> PEXPIRE k100 10000(integer) 1
5.查看生存时间127.0.0.1:6379> TTL k100(integer) 1         #正整数生存时间倒计时127.0.0.1:6379> TTL k100(integer) -1        #-1代表没有设置生存时间127.0.0.1:6379> TTL k100(integer) -2        #代表设置过生存时间已删除,已过期
6.取消生存时间127.0.0.1:6379> TTL qiudao(integer) 93127.0.0.1:6379> PERSIST qiudao(integer) 1127.0.0.1:6379> TTL qiudao(integer) -1

六、持久化

1.什么是持久化

Copy将内存中的数据写入到磁盘,永久保存

2.持久化的模式

Copy1.RDB模式
2.AOF模式

3.RDB和AOF优缺点

Copy1.RDB和AOF优缺点
RDB: 可以在指定的时间间隔内生成数据集的时间点快照,把当前内存里的状态快照到磁盘上
优点: 压缩格式/恢复速度快,适用于备份,主从复制也是基于rdb持久化功能实现
缺点: 可能会丢失数据
​
AOF: 类似于mysql的binlog,重写,、每次操作都写一次/1秒写一次,文件中的命令全部以redis协议的格式保存,新命令会被追加到文件的末尾
优点: 安全,有可能会丢失1秒的数据
缺点: 文件比较大,恢复速度慢

4.RDB模式

Copy可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
1)RDB工作模式
Copy1.默认情况下,Redis保存数据集快照到磁盘,名为dump.rdb的二进制文件。你可以设置让Redis在N秒内至少有M次数据集改动时保存数据集,或者你也可以手动调用SAVE或者BGSAVE命令。
​
2.在上文中我们已经在配置文件中做过对应的配置:
例如,这个配置会让Redis在每个60秒内至少有1000次键改动时自动转储数据集到磁盘:
save 60 1000
​
3.当 Redis 需要保存 dump.rdb 文件时,服务器执行以下操作:
Redis 调用 fork() ,同时拥有父进程和子进程。
子进程将数据集写入到一个临时的 RDB 文件中。当子进程完成对新 RDB 文件的写入时, Redis 用新RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
​
4.这种方式使得 Redis 可以从写时复制机制中获益。
2)配置RDB持久化
Copy#编辑配置文件
[root@db01 ~]# vim /service/redis/6379/redis.conf 
bind 172.16.1.51 127.0.0.1
port 6379
daemonize yes
pidfile /service/redis/6379/redis_6379.pid
loglevel notice
logfile /service/redis/6379/redis_6379.log
#设置redis密码
requirepass 123
#持久化数据文件存储位置
dir /etc/redis/6379
#rdb持久化数据文件名
dbfilename dump.rdb
#900秒(15分钟)内有1个更改
save 900 1
#300秒(5分钟)内有10个更改
save 300 10
#60秒(1分钟)内有10000个更改
save 60 10000
3)使用RDB文件
Copy1.先停止redis
2.将rdb文件放到指定目录下
3.启动redis
​
结论:
1.执行shutdown的时候,内部会自动执行bgsave,然后再执行shutdown
2.pkill kill killall 都类似于执行shutdown命令.会触发bgsave持久化
3.恢复的时候,rdb文件名称要和配置文件里写的一样
4.如果没有配置save参数,执行shutdown不会自动bgsave持久化 
5.如果没有配置save参数,可以手动执行bgsave触发持久化保存
6.kill -9 redis 不会出发持久化

相关文章:

【redis】初识redis入门,基础部署以及介绍

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

数据库基础 -- 数据库约束

数据库基础 – 数据库约束 1.约束 1.1 概念 约束是用于强制数据库中数据 完整性 和 一致性 的规则。它们定义了对表中数据的限制,确保数据的有效性和正确性,实际上就是表中数据的限制条件。 1.2 分类 1.2.1 完整性约束 主键约束(Primary Key Const…...

U盘文件或目录损坏无法读取?专业恢复策略全解析

U盘困境:文件目录的隐形危机 在日常的数字生活中,U盘作为便捷的数据存储与传输工具,扮演着至关重要的角色。然而,当U盘中的文件或目录突然遭遇损坏,导致无法被正常读取时,这无疑给用户带来了极大的困扰。这…...

dpdk实现udp协议栈

使用DPDK实现UDP用户态协议栈,实现流程中包括: 三类线程 1、收发包线程 2、用户态协议栈线程 3、udp服务端线程 两类缓冲区: 1、协议栈收包缓冲区和协议栈发包缓冲区 2、udp收包缓冲区和udp发包缓冲区 协议栈缓冲区中存储的数据是str…...

Shell编程——基础语法(2)和 Shell流程控制

文章目录 基础语法(2)echo命令read命令printf命令test命令 Shell流程控制if-else语句for 循环while 语句until 循环case ... esac跳出循环 基础语法(2) echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于…...

Python基础教程(二)字符串和函数

6.字符串 6.1 字符串的表示方式 6.1.1 普通字符串 普通字符串指用单引号()或双引号(”")括起来的字符串。例如:Hello或"Hello" >>> Hello Hello >>> "Hello" Hello >>> s\u0048\u0065\u006c\u006c\u006f >>> …...

智算新风向丨趋动科技获中国信通院泰尔实验室首张智算资源池化能力泰尔测评证书

近日,趋动科技“OrionX AI算力资源池化软件”经中国泰尔实验室依据《FG-Z14-0172-01智算资源池化平台测试方案》评估测试,获得智算资源池化能力泰尔测评证书,成为该领域首个完成此评价的产品。 图1.OrionX通过智算资源池化平台评测 随着AI大…...

计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)

第4章 计算机网络与Internet 4.1 计算机网络概述4.1.1 计算机网络的定义4.1.2 计算机网络的发展4.1.3 计算机网络的功能4.1.4 计算机网络体系结构和TCP/IP 参考模型 4.2 计算机网络的组成和分类4.2.1 计算机网络的组成4.2.2 计算机网络的分类 4.3 网络传输介质和通信设备4.3.1 …...

MES系统在数字化转型中的核心作用与影响

数字化转型是企业利用数字技术改变其业务模式、运营方式、组织结构、产品服务等方面的过程,旨在提高效率、降低成本、增强竞争力并实现可持续发展。数字化转型涉及多个层面,主要包括以下几个方面: 数字化转型转什么 转战略:由构…...

装修施工注意事项

1 地漏保护 咋墙拆改时,一定要用保护盖把所有的地漏下水管道都拧紧 2 卫生间防水做完,必须要先用水泥砂浆做好保护层再贴,不然后续施工,不小心破坏防水层,以后漏水后悔都晚了。 3 入户门口处,一定要用…...

【Docker学习记录】

Docker学习记录 目录 1. Windows上使用wsl1.1 安装docker后遇到的一些疑惑1.2. wsl的一些相关命令1.3. 补一点,wsl的作用 2. docker一些常用的命令2.1 构建docker镜像2.2 运行镜像 3. Dockerfile的编写3.0 docker的一些概念3.0.1 容器的分层3.0.2 COPY-ON-WRITE 3.…...

互联网政务应用安全管理规定

互联网政务应用安全管理规定 (2024年2月19日中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部制定 2024年5月15日发布) 第一章 总则 第一条为保障互联网政务应用安全,根据《中华人民共和国网络安全法…...

HarmonyOS开发商城首页实现

目录 一:功能概述 二:代码实现 三:效果图 一:功能概述 这一节我们主要在鸿蒙OS系统中实现的一个底部导航功能,并在首页底部使用TabSwitch组件进行导航切换。同时,首页采用Search组件实现商品搜索框,Scroll和Swiper组件实现图片轮播功能,以展示推荐内容或图片。 1:…...

QtQuick Text-文本样式

属性 Text项目的style属性可以设置文本的样式。 支持的文本样式有: Text.Normal(默认)Text.OutlineText.RaisedText.Sunken 示例 import QtQuickRow{spacing: 10padding: 10Text {font.pointSize: 40text: "Normal"}Text {font…...

人工智能未来展望

深入剖析人工智能:现状、挑战与未来展望 在当今这个日新月异的科技时代,人工智能(AI)无疑是最为耀眼的明星之一。它以其独特的魅力,正引领着一场前所未有的技术革命,深刻地改变着人类社会的方方面面。本文…...

Pymol开源版安装 新版 3.0 / 3.1 Windows安装Pymol开源版

PyMOL 简介 PyMOL 是一个开源的分子可视化系统,被广泛应用于结构生物学中。它允许用户可视化分子结构,并创建高质量的蛋白质、核酸和其他大分子的3D图像。多年来,PyMOL不断发展,新版本引入了更多的功能和改进。 PyMOL 3.0 / 3.1…...

记录一次环境的安装

目录 新添加的代码 代码解释 为啥ubuntu用debian软件源 为啥修改sources.list.d S权限意思 php缺少和数据库连接的模块 使用root登陆数据库1698错误 字段解释 auth_socket解释 使用root登陆数据库方法 详细解释 首先在安装的时候,有一个dockerfile文件&a…...

浏览器用户文件夹详解 - WebData(八)

1.WebData简介 1.1 什么是WebData文件? WebData文件是Chromium浏览器中用于存储用户表单数据、自动填充信息和支付信息的一个重要文件。每当用户在浏览器中填写表单或保存支付信息时,这些数据都会被记录在WebData文件中。通过这些记录,浏览…...

ijkplayer 自定义协议播放加密内容 Android

想对播放的音视频进行加密,防止资源被盗用,该怎么办呢? 这篇文章从自定义协议的角度来提供一中实现思路。在 ijkplayer 的基础上,通过实现自定义协议对文件进行解密。边解边播,以此为基础,还可以实现在线资…...

【kill】Centos/Linux 如何杀死那该死的进程?

简介 系统版本:Centos7.6 kill 命令发送指定的信号到指定的进程或者进程组。如果该信号没有指定,则发送SIGTERM信号(15),即终止信号。如果SIGTERM信号(15)无法终止,可使用SIGKILL&am…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...