Redis入门篇(2)- 奇淫技巧

【从零开始学Redis】基础入门篇--超全总结笔记 黑马Redis课程从入门到精通,超全笔记!!!详细讲解 阅读详情

慢查询

许多的存储系统都提供了慢查询的配置,来帮助开发和运维排查线上哪些指令执行的时间耗时过长导致系统响应过慢。同样的Redis也不逊色,也提供了类似慢查询指令的配置。
Redis主要提供了两个配置属性slowlog-log-slower-than和slowlog-max-len,来配置慢查询指令的记录规则。

  • slowlog-log-slower-than

设置指令执行时间的阀值,如果超过该时间将会被记录下来。单位是微秒(1秒=1000毫秒=1000000微秒)默认值:10000微秒,建议配成10毫秒。

  • slowlog-max-len

记录最多的慢查询指令条数。其实Redis对于慢查询指令并不是记录在文件当中,而是以列表类型的格式存放与Redis内存中。如果慢查询的指令数量超出设定值将会以先进先出的方式剔除指令。 我们可以通过命令slowlog get [n] 获取前 n 条 慢查询指令。

  • 慢查询的相关指令
// 1. 获取前n条慢查询指令
slowlog get [n]
// 2. 查询当前慢查询指令列表的长度
slowlog len
// 3. 重置慢查询指令列表
slowlog reset

怎么用

慢查询的配置有两种方式

  • 修改redis的配置文件
  • 通过命令行进行修改,如下:
> config set slowlog-log-slower-than
> config set slowlog-max-len

此方式只能临时生效,如果希望服务重启后依然生效需要执行config rewrite 将配置持久化到本地文件。

使用Lua解决Redis的事务操作

Redis的PipleLine能够封装多个命令一次性传输至服务端执行,但这种批量操作并不是原子性操作。原生的批量操作虽然是原子性操作,但是功能的支持有限。Redis可以结合multi、exec、watch 三个指令来实现简单性的事务,对于指令语法上的错误能有效的实现数据回滚,但面对运行时发生的错误(如:某集合原先存放的数据类型为数值型,在添加时加入字符串类型导致报错),就不能回滚数据。为了能够满足事务的场景,Redis通过与Lua脚本的结合提供了强大的事务支持。(关于Lua脚本的语法大家网上自行查阅,本篇不做讲解)

怎么用

Lua脚本和Redis结合使用有3种方法

  1. eval 脚本内容 key个数 key列表 参数列表
> eval 'return "hello" .. KEY[1] .. ARGV[1]' 1 redis world
  1. redis-cli --eval 脚本文件 key个数 key列表 参数列表
$ redis-cli --eval /home/zmj/test.lua
  1. evalsha SHA值 key个数 key列表 参数列表
> evalsha dsfdsjl343j42lj34l23j4l3 1 redis world

该命令是先将Lua脚本加载至redis内存中会获得一个SHA1值,然后通过SHA1执行。此方式能够有效的复用脚本,提高执行效率。关于管理lua脚本的命令如下

// 加载脚本至redis内存中
$ redis-cli script load "$(cat /home/zmj/batch_incr.lua)"
// 是否存在此SHA1的脚本
> script exists 4ff9d1c915292602c
// 清除redis内存中的所有Lua脚本
> script flush

案例

需求:将排名前3的用户等级都上升一级

  • Lua脚本(batch_incr.lua)
-- 1. 前3名用户(使用Redis内置的API)
local userList = redis.call("SMEMBERS",KEYS[1]);
local count = 0 ;
-- 2. 遍历前3名用户
for index,key in ipairs(userList)
do
-- 3. 增加用户等级
	redis.call("incr",key);
	count=count+1;
end
return count;
  • 执行脚本
$ redis-cli --eval /home/zmj/batch_incr.lua

书写技术文章是一个循序渐进的过程,所以我不能保证每句话、每行代码都是对的,但至少能保证不复制、不粘贴,每篇文章都是自己对技术的认识、细心斟酌总结出来的。乔布斯说:我们在这个星球上的时间都很短,很少有机会去做几件真正伟大的事情,同时要做得好,我必须要趁我还年轻的时候完成这些事。
其实我想说的是,我是一枚程序员,我只想在有限的时间内尽可能去沉淀我这一生中所能沉淀下来的东西


清山绿水始于尘,博学多识贵于勤。

我有酒,你有故事吗?

微信公众号:「Java锦囊」。

欢迎一起谈天说地,聊Java。


FR4板材实战:用ADS 2023快速设计微带线低通滤波器(附Line-Cal计算技巧) 本文详细介绍了使用ADS 2023在FR4板材上设计1-3GHz微带线低通滤波器的工程技巧。通过Line-Cal工具快速计算微带线参数,解决FR4板材的介质损耗和阻抗匹配问题,提供从集总参数转换到分布参数的实用方法,并分享版图设计与实测验证的关键要点,帮助工程师高效完成射频滤波器设计。 阅读详情

相关推荐

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 407

Redis分区技术详解, Pipeline管道技术

Redis 分区技术(又称 Redis Partition)指的是将 Redis 中的数据进行拆分,然后把拆分后的数据分散到多个不同的 Redis 实例(即服务器)中,每个实例仅存储数据集的某一部分(一个子集),我们把这个过程称之为 Redis 分区操作。 Redis 实例指的是一台安装了 Redis 服务器的计算机。 分区(Partition)不仅是 Redis 中的概念,几乎所有数据库管理系统都会涉及到“分区”的应用。因此本节重点介绍有关分区的知识。 分区的优势 Redis 分区技术有两个方面的

youandme520的专栏 448

Java8动态生成SFunction:基于字段名的Lambda表达式实践

本文深入探讨了在Java8中如何基于字段名动态生成SFunction,以解决MyBatis Plus的LambdaQueryWrapper在动态查询场景下的局限性。通过核心原理LambdaMetafactory的解析和手把手的代码实现,展示了如何将字符串字段名转换为类型安全的Lambda表达式,从而实现真正动态、类型安全的查询条件构建与通用数据处理,显著提升代码的灵活性与安全性。

sss66的博客 953

Redis面试必杀技:这8个高频问题没准备就敢去面试?

Redis的知识点就像海绵里的水,挤挤总是有的。但面试时最关键的,是要把知识嚼碎了再吐出来——比如被问到缓存击穿,能结合项目中的真实案例讲解,绝对让面试官眼前一亮!记得在个人项目里加些Redis实践(就算只用了String类型也要包装成深度优化),这波啊,这波叫面试技巧拉满!(完)快去打开redis-cli实操吧!遇到问题欢迎评论区battle~

syntaxsage的博客 1031

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 291

5G NR PDCCH实战解析:从DCI格式到CORESET配置的完整指南

本文深入解析5G NR PDCCH的实战配置,涵盖DCI格式选择、CORESET配置及Search Space优化等关键内容。基于3GPP R16标准,提供现网部署中的典型问题解决方案,如覆盖边缘失步、多用户调度冲突等,帮助提升控制信令传输效率。特别针对5G NR PDCCH的灵活资源分配和自适应编码机制进行详细探讨。

weixin_29231263的博客 498

redis常用结构和奇淫技巧

Redis可以做什么 记录帖子的点赞数、评论数和点击数 (hash)。 记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset)。 记录帖子的标题、摘要、作者和封面信息,用于列表页展示 (hash)。 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset)。 缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash)。 记录帖子的相关文章 ID,根据内容推荐相关帖子 (list)。

微信公众号:一颗向上的草莓 426

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件)

本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。

weixin_29190169的博客 593

墙裂推荐!超全SpringBoot2.x的奇技淫巧,满足你一切开发需求

一个小伙伴最近参加某一线互联网公司的面试,被问到了一些Spring Boot源码的问题,看看大家能否答出来: 1、Spring Boot、Spring MVC、Spring之间的区别?(Spring Boot本质是什么?) 2、Spring Boot Starter是什么? 3、如何自定义Spring Boot Starter?(如何扩展Spring Boot) 4、Spring Boot的自动装...

xingduan5153的博客 975

将任意文件转换为Pcap网络数据包传输

一款实用的工具用于将任意文件转换为pcap网络数据包

村中少年的专栏 3188

STM32入门教程:自动门控制

通过这个简单的示例,我们展示了如何使用STM32微控制器来实现一个简单的自动门控制系统。如果有物体靠近门口,我们会改变doorState的值,并使用controlServoMotor函数来控制舵机电机的转动。具体的引脚连接可以根据您的具体硬件来定,例如将红外传感器的输出引脚连接到GPIOA_PIN0引脚。同样,具体的引脚连接可以根据您的具体硬件来定,例如将舵机的控制引脚连接到GPIOA_PIN1引脚。首先,我们需要包含必要的库文件和引用。然后,我们需要定义一些函数来处理红外传感器的输入和舵机电机的输出。

m0_75244442的博客 578

为什么我们做分布式要使用Redis

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34255055的博客 264

2025华为od机试真题B卷【版本管理】JavaScript实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 254

IDEA奇淫小技巧

IDEA是目前市场上最好用的IDE,我说的!前几年eclipse在市场上非常流行,因此大多数人都习惯了eclipse的一些快捷键。近年来,随着IDEA的兴起,很多人都放弃了exlipse...

Java笔记虾 675

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

将音频文件转二进制分包存储到Redis(奇淫技巧操作)

功能需求: 一、获取本地音频文件,进行解析成二进制数据音频流 二、将音频流转化成byte[]数组,按指定大小字节数进行分包 三、将音频流分成若干个包,以List列表形式缓存到redis数据库中 四、从redis数据库中获取数据,转换成音频流输出到浏览器播放、实现音频下载功能 程序如下: 1.在SpringBootpom.xml文件中添加Redis依赖 <!--Redis依赖--> <dependency> <groupId>org.springfr

南国以南i的博客 1154

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

scrapy各种持久化存储的奇淫技巧

理论 磁盘文件:   基于终端指令     1)保证parse方法返回一个可迭代类型的对象(存储解析到的页面内容)     2)使用终端指令完成数据存储到指定磁盘文件中的操作,如:scrapy crawl 爬虫文件名称 -o 磁盘文件.后缀 --nolog   基于管道     items.py:存储解析到的页面数据     pipelines.py:处理持久化存储的相关操作  ...

weixin_30737363的博客 100

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Redis 7 第一讲 安装配置 入门篇

多AOF文件支持7.0版本中一个比较大的变化就是 aof 文件由一个变成了多个,主要分为两种类型:基本文件(base files)、增量文件( incr files),请注意这些文件名称是复数形式说明每一类文件不仅仅只有一个。在此之外还引入了一个清单文件(manifest)用于跟踪文件以及文件的创建和应用顺序(恢复)config 命令增强对于Config Set和Get命令,支持在一次调用过程中传递多个配置参数。

PJ码匠人 716

Redis入门篇

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:Redis为了方便我们学习,将操作不同数据类型的命令也做了分组。

2301_80098154的博客 1358

java 音频 二进制互转,将音频文件转二进制分包存储到Redis(奇淫技巧操作)

功能需求:一、获取本地音频文件,进行解析成二进制数据音频流二、将音频流转化成byte[]数组,按指定大小字节数进行分包三、将音频流分成若干个包,以List列表形式缓存到redis数据库中四、从redis数据库中获取数据,转换成音频流输出到浏览器播放、实现音频下载功能程序如下:1.在SpringBootpom.xml文件中添加Redis依赖1 2 3 org.springframe...

weixin_28876287的博客 2473

Redis从入门到实战:入门篇

关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。 关于Redis数据库 redis是一种高级的k...

weixin_44176169的博客 2594

2026年春招Java面试突击版!拿定高薪offer的奇淫技巧!

面试官您好,我叫 XX,有 3 年 Java 后端开发经验,一直深耕电商行业,先后参与过电商订单中心、库存中心、支付系统的核心开发与架构优化,精通 Java 核心编程、JVM 调优、分布式微服务架构设计,对 Spring Cloud 全生态、MySQL、Redis、Kafka 等主流技术栈有丰富的实战落地经验,同时跟进过 JDK21 虚拟线程、Spring Boot 3.x 的新特性落地。

IT_1024的博客 520

【Redis】Redis入门篇(2)

Redis入门篇(1):涉及到Redis概念、Redis下载安装、命令行操作、Redis数据结构、持久化操作 Redis入门篇(2):了解使用Java客户端操作Redis。Redis连接池、实际应用案例。 本文目录五.使用Java客户端操作Redis5.1 Jedis使用步骤5.2 Jedis操作Redis中的数据结构1.字符串类型 string2.哈希类型 hash : Map格式3.列表类型 list : LinkedList格式。支持重复元素4.集合类型 set : 不允许重复元素5.有序集合类型

算法工程师dongab的博客 584

Redis学习——入门篇①

Redis学习——入门篇①

这里有一只小马吖 1650

Redis学习——入门篇②

Redis学习——入门篇②

这里有一只小马吖 1474

Redis学习——入门篇③

Redis学习——入门篇③

这里有一只小马吖 1396
上一篇: Redis入门篇(1)-类型技能
下一篇: ThreadPoolExecutor入门级
yi博说
博客等级 码龄11年 20粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值