202103-30 redis通过lua脚本,获取满足key pattern的所有值方式 我们知道,redis提供了keys命令去获取所有满足格式的key,如我们键入命令keys"user*"将得到所有以user开头的key然后执行mget命令可以获取多个key的值,如但如果满足条件的key过多,我们要将所有key拿到,再用mget去拿到所有值则为相对比较麻烦,因此可以借助xargsredis-clikeys"user*"|xargsredis-climget获取到所有key的值也可以执行lua脚本localkeys=redis.call('keys',KEYS[1]);returnredis.call('mget',unpack(key... 继续阅读 >
202102-28 如何在C#中集成Lua脚本 背景在很多时候我们代码中的一些逻辑操作并不能够硬编码到代码中,我们可能希望通过配置来完成这个操作,所以这个时候我们就需要有一些脚本语言能够处理这些操作,在C#语言中比较常见的就是通过引入NLua这个动态库来引入lua脚本语言从而达到灵活配置的目的,这篇文章主要是通过具体的实例来说明在C#中如何通过引入NLua并调用配置的脚本。步骤1引入NLua.dll这个dll是一个很轻量级的库,100kb左右,引用这个库可以通过Nuget... 继续阅读 >
202009-29 通过redis的脚本lua如何实现抢红包功能 redis脚本介绍Redis从2.6版本开始,通过内嵌支持Lua环境好处减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络延迟原子操作。redis将整个脚本当作一个整体去执行,中间不会被其他命令插入,无需担心脚本执行过程中会出现竞态条件复用。客户端发送的脚本会永久保存在redis中,可以复用这一脚本数据库表设计简单两张表,一个红包表,一个红包领取记录表CREATETABLE`t_red_envelope`(`id`bigint(20)NOTNUL... 继续阅读 >
202009-24 Golang使用lua脚本实现redis原子操作 目录[redis调用Lua脚本](#redis调用Lua脚本)[redis+lua实现评分排行榜实时更新](#redis+lua实现评分排行榜实时更新)[lua脚本](#lua脚本)Golang调用redis+lua示例byte切片与string的转换优化redis调用Lua脚本EVAL命令redis调用Lua脚本需要使用EVAL命令。redisEVAL命令格式:redis127.0.0.1:6379>EVALscriptnumkeyskey[key...]arg[arg...]最简单的例子:127.0.0.1:6379>eval"return{'Hello,GrassInWi... 继续阅读 >