REDIS2.0

string list hash

set 无序集合

声明一个key,键里面的值是元素,元素的类型是string

元素的值是唯一的,不能重复

多个集合类型之间可以进行并集,交集,集查的运算

sadd test1 a b c c d :添加5个元素(但它不显示重复元素所以结果为4)

smembers test1:查看元素

scard test1 :查看元素个数

srandmember test1:随机返回该集合中的一个元素

spop test1:随机移除一个元素

smove test1 test2 a:将test1中的元素a,移到test2 中

scorted set zest 有序集合

1、声明一个key,key里面有元素,元素可以有多个,类型也是string,元素都是唯一的不能重复
2、每个元素都会关联double类型的分数,表示的是权重,元素可以通过权重的大小进行排序,元素的权重可以享用

zadd test3 1 one 2 two 3 three:创建有序集合,1、2、3是权重,one,two,three才是值

zrange test3 0 -1 withscores
返回结果会显示权重,不加withscores就只显示值

zrank test3 one:one在集合当中的索引下标的位置

zcount test3 1 2:统计test3有序集合中,权重>=1,<=2的个数

redis的持久化:

在redis当中,高可用的技术包括持久化,主从复制,哨兵模式,集群

1、持久化是最简单的高可用方式,作用就是备份数据,即 将数据保存到硬盘,防止进程退出导致数据丢失

redis的持久化方式:

1、RDB模式持久化····················>人工或者是定时的把内存当中的数据保存到磁盘,这是一种冷备份的方式(备份的时候不用关闭服务,恢复到时候需要关闭)默认的持久化方式

2、AOF模式持久化···················> 类似于mysql的二进制日志,把所有的redis的操作记录在二进制日志当中,恢复到时候从二进制日志的内容进行回复,全热备份,服务要重启

  • AOF的持久化的实时性更好,进程如果意外丢失,恢复的数据是最多的,AOF是主流的持久化方式

  • RDB持久化:快照持久化,文件的后缀名是 .rdb,redis每次重启时都会读取这个rdb文件进行恢复

save和bgsave

在这里插入图片描述

save可以在配置文件声明,也可以手动

bgsave:向主进程发送一个信号,主进程fork(后台)新建一个子进程,在fork的过程中,主进程阻塞,创建完子进程之后,阻塞解除,子进程来创建rdb文件

在这里插入图片描述

vim /etc/redis/redis.cnf

307gg

342gg

340gg:是否开启rdb文件的压缩

cp -a dump.rdb /opt/

rm -rf dump.rdb

cp -a /opt/dump.rdb /var/lib/redis

AOF持久化:一旦开启AOF持久化,redis会默认选择aof作为持久化方式,并且立刻读取二进制文件,开启AOF,一定要在初始化时开启
在这里插入图片描述

aof-load-truncated yes

当发现AOF文件被截断时,如果是yes,redis在重启时发现被截断,redis会尽可能的恢复数据,继续运行

no:如果发现AOF文件被截断,redis会拒绝启动

截断:写入过程中出现异常,内存当中有,但是没有完整写入到磁盘

9:10 -9:20
9:15-9:18

AOF的rewrite机制:重写
重写表示的是压缩,当这个二进制日志文件内容越来越多,文件越来越大,于是就有了重写的功能对二进制文件进行压缩

20G===18G

bgrewriteaof进程来进行处理
redis-clibgrewriteaof

rdb和aof之间的优缺点:
1、rdb的文件体积比aof小,适合全量备份,速度也比aof快
2、rdb不能实时持久化,数据如此重要,不能够丢失
3、RDB的兼容性比AOF要差,新老版本之间不能兼容

生产中:redis的版本一定要一致

  • APF的优点:实时持久化的策略,兼容性也好,文本格式保存的命令
  • 缺点:文件比较大,恢复速度比较慢,对磁盘的I/O性能要求也比较高

redis的性能管理

1、查看redis内存使用的情况:

used_memory:871704 redis数据占用的内存

userd_memory_rss:redis向操作系统申请的内存

userd_memory_peak:redis使用系统内存的峰值

root@redis1:/var/lib/redis# redis-cli info memory | grep ratio allocator_frag_ratio:1.23
分配器的碎片比例,分配器的碎片越多,浪费的内存越多,这个值越小越好

allocator_rss_ratio:2.76
分配器使用多少系统的内存

rss_overhead_ratio:2.74
RSS的开销比例,占用系统的物理内存的额外开销,这个值越低越好,越接近0,redis的实际的使用比就越高。

mem_fragmentation_ratio:13.92
内存的碎皮比例,内存碎片,系统分配之后,但是不能被利用的内存。越低,内存的利用率越高

配置redis的初始化,必须要给redis的内存设置阈值,不设置阈值,只要有需要,redis会占满整个内存,而且会继续占用交换分区的空间★★★★★★

设置阈值后,不会使用交换分区了,到达阈值,系统会自动回收生命周期不足的key

maxmemory-policy noeviction
#设置当达到最大阈值时,如何对键值进行回收,默认情况下是禁止回收的

volatile-lru:根据算法lru从过期时间的数据集合当中淘汰键值,主要是针对设置了ttl的键值对

volatile-ttl:根据算法,淘汰即将过期的数据(也是针对设置生命周期的数据)


allkeys-lru:根据lru算法,淘汰最近很少使用的数据

allkeys-random:淘汰任意的数据

一直删到小于或者等于内存阈值,才不会继续删除

redis的雪崩和redis的击穿,radis的穿透

缓存雪崩:整个作为数据库缓存的键值对,全部失效,redis没有办法处理缓存,所有的请求全部集中到数据库上,数据库很快就崩溃

1、redis集群大面积故障

2.所有的缓存键值对全部被删除(作为数据库缓存的键值对上不会设置生命周期的)

3、大量的redis请求失败,所有的请求直接到了数据库

缓存击穿:热点数据的缓存失效,大量的热点请求全部转发到了数据库

会导致数据库的性能大幅下降

热点数据设置成永不过期

1、我通过mysql的慢查询日志,发现了sql执行的速度突然大幅下降

2、查询redis,发现的缓存的键值对消失了

3、我没有redis的密码,专门负责数据库的人处理

redis穿透:缓存的键值对和数据库当中都没有数据,但是依然有客户端不断在请求,黑客利用漏洞,把大量请求绕过redis,去压垮数据库

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

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

相关文章

【论文阅读】DebSDF:深入研究神经室内场景重建的细节和偏差

【论文阅读】DebSDF&#xff1a;深入研究神经室内场景重建的细节和偏差 Abstract3.METHOD3.1 Preliminaries3.2 Uncertainty Guided Prior Filtering3.3 Uncertainty-Guided Ray Sampling3.4 Uncertainty-Guided Smooth Regularization3.5 Bias-aware SDF to Density Transform…

微服务SpringCloud分布式事务之Seata

视频教程&#xff1a;https://www.bilibili.com/video/BV16P63Y3ESq 效果演示 准备的微服务项目调用的链路如下&#xff1a; 文字描述&#xff1a; gateway模块接收到请求&#xff0c;并发送到order订单模块order订单模块接收到请求&#xff0c;新增一个订单数据后发送一个…

Pyhton知识分享-利用KNN算法实现手写数字识别

利用KNN算法实现手写数字识别 MNIST手写数字识别 是计算机视觉领域中 "hello world"级别的数据集 1999年发布&#xff0c;成为分类算法基准测试的基础随着新的机器学习技术的出现&#xff0c;MNIST仍然是研究人员和学习者的可靠资源。 本次案例中&#xff0c;我们的…

多点通信、流式域套接字

一、广播 1.1广播的发送端模型&#xff1a; #include<myhead.h>#define BEN_IP "192.168.191.129" #define BEN_PORT 8888#define PORT 6666int main(int argc, const char *argv[]) {int oldfd socket(AF_INET,SOCK_DGRAM,0);if(oldfd -1){perror("soc…

AMBA-APB

目录 1.APB 协议 2.APB信号列表 3.数据传输 3.1写传输&#xff08;2种&#xff09; 3.1.1 无等待状态的写传输 3.1.2有等待状态的写传输 3.2写选通信号 (PSTRB) 字节通道映射 3.3读传输&#xff08;2种&#xff09; 3.3.1 无等待状态的读传输 3.3.2有等待状态的读传…

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口&#xff0c;各位可以关其它的或者打开其它端口测试&#xff0c;谨慎关闭22端口&#xff01;不然就会像我下面一样握手超时&#x1f62d;&#x1f62d;&…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地

前言&#xff1a;本文教程为&#xff0c;上传文件到服务器并训练深度学习模型&#xff0c;与下载服务器文件到本地。演示指令输入&#xff0c;完整的上传文件到服务器&#xff0c;并训练模型过程&#xff1b;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

从零开始开发纯血鸿蒙应用之逻辑封装

从零开始开发纯血鸿蒙应用 一、前言二、逻辑封装的原则三、实现 FileUtil1、统一的存放位置2、文件的增删改查2.1、文件创建与文件保存2.2、文件读取2.2.1、读取内部文件2.2.2、读取外部文件 3、文件删除 四、总结 一、前言 应用的动态&#xff0c;借助 UI 响应完成&#xff0…

python读写文件的三种做法

对于文件操作&#xff0c;python提供了3种做法&#xff1a;open(), os.open() 和with open()语句。 1. open()函数&#xff1a;一般用于更高级的文件读写操作&#xff0c;即人能读懂的用法&#xff0c;如果是写入数据&#xff0c;可用传入字符串。 用法&#xff1a;open(path…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录&#xff0c;条件&#xff1a;某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data&#xff1f; Server-Sent Events (SSE)&#xff1a;允许服务器连续发送多个 data: 行&#xff0c;每个代表一个独立的数据块。 流式响应&#xff1a;大模型服务通常以流式响应方式返回数据&#xff0c;提高响应速度。 批量处理&#x…

【数据结构】链表(1):单向链表和单向循环链表

链表 链表是一种经典的数据结构&#xff0c;它通过节点的指针将数据元素有序地链接在一起&#xff0c;在链表中&#xff0c;每个节点存储数据以及指向其他节点的指针&#xff08;或引用&#xff09;。链表具有动态性和灵活性的特点&#xff0c;适用于频繁插入、删除操作的场景…

离散数学考前一天

判断强连通&#xff0c;单向连通&#xff0c;弱连通&#xff1a; 求可达性矩阵P&#xff0c;P里面全是1&#xff0c;就是强连通 否则看P与P的转置矩阵&#xff0c;如果除了主对角线是0&#xff0c;其他全是1&#xff0c;就是单向连通 否则看A1&#xff1d;A与A的转置矩阵&am…

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 &#x1f378;前言 &#x1f37b;一、服务器选择 &#x1f379; 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 &#x1f378;三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ &#x1f379;四、测试 &#x1f378;前言 小伙伴们大家好…

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器&#xff0c;最初作为HTTP服务器开发&#xff0c;主要用于服务静态内容如HTML文件、图像、视…

HTML——31.定义媒介资源

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>定义媒介资源</title></head><body><!--source标签用来为<video>视频和<audio>音频 &#xff0c;定义媒介资源--><!--src属性&…

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用&#xff0c;选择【安装配置】点击右边绿色按钮&#xff0c;进行安装&#xff0c;这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(一)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 三、传统微调范式&#xff08;Traditional Fine-Tuning Paradigm&#xff09; 在这个范式中&#xff0c;首先在大量未标记的文本数据上预…

【泰克生物】从酵母细胞表面展示到抗体筛选:实现精准药物发现

在现代药物发现领域&#xff0c;精准筛选和优化抗体已成为一种必不可少的技术手段。传统的抗体筛选方法依赖于动物免疫或体外筛选&#xff0c;这些方法往往成本高且周期长。近年来&#xff0c;酵母细胞表面展示技术&#xff08;Yeast Surface Display, YSD&#xff09;成为一种…

基于YOLOV5+Flask安全帽RTSP视频流实时目标检测

1、背景 在现代工业和建筑行业中&#xff0c;安全始终是首要考虑的因素之一。特别是在施工现场&#xff0c;工人佩戴安全帽是确保人身安全的基本要求。然而&#xff0c;人工监督难免会有疏漏&#xff0c;尤其是在大型工地或复杂环境中&#xff0c;确保每个人都佩戴安全帽变得非…