专栏首页性能与架构Redis的Lua的功能扩展

Redis的Lua的功能扩展

Redis支持使用Lua脚步来进行功能扩展,这个能力给Redis带来了更多的应用场景,你可以编写若干命令组合,作为一个小型的非阻塞事务或者更新逻辑

使用脚本的好处

1更快

Redis应用的使用方式很多都是 read-compute-write 模式,这需要客户端与服务端进行两次或者多次通信,而如果把中间的compute过程转移到服务端执行,则可以大幅地减少round-trip时间

2减少网络开销

将多个请求通过脚本的形式一次发送,减少网络时延

3原子操作

redis会将整个脚本作为一个整体执行,中间不会被其他命令插入,因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务

4复用

客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑

Lua脚本示例

1hello world

先实现一个简单脚本,仅仅返回一个字符串 代码 文件名 hello.lua

内容

local msg = "Hello, world!" return msg 执行 redis-cli EVAL "$(cat hello.lua)" 0 执行结果 "Hello, world!"

2URL简写

假设我们要实现一个URL简写功能,对存入的每条URL都返回一个唯一数值,以便以后通过这个数值访问到该URL 思路 使用INCR获得一个ID,以此ID为key,以url为值,存入hash表中 代码 文件名 url.lua 内容

local link_id = redis.call("INCR", "links:counter") redis.call("HSET", "links:urls", link_id, "http://test.com") return link_id 执行 src/redis-cli EVAL "$(cat url.lua)" 0 执行结果 "1" 验证 登录redis客户端 > hget links:urls 1 返回信息 "http://test.com"

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何保证redis的安全?

    redis的作者的理念是‘简洁为美’,所以并没有为redis设计复杂的安全配置 redis需要运行在安全的环境下,要做好redis外部的安全工作,例如不使用re...

    dys
  • Redis3 cluster 集群配置测试

    image.png Redis3 已经正式支持集群了,之前需要使用第三方的代理来实现多个redis的集群 Redis 集群可以在多个 Redis 节点之间进行数...

    dys
  • redis性能测试工具 redis-benchmark

    image.png redis-benchmark 是redis自带的性能测试工具,可以用来测试本地或远程redis的性能 基本测试 redis-benchm...

    dys
  • 从今天起让我们忘记Java中的get/set方法吧!

    今天给大家推荐一款神器!让我们可以以一种更优雅的姿势编写我们的get/set方法。

    Java后端技术
  • 自动驾驶汽车到底涉及了哪些技术?

    作者:陈光 上汽集团 | 高精度地图&环境建模工程师 量子位 已获授权编辑发布 Google从2009年开始做自动驾驶,到现在已有8个年头。8个年头的技术积累还...

    量子位
  • Qt布局管理器

    在使用Qt Design来设计界面布局的时候,Qt为了方便我们提供了布局管理器。但是一定要设计了布局,才能使用弹簧,否则弹簧没有效果。如下所示:

    zy010101
  • geotools中泰森多边形的生成

    泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。

    lzugis
  • 【Sensors】运动传感器(3)

    重力,线性加速度,旋转矢量,显着运动,步进计数器和步进检测器传感器基于硬件或基于软件。 加速计和陀螺仪传感器始终基于硬件。 大多数由Android设备驱动的设备...

    py3study
  • 解决ASP.NET中的各种乱码问题

    经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。 在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。 页面显示乱码问题 在一...

    小端
  • 解决ASP.NET中的各种乱码问题

    在一个网站中,有些页面会正常显示,然而,有些页面会显示成乱码。 如果发生这种情况,可以检查一下web.config和文件编码。

    小端

扫码关注云+社区

领取腾讯云代金券