`
zh_harry
  • 浏览: 102443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
877aca81-daac-33c8-8bf9-3a886cebc6c3
自己动手写java 框架
浏览量:28410
社区版块
存档分类
最新评论

REDIS LUA脚本使用经验分享

    博客分类:
  • JAVA
阅读更多
redis lua脚本出现之前redis是没有服务器端运算能力的,主要是用来存储,用做缓存用,运算是在客户端进行,这样带来了很大的带宽流量。lua出现之后这一问题得到了充分的解决,非常棒!

redis lua脚本api介绍
eval  在redis服务器端执行lur脚本
evalsha 在redis 以脚本的sha1签名值在服务器端执行lua 脚本
script exists  判断脚本是否存在
script flush  释放lur脚本的缓存
script load   以sha1签名值做为key保存脚本
script kill   杀死当前执行的肢本

参考地址http://www.redis.io/commands#scripting

eval 的参数为 EVAL script numkeys key [key ...] arg [arg ...]
redis 推荐使用参数格式调用lur脚本 为什么呢?

evalsha以key取代实际的脚本执行的,之所以用key是为了减少带宽流量,sha1一般要比实际的脚本短得多,如果脚本带着实参会在服务器端生成N份脚本,因为参数不同而脚本也会不同。所以才推荐使用参数化格式,

script load 参数为script 也就是说我们获取sha1的方法是在redis 服务器的,那么我们每次调用evalsha的时侯不都是要调用一次该方法?那么就得不偿失了

为了方便管理和维护,我一般将脚本以如下格式保存成lua文件

文件名自定义即可
第一行:sha1:(脚本的sha1签名)如果没有执行过则第一行为空
第二行:脚本内容

当我们执行脚本时先打开该lua文件解释出第一行sha1值,如果存在则直接调用evalsha 方法,如果不存在则调用load方法并将sha1值保存至lua文件。再调用evalsha方法即可。
分享到:
评论

相关推荐

    Redis面试指南:Redis面试宝典实用技巧分享

    Redis支持内嵌的Lua脚本,可以在服务器端执行复杂的逻辑,提高处理效率。 9. Pub/Sub(发布/订阅): 一种消息传递机制,允许发送者和接收者之间进行异步通信。 10. 内存管理: Redis通过LRU(Least Recently ...

    redis-3.0.0.rar

    而 "xufuli.txt" 文件可能包含了一些关于 Redis 使用、配置或安装的说明,或者是一位名为“徐福利”的作者对 Redis 的个人见解或经验分享。 总的来说,Redis 3.0.0 是一个强大且可靠的键值存储系统,适用于缓存、...

    这本书详细介绍了如何使用Redis进行应用开发,从基础到高级主题都有涵盖 适合有编程经验但对Redis不太熟悉的开发者

    书籍概述 "Redis in Action" 是一本实践指南,旨在帮助读者全面了解并掌握 Redis。书中不仅解释了 Redis 的基本概念和数据结构,还展示了如何在实际应用中有效地...脚本编写:讲解了如何使用 Lua 脚本扩展 Redis 功能。

    redis实战 Josiah L.Carlson著 黄建宏译 人民邮电出版社

    书中可能还包含了作者的经验分享和对Redis未来发展的洞察,对于想要深入了解和应用Redis的人来说,是一本不可多得的参考书。 总之,《Redis实战》是一本深入浅出的Redis指南,它将帮助你掌握Redis的核心概念和技术...

    redis压缩包.zip

    5. **Lua脚本**:通过内嵌的Lua解释器,用户可以编写脚本来实现更复杂的逻辑操作。 6. **发布订阅**:提供消息传递功能,用于实现解耦的通信模式。 7. **内存管理**:包括LRU(Least Recently Used)和LFU(Least ...

    redis的windos版本

    Redis的特点包括其内存数据结构存储、支持多种数据类型(如字符串、哈希、列表、集合、有序集合)、提供丰富的命令操作、支持发布/订阅模式以及lua脚本等。在Windows上运行Redis,开发者可以利用这些特性进行应用...

    RedisStudio

    5. **脚本编辑**:内置脚本编辑器,支持Lua脚本编写,可以方便地编写和执行复杂的Redis事务和脚本操作,这对于实现更高级的逻辑和处理大量数据非常有用。 6. **数据导入导出**:可以将Redis中的数据导出为JSON、CSV...

    Redis6.x视频教程分享下载

    9. **lua脚本**:Redis支持内嵌的Lua脚本,允许用户在服务器端执行计算任务,提升性能,减少网络通信开销。 10. **模块系统**:Redis 6.x引入了模块系统,允许开发者创建自定义数据类型、命令和持久化策略,极大地...

    Redis实战 高清扫描 62M pdf java 经典书籍

    4. **事务与Lua脚本**:Redis的事务虽然不如关系型数据库强大,但能保证命令的原子执行。Lua脚本则允许用户在服务器端执行复杂操作,提高效率。 5. **性能优化**:书可能会讨论如何调整Redis的配置参数以达到最佳...

    redis资料分享

    Redis Cookbook可能会涵盖如如何使用Redis的数据结构(如字符串、哈希、列表、集合和有序集合)、主从复制配置、事务处理、发布订阅模式、lua脚本编程等主题。这样的书籍对于快速查找和解决问题非常实用,是开发者...

    尚硅谷redis视频教程更新

    6. **最佳实践**:分享在生产环境中使用Redis的经验教训,帮助开发者避免常见错误。 综上所述,尚硅谷的Redis视频教程旨在全面覆盖Redis的核心知识点和技术细节,不仅适合初学者快速入门,也为进阶用户提供深入的...

    Excel模板超强、超详细Redis入门教程分享.pdf

    - Redis支持在服务器端执行Lua脚本,实现更复杂的逻辑处理。 - 能够有效地减少网络延迟,提高性能。 - 通过`EVAL`或`EVALSHA`命令执行脚本。 #### 六、高级配置与优化 **配置文件详解**: - **通用配置**:包括...

    Redis如何在项目中合理使用经验分享

    此外,还支持复制、Lua脚本、LRU驱逐策略、事务处理以及多种级别的磁盘持久化。Redis Sentinel和Redis Cluster能提供高可用性和自动分区。其独特的功能使得Redis适用于缓存、消息队列、计数、分布式锁等多种场景。 ...

    phpredis_5.4_vc9_nts扩展包

    Redis是一种内存中的键值对数据库,支持多种数据结构如字符串、哈希、列表、集合、有序集合等,同时具备持久化、复制、事务、Lua脚本等功能。 - `phpredis`提供了如`connect`、`set`、`get`、`lpush`、`hset`等方法...

    Windows下编译的Redis库,含(hiredis.lib,Win32_Interop.lib及相关头文件)

    如果你需要在Linux环境下编译或使用更高版本的Redis,可以通过联系发布者进行交流和学习,分享经验。 此外,了解Redis的数据结构和命令是至关重要的,例如字符串(String)、哈希表(Hash)、列表(List)、集合...

    redis开发的概要介绍与分析

    - **说明**:Lua脚本允许开发者在Redis服务器端执行复杂的逻辑操作,减少网络往返次数,提高性能。 - **应用场景**:适用于复杂的业务逻辑处理,如购物车结算流程等。 **3. LRU淘汰机制** - **说明**:Redis提供...

    openresty 最佳实践

    - 分享使用OpenResty的经验和团队合作的故事。 通过这些知识点,我们可以看到OpenResty不仅仅是一个Web服务器,它还具备了运行高性能应用程序的能力。开发者需要掌握Lua编程语言,了解Nginx的配置和工作原理,并且...

Global site tag (gtag.js) - Google Analytics