Redis 的 SETBIT 命令用于設置一個字符串中某一位的值為 1 或 0。然而,Redis 不支持一次批量設置多個位的值。要批量操作,您需要為每個位分別執行 SETBIT 命令。
如果您需要批量設置多個位的值,可以考慮以下方法:
local key = KEYS[1]
local bits = ARGV[1]
local value = tonumber(ARGV[2])
local result = 0
for i = 1, #bits do
local bit = string.sub(bits, i, i)
if bit == '1' then
result = result | (value << (string.len(bits) - i))
end
end
redis.call('SETBIT', key, tonumber(string.sub(bits, 1, 1)), result)
return true
要使用此腳本,您可以通過 EVAL
命令執行它:
EVAL <script> 1 key1 "1010"
SETBIT key1 2 1
SETBIT key1 4 1
請注意,這種方法可能會導致較高的網絡延遲,因為每個命令都需要單獨發送到 Redis 服務器。但是,這種方法在功能上是可行的,適用于大多數用例。