栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

根据哈希键名称批量删除redis哈希值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据哈希键名称批量删除redis哈希值

下面的eval脚本应执行所需的操作:

local keys = redis.call('KEYS',KEYS[1])for i,k in ipairs(keys) do    local res = redis.call('HKEYS',k)    for j,v in ipairs(res) do        if string.find(v,ARGV[1]) then redis.call('HDEL',k,v)        end    endend

您需要通过提供以下参数来调用它:

eval <script> 1 prefix:* cc_..

请注意,它会阻塞Redis事件循环,直到脚本完成为止,因此,如果您有大量键,它将冻结Redis一段时间。原子性是有代价的。

更新:

如果您不需要原子性,那么以下脚本将避免阻塞Redis太长时间(但是请注意,如果您拥有大量全局键,或者如果您的哈希对象之一很大,它将仍然阻塞:无法避免这种情况)。

./redis-cli keys 'prefix:*' | awk 'BEGIN {    script = "local res = redis.call('''HKEYS''',KEYS[1]);           for j,v in ipairs(res) do     if string.find(v,ARGV[1]) then           redis.call('''HDEL''',KEYS[1],v);  end            end"}{    printf "eval "%s" 1 %s cc_..n", script, $1}' | ./redis-cli

(经过bash测试)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号