redis列表通过lua+rpop清空后,再通过lua+lpuah就无法创建了怎么回事?

redis列表通过lua+rpop清空后,再通过lua+lpuah就无法创建了怎么回事?,第1张

可能是因为列表被完全清空了。

使用 rpop *** 作可以将列表中的元素从右边d出,如果列表中所有元素都被d出,那么列表空了。此时再使用 lpush *** 作是无法添加元素的,它会返回 0 表示添加失败。

需要注意的是,使用 rpop *** 作d出元素会不可逆地从列表中移除这个元素,而不是单纯的将元素标记为被删除,所以清空列表之后使用lpush *** 作再添加元素需要保证在清空列表之后才能进行。如果在清空列表之前使用 lpush *** 作添加元素,元素会被添加到标记为删除的元素位置,导致数据错误。

建议在 Lua 脚本中加入检查机制,确保列表已经全部清空后再进行lpush *** 作,以避免数据错误

用lua封装成类似c++中map的功能方法:

实现代码如下:

1、stl_map.lua //创建一个stl_map

2、map = {} //初始化为空

3、创建一个map

function map:new()

local object = {}

setmetatable(object, self)

self.__index = self

--用一个table来保存key

self.__keyList = {}

return object

end

4、使用:

插入元素[如果已存在该key,则不做改动,和STL一致]

function map:insert(key, value)

if(self[key] == nil) then

self[key] = value

table.insert(self.__keyList, key)

end

return self

end


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11493431.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存