`

Redis使用LUA脚本计算HashMap中的Value的SUM

阅读更多

统计Redis中HashMap缓存中Value的数据值:

 

local  sizeList = redis.call("HVALS", KEYS[1])
local  total_size = 0
for    index, line in pairs(sizeList) 
do 
       total_size = total_size + tonumber(line)
end
return total_size

 

1. 上传脚本

[eagle@greatwqs src]$ ./redis-cli script load "$(cat /home1/eagle/apps/redis/lua/folder_size.lua)"

"104fc275456ac249b6e266a345d424cf9efe62f4"

2. 造数据

[eagle@greatwqs src]$ ./redis-cli

127.0.0.1:6379> HMSET wqstest folder-1 100 folder-2 200 folder-3 300

OK

127.0.0.1:6379> hvals wqstest

1) "100"

2) "200"

3) "300"

127.0.0.1:6379> exit

3. 使用脚本测试数据

[eagle@greatwqs src]$ ./redis-cli --eval /home1/eagle/apps/redis/lua/folder_size.lua wqstest

(integer) 600

 

PS: 使用脚本造数据

local  redisKey = KEYS[1]
redis.call('DEL', redisKey) 
local total_count = tonumber(KEYS[2])

for loopIndex=1, total_count do
  redis.call('HMSET', redisKey, loopIndex, loopIndex) 
end
return redis.call('HLEN', redisKey) 

[eagle@greatwqs src]$ ./redis-cli --eval /home1/eagle/apps/redis/lua/create_hm_value.lua test 500000

(integer) 500000

造50W条数据, 耗时感觉在秒级别.

 

再用上面第一个脚本计算一下SUM:

[eagle@greatwqs src]$ ./redis-cli --eval /home1/eagle/apps/redis/lua/folder_size.lua test

(integer) 125000250000

很快, 低于500MS就返回了.

分享到:
评论

相关推荐

    redis.lua lua脚本语言

    lua链接redis的工具驱动代码

    SpringBoot+Redis执行lua脚本的方法步骤

    主要介绍了SpringBoot+Redis执行lua脚本的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java学习资料-Spring Boot - 结合 Redis 使用 Lua脚本

    使用场景: 高并发场景:在高并发场景下,使用 Lua 脚本可以实现原子性操作,避免并发问题。 复杂业务逻辑:对于复杂的业务逻辑...易于集成:Spring Boot 提供了对 Redis 和 Lua 脚本的支持,可以方便地集成到项目中。

    java+redis+lua实现重复提交操作拦截.zip

    java+redis+lua实现重复提交操作拦截.防止出现同一数据在同一时间被操作多次。实现基于aop和注解。

    Golang使用lua脚本实现redis原子操作

    目录 [redis 调用Lua脚本](#redis 调用Lua脚本...redis调用Lua脚本需要使用EVAL命令。 redis EVAL命令格式: redis 127.0.0.1:6379> EVAL script numkeys key [key …] arg [arg …] 最简单的例子: 127.0.0.1:6379

    Redis+LUA脚本实现限流

    Redis+LUA脚本实现限流测试视频

    基于redis和lua脚本的分布式锁的实现

    基于redis和lua脚本的分布式锁的实现

    Redis执行Lua脚本的好处与示例代码

    Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。下面这篇文章主要给大家介绍了关于Redis执行Lua脚本的好处与示例代码,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

    redis-lua-debugger.zip

    rld 是一个非交互的调试工具,用于调试 Redis 的 Lua 脚本,这里有篇详细介绍的文章。 rld 特性包括: 易于安装,只有 6kB 可打印输出到本地和远端 跟踪执行的代码行 先进的数值变化的自动监控机制报告 报告...

    redis-lua 源码

    redis-lua 是 Redis 的 Lua 语言的客户端开发包。 示例代码: require 'redis' local redis = Redis.connect('127.0.0.1', 6379) local response = redis:ping() -- true redis:set('usr:nrk', 10) redis:set('usr...

    Redis的Lua开发包redis-lua.zip

    redis-lua 是 Redis 的 Lua 语言的客户端开发包。 示例代码: require 'redis'local redis = Redis.connect('127.0.0.1', 6379) local response = redis:ping() -- trueredis:set('usr:nrk', 10) redis:set('usr:...

    lua-redis:lua reis nginx 配制 及 redis.lua 脚本

    lua reis nginx 配制 及 redis.lua 脚本 redis.lua 脚本 支持 get, post redis 的hash, 及 集合 命令 开启redis的密码认证auth nginxlua.conf 配制 lua地址: 示列: redis_lib.php 为PHP类包 redis_lua 类

    dappFinance#Note#【Redis】Redis执行Lua脚本Demo1

    1. 减少网络开销:本来多次网络请求的操作,可以用一个请求完成,原先多次请求的逻辑放在redis服务器上完成 2. 原子操作:Redis会将整个脚本作为一个整体

    redis和lua

    redis&lua

    SpringBoot-redis-lua

    SpringBoot2.X整合Redis实现Redis支持lua脚本代码实例。

    【Redis开发】lua脚本开发nginx 与 redis 模块

    【Redis开发】lua脚本开发nginx 与 redis 模块 (Lua script development nginx and Redis modules) 文件列表: lua_files (0, 2017-05-21) lua_files\access_control.lua (1813, 2017-05-21) lua_files\app_redis_...

    Redis Lua脚本.flv

    Redis Lua脚本.flv

    学废SpringBoot+Redis+Lua=王炸(值得珍藏)

    而Lua脚本语言则提供了灵活的脚本执行能力,可以在应用程序中实现复杂的业务逻辑和计算任务。通过Spring Boot的集成,开发者可以轻松地使用Redis和Lua来构建高效、可扩展的应用程序,同时简化了开发和维护过程。使用...

    详解Redis中Lua脚本的应用和实践

    后来,通过研究,发现可以通过 redis lua 脚本实现限流,这里将 redis lua 脚本相关的知识分享出来,讲的不到位的地方还望斧正。 redis lua 脚本相关命令 这一小节的内容是基本命令,可粗略阅读后跳过,等使用的时候...

Global site tag (gtag.js) - Google Analytics