Redis实战系列(6) 利用lua对redis特定类型元素的list进行分段

本文介绍了如何使用Lua脚本在Redis中对已排序的数字List进行分段处理,包括添加、获取数量、删除和批量添加元素。通过lua脚本优化了性能,虽然性能有所下降,但未具体测试下降程度。
摘要由CSDN通过智能技术生成
只对排序的数字list进行分段存取,性能上有所下降,但是没有测试下降多少

list_add.lua
local config = redis.call('config','get','list-max-ziplist-entries')
local maxzipNum=tonumber(config[2])

local metainfo=KEYS[1]..':split:meta'
local metainfonum=KEYS[1]..':split:meta:num'

local tmpLen,tmpKey,tmpV
local argvLen = #ARGV

if argvLen ~= 1 then
     return false
end

local firstelement = redis.call('lrange',metainfo,0,0)
local firstKey,firstLen
if (#firstelement == 0) then
     firstKey = KEYS[1]..':'..ARGV[1]
     firstLen = 0
else
     firstKey = KEYS[1]..':'..firstelement[1]
     firstLen = redis.call('llen', firstKey)
end

tmpV = table.remove(ARGV,1);
if (firstLen > 0 and firstLen < maxzipNum) then
     redis.call('lpush',firstKey, tmpV)
else
     redis.call('lpush', metainfo, tmpV)
     tmpKey = KEYS[1] .. ':' .. tmpV;
     redis.call('lpush',tmpKey, tmpV)
end

return redis.call('incrby',metainfonum,1)

test_add.sh
#!/bin/bash
cmd=`cat list_add.lua`
for ((i=1; i<=$1; i++))
do
     #a="eval \"$cmd\" 1 user:box:31458 $i"
     a="lpush testlist $i"
     echo $a|redis-cli
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值