twemproxy(nutcraker) 对lua 中的key的路由策略

文章详细介绍了在使用twemproxy(nutcracker)时,lua脚本中的key如何进行路由。内容包括lua脚本的路由策略,即根据脚本的第一个参数对key进行hash并取模分配到特定分片。通过提供lua测试脚本和两种调用方法(SCRIPT load和eval)展示了key的路由过程,并指出lua是基于第一个key进行路由的。
摘要由CSDN通过智能技术生成

线上的hash策略配置为 fnv1a_64

路由策略简述:对key hash取值后,比上主分片数量取余,即model=key_hash%master_sharding_nums,

model数值就是既要路由到的主分片的下标

对于lua脚本中key,是按脚本的第一个参数作为key来路由的,所以如果第一个参数一直不变,则通过lua创建的key都会被路由

到同一个分片中

lua 测试脚本

脚本中的key1是hash类型,key2是string类型,测试key2通过lua和不通过lua路由到的分片是否相同

if redis.call("hsetnx", KEYS[1], ARGV[1], 1) == 0 then
  local h1= redis.call("hget", KEYS[1], ARGV[1])
else
  local h2="hset ok"
end
if redis.call("setnx", KEYS[2], ARGV[2]) == 0 then
  local s1= redis.call("get", KEYS[2])
  return s1
else
  local s2="set ok"
  return s2
end

方法1 load

脚本是通过load进行路由的,所以想要成功调用lua脚本,有两种方法

  • 每个redis分片都load一遍脚本
  • lua脚本的第一个参数为load

以下是测试命令

$  redis-cli -p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值