iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何解决Redis和Lua使用过程中遇到的问题
  • 697
分享到

如何解决Redis和Lua使用过程中遇到的问题

2024-04-02 19:04:59 697人浏览 八月长安
摘要

这篇文章主要介绍如何解决Redis和lua使用过程中遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题在 Redis 里执行 get 或 hget 不存在的 key 或 f

这篇文章主要介绍如何解决Redislua使用过程中遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

问题

在 Redis 里执行 get 或 hget 不存在的 key 或 field 时返回值在终端显式的是 (nil),类似于下面这样

127.0.0.1:6379> get test_version
(nil)

如果在 Lua 脚本中判断获取到的值是否为空值时,就会产生比较迷惑的问题,以为判断空值的话就用 nil 就可以了,然鹅事实却并不是这样的,如下所示:

127.0.0.1:6379> get test_version
(nil)
127.0.0.1:6379> EVAL "local a = redis.call('get',KEYS[1]) print(a) if a == 'nil' then return 1 else return 0 end" 1 test_version test_version
(integer) 0

我们来看下执行 Lua 脚本返回结果的数据类型是什么

127.0.0.1:6379> get test_version
(nil)
127.0.0.1:6379> EVAL "local a = redis.call('get',KEYS[1]) return type(a)" 1 test_version test_version
"boolean"

通过上面的脚本可以看到,当 Redis 返回的结果为 (nil) 时候,其真实的数据类型为 boolean,因此我们直接判断 nil 是有问题的。

Redis 官方文档

通过翻阅官方文档,找到下面所示的一段话,

Redis to Lua conversion table.

  • Redis integer reply -> Lua number

  • Redis bulk reply -> Lua string

  • Redis multi bulk reply -> Lua table (may have other Redis data types nested)

  • Redis status reply -> Lua table with a single ok field containing the status

  • Redis error reply -> Lua table with a single err field containing the error

  • Redis Nil bulk reply and Nil multi bulk reply -> Lua false boolean type

Lua to Redis conversion table.

  • Lua number -> Redis integer reply (the number is converted into an integer)

  • Lua string -> Redis bulk reply

  • Lua table (array) -> Redis multi bulk reply (truncated to the first nil inside the Lua array if any)

  • Lua table with a single ok field -> Redis status reply

  • Lua table with a single err field -> Redis error reply

  • Lua boolean false -> Redis Nil bulk reply.

解决方案

通过官方文档,我们知道判断 Lua 脚本返回空值使用,应该直接判断 true/false,修改判断脚本如下所示

127.0.0.1:6379> get test_version
(nil)
127.0.0.1:6379> EVAL "local a = redis.call('get',KEYS[1]) if a == false then return 'empty' else return 'not empty' end" 1 test_version test_version
"empty"

以上是“如何解决Redis和Lua使用过程中遇到的问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何解决Redis和Lua使用过程中遇到的问题

本文链接: https://www.lsjlt.com/news/57302.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决Redis和Lua使用过程中遇到的问题
    这篇文章主要介绍如何解决Redis和Lua使用过程中遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题在 Redis 里执行 get 或 hget 不存在的 key 或 f...
    99+
    2024-04-02
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2024-04-02
  • Android 使用volley过程中遇到的问题解决办法
    Android 使用volley过程中遇到的问题解决办法本文主要介绍使用 volley 过程中遇到的问题,错误提示:com.android.volley.NoConnectionError: java.io.InterruptedIOExc...
    99+
    2023-05-31
    android volley 过程中
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • 使用@ApiModel遇到的问题如何解决
    这篇文章主要介绍了使用@ApiModel遇到的问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇使用@ApiModel遇到的问题如何解决文章都会有所收获,下面我们一起来看看吧。@ApiModel遇到的问...
    99+
    2023-07-02
  • 如何解决使用ProcessBuilder的遇到的问题
    这篇文章主要介绍如何解决使用ProcessBuilder的遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用ProcessBuilder踩到的坑最近使用ProcessBuilder执行命令,命令内容正确,但...
    99+
    2023-06-15
  • idea 与 maven 使用过程中遇到的问题及解决方案
    目录1. maven项目导入idea报ComponentLookupException异常1.1. 问题描述1.2.解决方案2. IDEA无法加载maven本地仓库的文件2.1.问题...
    99+
    2024-04-02
  • 解决ORA-01400报错过程中遇到的问题
    报错信息:ORA-01400: cannot insert NULL into ("OWNER"."TABLE_NAME"."COLUMN_NAME") 问题原因:对不允许为NULL的字段插入了NULL。 解决办法:要么赋给该字段一个值使它...
    99+
    2023-09-13
    java 服务器 数据库
  • Python 解决logging功能使用过程中遇到的一个问题
    现象: 生产中心进行拷机任务下了300个任务,过了一阵时间后发现任务不再被调度起来,查看后台日志发现日志输出停在某个时间点。 分析: 1、首先确认进程存在并没有dead。 2、然后用...
    99+
    2024-04-02
  • 如何解决使用openpyxl时遇到的问题
    本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!最近在用python处理Excel表格是遇到...
    99+
    2023-06-14
  • 如何解决MySQL中使用innobackup 2.4遇到的问题
    这篇文章将为大家详细讲解有关如何解决MySQL中使用innobackup 2.4遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一 ...
    99+
    2024-04-02
  • thinkPHP3.2.3使用过程中遇到的问题收集
    switch标签里变量不要带$符号;如: 支付确认中 已成交 已关闭 2、数组在模板中输出乱码:嵌套错了也会乱码; 上传多张图片时,下面设置会导致始终只有一张图片上传成功的BUG,原因是图片重名,...
    99+
    2023-09-02
    java php html
  • 使用nodeAPI时遇到过异步问题解决
    目录问题总结问题 闲逛技术群时常常看到群友遇到异步问题, 这里就最近看到的问题做个解答: 问题大致是这样: 下面这段代码, 是希望输出456的, 但实际上却输出了[], 因为rea...
    99+
    2023-01-28
    nodeAPI异步问题 nodeAPI 异步
  • 如何解决在Ajax中使用get和post所遇到的问题
    这篇文章主要介绍如何解决在Ajax中使用get和post所遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用get遇到的问题:1.问题一. 缓存:当每次访问的url相同,客...
    99+
    2024-04-02
  • 同时使用swiper和echarts遇到的问题如何解决
    今天小编给大家分享一下同时使用swiper和echarts遇到的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项...
    99+
    2023-07-06
  • 使用DBLink过程中遇到的问题有哪些
    这篇文章给大家分享的是有关使用DBLink过程中遇到的问题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.     &n...
    99+
    2024-04-02
  • 如何解决小程序开发中遇到的问题
    这篇文章主要介绍了如何解决小程序开发中遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。小程序面试题1. bindtap和catchtap的区别是什么?bind事件绑定...
    99+
    2023-06-14
  • 解决react-connect中使用forwardRef遇到的问题
    目录react-connect使用forwardRef遇到的问题项目场景原因问题描述解决方案React.forwardRef的使用说明应用场景但问题来了总结react-connect...
    99+
    2023-05-20
    react-connect使用forwardRef 使用forwardRef遇到问题 react-connect使用forwardRef问题
  • 使用@ApiModel遇到的问题及解决
    目录@ApiModel遇到的问题1. 习惯2. 遇坑3. 排查4. 解决@ApiModel和@ApiModelProperty版本@ApiModel@ApiModelProperty...
    99+
    2024-04-02
  • 解决SpringBoot中使用@Transactional注解遇到的问题
    目录使用@Transactional注解遇到的问题1、不建议在接口上添加@Transactional注解2、@Transactional注解3、默认情况下4、数据库引擎需要支持事务管...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作