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,去压垮数据库
相关文章:

REDIS2.0
string list hash set 无序集合 声明一个key,键里面的值是元素,元素的类型是string 元素的值是唯一的,不能重复 多个集合类型之间可以进行并集,交集,集查的运算 sadd test1 a b c c d :添加5个元素&am…...

算法练习——模拟题
前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…...

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率
2024 年度总结系列 2024 年 10 月,京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践,荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…...
pytorch张量的fill_方法介绍
在 PyTorch 中,fill_ 是一个张量的原地操作方法,用于将张量中的所有元素填充为指定的值。 方法签名 Tensor.fill_(value)参数 value (float or int): 要填充到张量中的值。 返回值 返回调用该方法的张量本身,且是经过修改后的张量。 特…...

WAP短信格式解析及在Linux下用C语言实现
WAP短信格式解析及在Linux下用C语言实现 一、引言二、WAP短信格式概述三、WAP短信头的内容四、UDHI与WAP短信体的关系五、在Linux下用C语言解析WAP短信头及短信体内容一、引言 在移动通信领域,短信作为一种古老却稳定的通信方式,一直扮演着重要的角色。随着技术的发展,短信…...
Linux的诞生与发展、体系结构与发行版本
Linux作为一个开源操作系统,在过去几十年中一直扮演着至关重要的角色。它不仅深刻影响了服务器、桌面和移动设备,还成为了开源运动的重要组成部分。本文将介绍Linux的历史、体系结构、以及主要的发行版,帮助你更好地了解Linux的方方面面。 一…...

为什么Mysql用B+树作为索引
首先,能作为索引的数据结构有很多,例如数组、链表、二叉树 数据和索引都是存储在磁盘里的。 我们通过索引来查询数据时,先从磁盘读取索引到内存,再通过索引从磁盘中找到某行数据,然后读入到内存。 要设计一个适合 MySQ…...
探索 DC-SDK:强大的 3D 地图开发框架
在现代 Web 开发中,地理信息系统(GIS)和 3D 地图可视化变得越来越重要。dc-sdk 是一个基于 Cesium 的开源 WebGL 地图开发框架,它提供了丰富的地图可视化功能和简单易用的 API,使开发者能够轻松地在 Web 应用中集成 3D…...

C#高级篇 反射和属性详解【代码之美系列】
🎀🎀🎀代码之美系列目录🎀🎀🎀 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...

算法 class 005 (对数器C语言实现)
对数器的概念: 用来测试你的算法是否正确。 怎么做呢? 1:比如,写个冒泡排序,作为对比的对象 2:生成一个随机数 数组,用来测试 3:用冒泡排序和你想要验证的那个排序算法,同…...

windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter
1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…...

leetcode 面试经典 150 题:矩阵置零
链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…...
SQL中的TRIM用法
TRIM 是 SQL 中用于去除字符串两端(左侧和右侧)的空格或特定字符的函数。这个函数常用于清理数据中的无效空白字符,尤其是在从外部系统导入数据时,常常会遇到数据两端有不必要的空格,使用 TRIM 可以去除这些多余的字符…...

Git Flow 工作流:保障修改不破坏主功能的完整指南20241230
Git Flow 工作流:保障修改不破坏主功能的完整指南 引言 在团队协作和个人项目中,Git Flow 是一种可靠的分支管理策略。通过清晰的分工和规范的流程,它能有效保障代码改动的安全性,避免修改破坏主功能,同时提高开发效…...

CentOS 7安装Docker详细教程
本文以 CentOS7.8 为例安装 Docker 26.1.4 、Docker Compose、以及 Docker 镜像仓库。 1.安装Docker社区版 1.1 安装准备 1.1.1 检查系统环境 Docker 不支持32位的 CentOS 7 系统,要求系统内核版本为3.10 以上,可以通过命令 uname -r 来查看当前系统…...

如何在 Ubuntu 22.04 上安装 Varnish HTTP 教程
简介 在本教程中,我们将学习如何在 Ubuntu 22.04 服务器上安装和配置 Varnish HTTP。 Varnish 是一款高性能的 HTTP 加速器,旨在提高内容密集型动态网站的速度。它通过将网页缓存在内存中来工作,从而减少 Web 服务器的负载,并显…...
网络安全概念详解
人们对网络安全工程师的有哪些误会? “你们搞安全的盗个微信号/ QQ号应该很简单吧?” 说起来,我们经常说安全、安全,网络安全到底是什么? 一、什么是网络安全? “网络安全是指网络系统的硬件、软件及其…...

【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)
前言:音乐播放器是前端开发中的一个经典项目,通过它可以掌握很多核心技术,如音频处理、DOM操作、事件监听、动画效果等。这个项目不仅能提升前端开发的技能,还能让开发者深入理解JavaScript与HTML的协同作用。 页面展示࿱…...

PawSQL性能巡检平台 (3) - 慢查询采集和优化
在数据库运维管理中,慢查询一直是影响系统性能的重要因素。本文将详细介绍PawSQL数据库性能巡检平台在慢查询管理和优化方面的功能特性,帮助数据库管理员更好地应对性能挑战。 一、PawSQL巡检平台慢查询管理概述 PawSQL平台提供了全面的慢查询管理功能&…...

在docker中对MySQL快速部署与初始数据
1.准备工作 将已经准备好的Dockerfile文件与数据库初始化脚本init.sql放到 /usr/local目录中。 Dockerfile文件内容: FROM mysql:5.7 WORKDIR /docker-entrypoint-initdb.d ADD init.sql . FROM 代表来自mysql5.7的镜像,作为基准镜像。 WORKDIR设置工…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...