Redis笔记
缓存过期时间很重要!redis是单线程的
对于内存过多的3中方案:
惰性删除:
在定时删除的基础上,对于已经过期了的数据,redis的随机选择算法一直没有选中这个数据,所以导致它就一直没被删除,但是查询操作一旦查到它,就把它给删了,这就是惰性删除
定时删除:
创建一个定时器,到点删除,这种方式对cpu不好,得让cpu维护定时器
定期删除:
每隔一段时间,对数据进行一次检查,删除过期的key。至于检查多少删除多少由算法决定。
内存淘汰策略:8种策略

缓存穿透:要查的redis没有,就到mysql查,第二次依旧如此,这就是缓存穿透
缓存雪崩:热点数据因过期被删除,导致大量请求涌mysql
一大堆数据同时过了有效期,然后又有很多对这些数据的需求:
解决方案:普通数据过期时间随机,热点数据永不过期
redis突然挂掉,导致重启后内存数据都没了
持久化:为了在突然断电后,重启能恢复到之前的状态
RDB(默认开启):一次遍历全部数据然后备份到本地dump.rdb(快照方式)
手动触发:阻塞当前redis,直到rdb完成。save 命令
自动触发:save 60 1000 命令 60秒内,如果超过1千个key被修改则写入到dump.rdb文件中(fork子进程)。
AOF(默认关闭): 把写命令记录下来,像mysql一样,写入到.aof文件中(文件追加方式)
先把记录放到临时缓冲区域:aof_buf
但是慢慢的.aof文件会变得很庞大,所以有了.aof压缩,在.aof压缩的过程中,新建了一个aof_rewrite_bur区,把操作写到这个缓冲取,等压缩完毕再把aof_rewrite_bur写入新的.aof文件中,.aof一旦压缩完毕,立马用新的.aof替换旧.aof
AOF3中策略:
always:收到命令就写,效率最慢,但是持久化最彻底
everysec:每秒钟写一次
no:依赖系统,默认是30秒写一次
reids4.0推出了RDB-AOF混合方式,而且默认启用
主从复制 高可用:
默认redis是一个服务器运行的,多个redis服务器的情况:
一个当主节点,负责写入和同步,主节点执行完命令后会通知到其他子字节(命令传播),为了主节点和子节点的数据同步。

当一个子节点挂了,主节点有游标(复制偏移量),每次发缓存给子节点,游标就会标记一下,所以子节点挂了主节点就知道从哪一步开始发缓存了。当主节点挂掉,子节点中的其中一个会变成主节点,这件事由哨兵redis服务器做,哨兵不用存取数据,专门管理主节点挂掉的情况(其实哨兵也不止一个,因为会有哨兵挂掉的情况),哨兵每隔10秒跟主节点确认还有那些子节点,还有每隔1秒的跟所有节点的心跳机制,但是由会出现,1个哨兵觉得一个节点挂了,剩下2个哨兵觉得这个节点没挂,那它就没挂。子节点变成主节点由硬件性能进行排序,或者子节点中跟主节点断开时间最短的子节点变成新的主节点,或者参考数据偏移量最大的。
集群没写
参考B站视频:【趣话Redis第一弹】我是Redis,MySQL大哥被我坑惨了!_哔哩哔哩_bilibili
redis-cli.exe 客户端 输命令的
redis-server 服务的 默认是开启运行的
5种类型:Sting、Hash、List、set、zset(sorted set)
String:
存:set name tom 取:get name
删:del name
值加一:incr age 不需要初始化 值减一:decr age
keys * 拿到所有的key
exists name name是否存在
expire name 10 设置过期时间10秒 persist name 取消过期时间
Hash:存实体类
hset user name tom
hset user age 18
hget user name
hget user age
hdel user name
hexists user name name是否存在
hincrby user age 10 加10,只有加没有减
hkeys user 拿user里的所有key
hvals user 拿user里的所有value
hgetall user key和value都拿
List:队列
rpush names tom 从右边添加
lpush
lrange names 5 10 从左边拿,5开始,10结束,下标从0开始
lrange names 0 -1 拿全部
lpop names 弹出最左边的key=name的value 弹出去就没了
rpop names
llen names 列表长度
insert names before tom jack 在tom前面插入一个jack
insert names after
lset names 0 tom tom的下标变成0,它成为了第一位
lrem names 1 tom 删除1个tom
lindex names 0 通过下标获取value
Set:不可重复!乱序
sadd names tom jack
smembers names 遍历所有value
srem names tom 删除tom
spop names 2 从names里随机弹出2个(3.0.5不支持)
sdiff name1s name2s 差集 name1s有且name2s没有的
sinter name1s name2s 交集
sunion name1s name2s 并集
Sorted set(Zset):
zadd nams 100 tom
zrange names 0 -1 withscores 升序查询 withscores 并且显示score
zrevrange 降序
zrank names tom 返回升序的tom下标
zrevrank 降序
zcard names 返回names的集合的个数
zincrby names tom 100 给tom加100分
zrangebyscore names 100 200 按[100,200)分数的范围正序返回value
zrevrangebycore 降序
zrem nams tom 删除names里面的tom
可读性前缀:
set user:1 tom
set user:2 jack
keys user:* 查所有的key
rename user:1 user:2 重命名
事务:
redis的命令是原子性的,所以批量执行指令时,中间某条指令错误并不会导致前面的指令回滚,后面的指令也不会停
multi 事务开始
exec 事务结束
当在做事务的时候,别的客户端发来了请求,需要等到时候后才会执行
在SpringBoot项目中使用jedis:
导包:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>
</dependency>
相关文章:
Redis笔记
缓存过期时间很重要!redis是单线程的 对于内存过多的3中方案: 惰性删除: 在定时删除的基础上,对于已经过期了的数据,redis的随机选择算法一直没有选中这个数据,所以导致它就一直没被删除,但是…...
centos 安装supervisor并运行网站
前言 之前一直用宝塔的**进程守护管理器【Supervisor】**来启动一些项目,如ThinkPHP、Hyperf的项目,或laravel的一些命令。如果不用宝塔怎么办呢? 一、简介[supervisor] [Supervisor] 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支…...
Hadoop面试题十道
问题 1:Hadoop是什么? 答案:Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的存储和处理。它基于Google的MapReduce和Google文件系统(GFS)的思想,旨在解决大数据量的处理和分析问题。…...
使用Docker-Compose对Docker容器集群快速编排
目录 一、Docker-Compose1、Docker-Compose使用场景2、Docker-Compose简介3、Docker-Compose安装部署4、YAML 文件格式及编写注意事项5、Docker Compose配置常用字段6、Docker Compose 常用命令7、Docker Compose 文件结构8、docker Compose撰写nginx 镜像9、docker Compose撰写…...
React-Redux 对Todolist修改
在单独使用redux的时候 需要手动订阅store里面 感觉特别麻烦 不错的是react有一个组件可以帮我们解决这个问题, 那就是react-redux。 react-redux提供了Provider 和 connent给我们使用。 先说一下几个重点知道的知识 Provider 就是用来提供store里面的状态 自动getState()co…...
初识微信小程序
新建小程序 创建一个新的微信小程序项目: 打开微信开发者工具,点击“新建项目”。 在弹出的窗口中,填写小程序的 AppID、项目名称和项目目录等信息。 点击“确定”按钮,等待微信开发者工具自动下载并安装所需的依赖库和框架。 …...
我们该如何入门编程呢
提醒:以下内容仅做参考,可自行发散。在发布作品前,请把不需要的内容删掉。 随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?选择编程语言:选择一种编程…...
App 软件开发《判断6》试卷及答案
App 软件开发《判断6》试卷及答案 文章目录 App 软件开发《判断6》试卷及答案判断题(对的打“√”,错的打“”;共0分)1.”ionic resources --icon"命令用于生成适应不同分辨率的App图标所应用的图片。(✔)2&#…...
MVC工作原理
MVC工作原理 有视图的情况 1.客户端(浏览器)发起请求,DispatcherServlet拦截请求。 2.DispatcherServlet根据请求信息调用HandlerMapping。HandlerMapping根据uri去匹配查询能处理的Handler(也就是我们所说的Controller&#x…...
使用 Redis 统计网站 UV 的方法
使用 Redis 统计网站 UV 的方法(概率算法) 文章目录 前言思路HyperLogLog 使用 Redis 命令操作使用 Java 代码操作 HyperLogLog 实现原理及特点使用 Java 实现 HyperLogLog小结 前言 网站 UV 就是指网站的独立用户访问量Unique Visitor,即相同用户的多次访问需要…...
黑客工具软件大全
黑客工具软件大全100套 给大家准备了全套网络安全梓料,有web安全,还有渗透测试等等内容,还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 👇👇👇 《黑客&网络安全入门&进阶学习包》 &a…...
uniapp主题切换功能的第二种实现方式(scss变量+require)
在上一篇 “uniapp主题切换功能的第一种实现方式(scss变量vuex)” 中介绍了第一种如何切换主题,但我们总结出一些不好的地方,例如扩展性不强,维护起来也困难等等,那么接下我再给大家介绍另外一种切换主题的…...
# 蓝牙音频相关知识
蓝牙音频相关知识 文章目录 蓝牙音频相关知识1 音频源2 蓝牙音频编解码器3 一些标准4 蓝牙音频其他相关知识4.1 蓝牙版本4.2 ANC(主动降噪)4.3 音响相关参数4.4 音质评价4.5 HI-Fi声音特点4.6 耳机线材4.7 耳机分类4.8 IP防尘防水等级4.9 噪音与量化噪音…...
【AI作画】使用DiffusionBee with stable-diffusion在mac M1平台玩AI作画
DiffusionBee是一个完全免费、离线的工具。它简洁易用,你只需输入一些标签或文本描述,它就能生成艺术图像。 DiffusionBee下载地址 运行DiffusionBee的硬性要求:MacOS系统版本必须在12.3及以上 DBe安装完成后,去C站挑选自己喜欢…...
2 STM32库函数 之 通用同步异步收发器(USART、串口)所有函数的介绍及使用
2 STM32库函数 之 通用同步异步收发器(USART、串口)所有函数的介绍及使用 前言一、USART固件库函数预览二、USART固件库函数具体介绍2.1 库函数 USART_DeInit2.2 库函数 USART_Init2.2.1 USART_InitTypeDef structure2.2.2 USART_InitTypeDef 成员 USART…...
SpringCloudAlibaba整合Sentinel实现流量控制熔断降级
目录 一、概念 二、整合Sentinel控制台 三、Sentinel规则配置 四、@SentinelResource资源保护注解...
CentOS 7安装 Postgre
零、前置条件 系统CentOS 7,并已联网,已安装gcc或者g编译器,GNU make版本3.80或以上,系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…...
rpc 异步非阻塞 io 配置 线程池和队列
相关 雪崩 - 如何重试 - sla和重试风暴的双保证_个人渣记录仅为自己搜索用的博客-CSDN博客 接口耗时公式 耗时 cpu时间 io时间 线程池数量 最佳数目 1s / 平均cpu时间 * 内核数. 最大平均cpu时间 接口耗时- all外部io时间. 结合gc , linux本身其他线程, 只会还少点. …...
【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS
JTS Java Topology Suite 几何计算: 1. 前端js就用这个 Turfjs的类库。参考网站: 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库,参考网站: JTS参考网站: 1. https://github.com/locatio…...
从Window中先多瞥几眼
JavaFx17官方文档中有如下的描述: Window类是一个顶层窗口类,在其中可以承载场景,并与用户交互。窗口可以是Stage、PopupWindow或其他类似的顶层窗口。 JavaFX Stage类是顶级的JavaFX容器。初级阶段由平台搭建。其他Stage对象可以由应用程序构造。 许多Stage属性是只读的…...
Cursor Pro功能解锁:3步实现免费无限制使用AI编辑器完整指南
Cursor Pro功能解锁:3步实现免费无限制使用AI编辑器完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...
《心核驱动:基于本质定义的AI性格自进化架构》
前言:拒绝表面调参,直击AI性格本质当前市面上的AI性格定制,大多停留在“表层调参”阶段——试图通过调整温度、Top-p等概率参数来模拟情感,结果往往顾此失彼,要么机械生硬,要么逻辑崩塌。真正的智能性格&am…...
基于 4SAPI 的企业文档智能处理系统:效率提升 20 倍,信息提取准确率 95%
前言 在数字化转型的今天,企业积累了海量的非结构化文档数据,包括合同、财务报表、技术手册、产品说明书、会议纪要、法律文件等。这些文档中蕴含着企业最核心的知识和资产,但传统的人工文档处理模式已经成为企业数字化的最大瓶颈࿱…...
EdgeDB终极性能优化指南:5个关键磁盘IO配置大幅提升数据读写速度 [特殊字符]
EdgeDB终极性能优化指南:5个关键磁盘IO配置大幅提升数据读写速度 🚀 【免费下载链接】edgedb Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more. 项目地址: https://gitcode.com/gh_mirro…...
芯片人才危机破局:D.E.I.B.战略如何驱动创新与商业成功
1. 芯片行业人才危机的深度剖析与D.E.I.B.的战略价值 最近和几位在芯片设计公司和晶圆厂负责招聘的老友聊天,大家不约而同地提到了同一个词:“焦头烂额”。不是项目进度卡脖子,而是人根本招不到。一位在模拟芯片公司做HR总监的朋友告诉我&…...
告别AT指令!用nRF52832的BLE NUS服务,5分钟搞定手机与开发板的双向通信
用nRF52832的BLE NUS服务实现高效蓝牙串口通信 在嵌入式开发中,设备与移动端的双向通信一直是个痛点。传统AT指令虽然简单,但效率低下、扩展性差,每次通信都需要复杂的握手流程。而基于nRF52832的BLE NUS(Nordic UART Service&…...
Odoo开源频道应用:构建企业级内容管理系统的完整指南
1. 项目概述:一个为Odoo生态注入活力的开源频道应用如果你是一名Odoo开发者或实施顾问,肯定遇到过这样的场景:客户需要一个功能强大、界面现代的“新闻”或“博客”模块,但Odoo原生的“网站博客”应用要么功能过于基础,…...
PaspberryPi推流
1. 创建启动脚本sudo nano /usr/local/bin/rtsp-stream.sh添加内容:#!/bin/bash# RTSP 音视频推流服务脚本 # 适配 Raspberry Pi 3B Camera Module USB 麦克风# 配置项 WIDTH1280 HEIGHT720 FRAMERATE15 VIDEO_BITRATE2000000 AUDIO_DEVICE"hw:1,0" …...
Starter计划配额耗尽预警失效?我们逆向解析其API响应头,发现3个未文档化的速率控制暗门
更多请点击: https://intelliparadigm.com 第一章:Starter计划配额耗尽预警失效?我们逆向解析其API响应头,发现3个未文档化的速率控制暗门 在对 Starter 计划的 API 调用行为进行深度监控时,我们观察到配额耗尽告警频…...
用C8051F单片机自带的12位ADC,实现16位精度的温度测量(附完整代码)
基于C8051F单片机12位ADC实现16位温度测量的工程实践 在嵌入式系统开发中,高精度温度测量往往需要昂贵的16位ADC芯片,但通过合理的算法设计,我们可以利用C8051F系列单片机内置的12位ADC实现等效16位的测量精度。本文将深入探讨过采样技术的实…...
