一、缓存概述缓存(Cache)的作用是减少服务器对数据源的访问频率,从而提高数据库的稳定性。流程图 代码逻辑public Goods searchArticleByID(Long goodsId){ Object object=redisTemplate.opsForValue().get(String.valueOf(goodsId)); //缓存查询到了结果 if(object != n
转载 2023-07-08 03:22:54
54阅读
EVAL、EVALSHA命令Redis从2.6.0版本开始提供了eval命令,通过内置的Lua解释器,可以让用户执行一段Lua脚本并返回数据。因为Redis单线程模型的特点,可以保证多个命令的原子性(因为最近的项目需要用到简单的分布式锁,所以会用到lua来释放锁)脚本性能 Redis保证了脚本执行的原子性,所以在当前脚本没执行完之前,别的命令和脚本都是等待状态,所以一定要控制好脚本中的内容,防止出
转载 2023-08-15 17:51:36
306阅读
redis-2.6支持通过EVAL命令来执行lua脚本,对lua脚本的支持扩展了redis的应用场景,redis支持路脚本需要做2件事redis执行lua脚本在lua脚本里能执行redis的命令接下来,我将通过一个简单的实例来解析redis如何完成上述两个工作的。 构建一个简单的redis#define DICT_SIZE 100 struct redisDict { char*
原创 2023-05-08 14:24:01
323阅读
# 如何实现“redis缓存lua” ## 概述 在这篇文章中,我将教你如何使用Lua脚本和Redis实现缓存操作。首先,我会给出整个流程的步骤,并用表格展示,然后详细说明每一步需要做什么,包括需要使用的代码和注释。 ## 流程图 ```mermaid flowchart TD A(开始) --> B(连接Redis) B --> C(编写Lua脚本) C --> D(
原创 2024-04-02 06:14:24
48阅读
最近基于 Kong 做一些东西,其中一个插件的算法设计需要去 redis 做多次读取判断,于是准备把这部分实现逻辑放到 redis 侧,省去多次访问 redis 的网络开销。redis 的一般用法是对其基础数据结构的读写,因为数据都放在内存,读写非常迅速,进一步还支持执行 lua 脚本,redis 提供了一个 lua执行环境(注意是 5.1),并提供了一些在 lua 脚本中调用 redis
转载 2023-08-20 14:55:16
97阅读
## Redis Lua 脚本执行详解 ### 引言 Redis 是一个高性能的键值数据库,因其优秀的性能和灵活的数据结构广泛应用于缓存、会话存储等场景。为了提高数据操作的原子性,Redis 支持通过 Lua 脚本执行复杂的操作。本文将介绍如何在 Redis 中使用 Lua 脚本,并通过代码示例演示具体用法。 ### Lua 脚本基本概念 Lua 是一种轻量级的脚本语言,因其简单和高效被广
原创 2024-08-10 04:24:03
32阅读
今天我们来聊一聊redis缓存穿透和击穿,首先上一张图,来演示redis缓存在实际业务场景的使用用户端需要查询一个id=1的数据,发起查询请求到应用服务器,应用服务先到redis缓存中查询,如果redis缓存中没有,就会到数据库中查询,数据库中查询到了会保存到redis缓存中,再返回给应用服务器,最终返回到用户端。      这里查询id=1的数据,就会有以下几种情况
# Redis 查看 Lua 缓存教程 ## 概述 在本篇文章中,我们将学习如何使用 Redis 查看 Lua 缓存。首先,我们会介绍整个流程,并使用表格展示每个步骤。然后,我们将详细解释每个步骤所需的代码,并为这些代码提供注释。 ## 流程 下表展示了查看 Redis Lua 缓存的整个流程。 | 步骤 | 描述 | |--------|-------| | 步骤 1 | 连接到 Redi
原创 2023-11-24 12:59:47
407阅读
# Redis执行LuaRedis中,Lua是一种强大的脚本语言,具有编程语言的灵活性和强大的执行能力。通过执行Lua脚本,我们可以在Redis中实现一些复杂的逻辑和业务操作。本文将介绍Redis执行Lua的基本概念、语法和示例代码,帮助读者了解和使用Redis中的Lua脚本功能。 ## 为什么使用Lua脚本? Redis是一种高性能的键值存储数据库,它的主要特点是快速和简单。但是,对于
原创 2023-08-20 07:26:48
68阅读
EVAL 脚本 numkeys 键[键...] arg [arg ...]自Redis2.6.0版本起可用。时间复杂度:取决于执行的脚本。 EVAL介绍   EVAL和EVALSHA用于从Redis2.6.0版本,开始使用内置在Redis中的Lua解释器来评估脚本。 EVAL的第一个参数是一个Lua 5.1脚本。脚本不需要定义一
转载 2024-06-04 10:39:16
187阅读
redis支持lua脚本,可以在lua脚本中将多个redis执行单元组合在一起,完成原子性操作。先来看一个使用lua的简单示例:eval "if redis.call('get',KEYS[1]) == ARGV[1] then return 0 else return -1 end" 1 name star基本语法就是这样,KEYS用来传递redis要使用key值,ARGV用来传递脚本需要的值参
转载 2023-05-25 16:00:45
915阅读
简述Redis是一个事件驱动的程序,Redis基于Reactor模式开发了自己的网络事件处理器,通过IO多路复用程序来同时监听多个套接字,并通过队列排队传输给事件分派器进行处理,事件分派器通过套接字准备执行的操作(accept、read、write、close)关联对应的事件处理器来处理这些事件。 事件分派器只有处理完一个事件之后,才会处理队列中的下一个数据。客户端客户端连接到服务器之后,服务器对
转载 2023-06-14 17:36:11
107阅读
  一、基础1、简单介绍下RedisC写的开源高性能非关系型键值对数据库。底层采取epoll读写速度非常快,大多用于缓存,也提供了事务、持久化、集群以及多种数据类型的功能。2、你认为Redis有哪些优缺点?优点:读写速度快支持持久化支持事务数据结构丰富支持主从,数据分片缺点:不具备自动恢复功能较难支持在线动态扩容3、说说Redis的几种数据类型string:字符串、整数或者浮点
转载 2024-03-02 09:45:11
279阅读
文章目录一、前言二、Lua脚本具体操作2.1 Lua脚本可以保证原子性2.2 Redis执行Lua脚本2.3 在Lua脚本中执行Redis命令2.4 将lua脚本放到文件里三、Lua脚本使用3.1 案例:对IP进行限流3.2 案例:缓存Lua脚本和自乘案例3.2.1 通过摘要调用lua脚本3.2.2 自乘案例3.3 案例:脚本超时3.3.1 lua脚本执行死循环,lua脚本中没有redis s
本篇记录使用Redis Pipeline时,调用redis.clients.jedis.PipelineBase#eval时,报错JedisMoveDataException的问题;通过查看源码发现问题的原因,通过jedis在Github的issue了解了解决方案;涉及知识:Redis slot、Redis Pipeline、Redis Lua;问题背景有一段涉及用户通知疲劳度控制相关的代码,由于
转载 2023-08-03 15:57:03
275阅读
Openresty 是基于 Nginx 的一个成熟的网络平台,集成 Nginx 和加强的 LuaJit,许多实用的 Lua 库和一些高品质高性能的第三方 Nginx 模块。本文将使用 Openresty 来搭建一个简单的灰度发布系统。环境为 Cenos 7。1 安装 Openresty 下载源码wget https://openresty.org/download/openrest
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。关于redislua脚本的支持,这里简单描述一下 上图是执行效果 过程是这样的:1. 执行eval命令 2. lua环境将 "return 'hello world'" 封装成 f_... 的脚本函数 3. 然后执行返回不仅如此,lua脚本还可以通过redis.call和redis.pcall执行redis
一、Redis 命令Redis 命令用于在 redis 服务上执行操作。要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。语法Redis 客户端的基本语法为: $ redis-cli 有时候会有中文乱码。要在 redis-cli 后面加上 --raw redis-cli --raw 就可以避免中文乱码了。实例以下实例讲解了如
转载 2023-07-28 14:18:30
90阅读
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis执行。使用脚本的好处如下:1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复用
转载 2023-08-23 20:32:20
118阅读
# 使用 Redis 限制 Lua 脚本执行的完整指南 Redis 提供了非常强大且灵活的 Lua 脚本支持,通过它,你可以实现复杂的原子操作。然而,有时我们需要限制它的执行,比如说限制某个 Lua 脚本的执行次数,以防止系统资源被过度消耗。本文将分步骤讲解如何实现这一功能。 ## 流程概述 为了实现 RedisLua 脚本执行的限制,我们将按照以下步骤进行: | 步骤
原创 2024-09-07 03:45:38
262阅读
  • 1
  • 2
  • 3
  • 4
  • 5