代码编织梦想

【Redis系列7】Redis高级特性之发布/订阅和Lua脚本执行原理分析-爱代码爱编程

Redis高级特性之发布/订阅和Lua脚本执行原理分析 前言发布与订阅基于频道的实现实现原理分析基于模式的实现实现原理分析Lua脚本Lua脚本的调用Lua脚本中执行Redis命令Lua脚本摘要Lua脚本文件脚本异常脚本超时脚本陷入死循环为什么可以执行script kill命令总结 前言 Redis当中除了之前介绍的事务,持久化等高级特性之外,

知物由学 | Lua脚本保护的前世今生-爱代码爱编程

不少安全专家表示,在互联网上失去对代码的控制,就像把银行的设计图交给抢劫犯一样。   Lua是一种被广泛用于游戏开发中的一种计算机语言,方便开发者定制自己所需的功能。其中,红遍全球的《愤怒的小鸟》就是由Lua语言用Wax开发的。此外,梦幻西游、奇迹暖暖、开心消消乐、放置奇兵、最强蜗牛等手游也采用了Lua语言进行编写。     近年来,Lua脚

Nginx 高级应用-爱代码爱编程

新一代传输协议Https 什么是Https,和Http的区别HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是身披SSL外壳的HTTP HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包 为什么要用呢HTTPS 协议是由 SSL+

Redisson实现分布式锁-爱代码爱编程

目录 工作原理lua脚本加锁与锁互斥watch dog自动延期机制可重入锁机制释放锁机制代码 工作原理 lua脚本 现在某个客户端要加锁,且该客户端面对是redis cluster集群。 它会首先根据hash节点选择一台机器,紧接着会发送一端lua脚本到redis上。 lua脚本可以保证代码执行的原子性 加锁与锁互斥 加锁:

LUA教程环境非全局的环境 -61-爱代码爱编程

全局环境的一个问题是, 任何修改都会影响你的程序的所有部分。例如,当你安装一个metatable去控制全局访问时,你的整个程序都必须遵循同一个指导方针。如果你想使用标准库,标准库中可能使用到没有声明的全局变量,你将碰到坏运。 Lua 5.0允许每个函数可以有自己的环境来改善这个问题,听起来这很奇怪;毕竟,全局变量表的目的就是为了全局性使用。然而在Sect

LUA教程队列和双向队列-44-爱代码爱编程

虽然可以使用Lua的table库提供的insert和remove操作来实现队列,但这种方式实现的队列针对大数据量时效率太低,有效的方式是使用两个索引下标,一个表示第一个元素,另一个表示最后一个元素。 function ListNew () return {first = 0, last = -1} end 为了避免污染全局命名空间,我们重写上面

LUA教程完矩阵和多维数组-42-爱代码爱编程

Lua中有两种表示矩阵的方法,一是“数组的数组”。也就是说,table的每个元素是另一个table。例如,可以使用下面代码创建一个n行m列的矩阵: mt = {} -- create the matrix for i=1,N do mt[i] = {} -- create a new row for j=1,M

LUA教程多状态的迭代器-27-爱代码爱编程

很多情况下,迭代器需要保存多个状态信息而不是简单的状态常量和控制变量,最简单的方法是使用闭包,还有一种方法就是将所有的状态信息封装到table内,将table作为迭代器的状态常量,因为这种情况下可以将所有的信息存放在table内,所以迭代函数通常不需要第二个参数。 下面我们重写allwords迭代器,这一次我们不是使用闭包而是使用带有两个域(line,

LUA教程迭代器与闭包-24-爱代码爱编程

迭代器是一种支持指针类型的结构, 它可以遍历集合的每一个元素。在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素。 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里。闭包提供的机制可以很容易实现这个任务。记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量。每次闭包

Lua(第一天)-爱代码爱编程

Lua(第一天) Linux安装 curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz tar zxf lua-5.3.0.tar.gz 基础 动态类型,不需要声明类型,而在运行时决定数据类型没有整数类型,只有64位浮点数使用…来做字符串拼接使用#来获取字符串长度nil具有自己的类型,表示“找不到”

《Redis入门指南》笔记一-爱代码爱编程

本篇幅主要涉及Redis的配置、基础命令、四种数据类型的操作命令 Redis是Remote Dictionary Server远程字典服务器的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。到目前为止Redis支持的键值数据类型如下 1.字符串2.散列类型3.列表类型4.集合类型5.有序集合类型Redis命令返回值

REDIS执行LUA脚本整理-爱代码爱编程

在处理高并发业务数据的时候,经常把使用REDIS作为数据载体,以提高接口响应速度。在复杂业务场景下,一次请求可能会涉及大量的redis操作,为了保证数据一致性,再使用MULTI/EXEC命令就不太合适了。2.6版本后,REDIS开始支持LUA脚本(将客户端的LUA脚本存入REDIS服务端,然后再执行)在REDIS内部保证脚本操作数据时的一致性。 redi

springboot redis执行lua脚本报错:@user_script:1: ERR value is not an integer or out of range-爱代码爱编程

springboot整合redis使用RedisTemplate执行lua脚本报错:@user_script:1: ERR value is not an integer or out of range  执行代码(该段代码是获取锁的一段脚本)如下: @Autowired private RedisTemplate redisTempl

redis:基于redis实现分布式锁,lua脚本(二)-爱代码爱编程

1.lua简介 从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值。 Redis 使用单个 Lua 解释器