optimzie shell of measurement recommend api

This commit is contained in:
douxu 2025-12-05 16:36:11 +08:00
parent 46e72ce588
commit 666e1a9289
2 changed files with 338 additions and 777 deletions

View File

@ -171,786 +171,15 @@ VALUES (
Redis数据脚本
```Lua
redis.call('SADD', 'grid_keys', 'grid1', 'grid2', 'grid3')
redis.call('SADD', 'zone_keys', 'zone1_1', 'zone1_2', 'zone1_3', 'zone2_1', 'zone2_2', 'zone2_3', 'zone3_1', 'zone3_2', 'zone3_3')
redis.call('SADD', 'station_keys', 'station1_1_1', 'station1_1_2', 'station1_1_3', 'station1_2_1', 'station1_2_2', 'station1_2_3', 'station1_3_1', 'station1_3_2', 'station1_3_3')
redis.call('SADD', 'station_keys', 'station2_1_1', 'station2_1_2', 'station2_1_3', 'station2_2_1', 'station2_2_2', 'station2_2_3', 'station2_3_1', 'station2_3_2', 'station2_3_3')
redis.call('SADD', 'station_keys', 'station3_1_1', 'station3_1_2', 'station3_1_3', 'station3_2_1', 'station3_2_2', 'station3_2_3', 'station3_3_1', 'station3_3_2', 'station3_3_3')
redis.call('SADD', 'component_nspath_keys',
-- 对应 station1_1_1
'ns1_1_1_1', 'ns1_1_1_2', 'ns1_1_1_3',
-- 对应 station1_1_2
'ns1_1_2_1', 'ns1_1_2_2', 'ns1_1_2_3',
-- 对应 station1_1_3
'ns1_1_3_1', 'ns1_1_3_2', 'ns1_1_3_3',
-- 对应 station1_2_1
'ns1_2_1_1', 'ns1_2_1_2', 'ns1_2_1_3',
-- 对应 station1_2_2
'ns1_2_2_1', 'ns1_2_2_2', 'ns1_2_2_3',
-- 对应 station1_2_3
'ns1_2_3_1', 'ns1_2_3_2', 'ns1_2_3_3',
-- 对应 station1_3_1
'ns1_3_1_1', 'ns1_3_1_2', 'ns1_3_1_3',
-- 对应 station1_3_2
'ns1_3_2_1', 'ns1_3_2_2', 'ns1_3_2_3',
-- 对应 station1_3_3
'ns1_3_3_1', 'ns1_3_3_2', 'ns1_3_3_3'
)
redis.call('SADD', 'component_nspath_keys',
-- 对应 station2_1_1
'ns2_1_1_1', 'ns2_1_1_2', 'ns2_1_1_3',
-- 对应 station2_1_2
'ns2_1_2_1', 'ns2_1_2_2', 'ns2_1_2_3',
-- 对应 station2_1_3
'ns2_1_3_1', 'ns2_1_3_2', 'ns2_1_3_3',
-- 对应 station2_2_1
'ns2_2_1_1', 'ns2_2_1_2', 'ns2_2_1_3',
-- 对应 station2_2_2
'ns2_2_2_1', 'ns2_2_2_2', 'ns2_2_2_3',
-- 对应 station2_2_3
'ns2_2_3_1', 'ns2_2_3_2', 'ns2_2_3_3',
-- 对应 station2_3_1
'ns2_3_1_1', 'ns2_3_1_2', 'ns2_3_1_3',
-- 对应 station2_3_2
'ns2_3_2_1', 'ns2_3_2_2', 'ns2_3_2_3',
-- 对应 station2_3_3
'ns2_3_3_1', 'ns2_3_3_2', 'ns2_3_3_3'
)
redis.call('SADD', 'component_nspath_keys',
-- 对应 station3_1_1
'ns3_1_1_1', 'ns3_1_1_2', 'ns3_1_1_3',
-- 对应 station3_1_2
'ns3_1_2_1', 'ns3_1_2_2', 'ns3_1_2_3',
-- 对应 station3_1_3
'ns3_1_3_1', 'ns3_1_3_2', 'ns3_1_3_3',
-- 对应 station3_2_1
'ns3_2_1_1', 'ns3_2_1_2', 'ns3_2_1_3',
-- 对应 station3_2_2
'ns3_2_2_1', 'ns3_2_2_2', 'ns3_2_2_3',
-- 对应 station3_2_3
'ns3_2_3_1', 'ns3_2_3_2', 'ns3_2_3_3',
-- 对应 station3_3_1
'ns3_3_1_1', 'ns3_3_1_2', 'ns3_3_1_3',
-- 对应 station3_3_2
'ns3_3_2_1', 'ns3_3_2_2', 'ns3_3_2_3',
-- 对应 station3_3_3
'ns3_3_3_1', 'ns3_3_3_2', 'ns3_3_3_3'
)
redis.call('SADD', 'component_tag_keys',
'cmptag1_1_1_1_1', 'cmptag1_1_1_1_2', 'cmptag1_1_1_1_3',
'cmptag1_1_1_2_1', 'cmptag1_1_1_2_2', 'cmptag1_1_1_2_3',
'cmptag1_1_1_3_1', 'cmptag1_1_1_3_2', 'cmptag1_1_1_3_3',
'cmptag1_1_2_1_1', 'cmptag1_1_2_1_2', 'cmptag1_1_2_1_3',
'cmptag1_1_2_2_1', 'cmptag1_1_2_2_2', 'cmptag1_1_2_2_3',
'cmptag1_1_2_3_1', 'cmptag1_1_2_3_2', 'cmptag1_1_2_3_3',
'cmptag1_1_3_1_1', 'cmptag1_1_3_1_2', 'cmptag1_1_3_1_3',
'cmptag1_1_3_2_1', 'cmptag1_1_3_2_2', 'cmptag1_1_3_2_3',
'cmptag1_1_3_3_1', 'cmptag1_1_3_3_2', 'cmptag1_1_3_3_3',
'cmptag1_2_1_1_1', 'cmptag1_2_1_1_2', 'cmptag1_2_1_1_3',
'cmptag1_2_1_2_1', 'cmptag1_2_1_2_2', 'cmptag1_2_1_2_3',
'cmptag1_2_1_3_1', 'cmptag1_2_1_3_2', 'cmptag1_2_1_3_3',
'cmptag1_2_2_1_1', 'cmptag1_2_2_1_2', 'cmptag1_2_2_1_3',
'cmptag1_2_2_2_1', 'cmptag1_2_2_2_2', 'cmptag1_2_2_2_3',
'cmptag1_2_2_3_1', 'cmptag1_2_2_3_2', 'cmptag1_2_2_3_3',
'cmptag1_2_3_1_1', 'cmptag1_2_3_1_2', 'cmptag1_2_3_1_3',
'cmptag1_2_3_2_1', 'cmptag1_2_3_2_2', 'cmptag1_2_3_2_3',
'cmptag1_2_3_3_1', 'cmptag1_2_3_3_2', 'cmptag1_2_3_3_3',
'cmptag1_3_1_1_1', 'cmptag1_3_1_1_2', 'cmptag1_3_1_1_3',
'cmptag1_3_1_2_1', 'cmptag1_3_1_2_2', 'cmptag1_3_1_2_3',
'cmptag1_3_1_3_1', 'cmptag1_3_1_3_2', 'cmptag1_3_1_3_3',
'cmptag1_3_2_1_1', 'cmptag1_3_2_1_2', 'cmptag1_3_2_1_3',
'cmptag1_3_2_2_1', 'cmptag1_3_2_2_2', 'cmptag1_3_2_2_3',
'cmptag1_3_2_3_1', 'cmptag1_3_2_3_2', 'cmptag1_3_2_3_3',
'cmptag1_3_3_1_1', 'cmptag1_3_3_1_2', 'cmptag1_3_3_1_3',
'cmptag1_3_3_2_1', 'cmptag1_3_3_2_2', 'cmptag1_3_3_2_3',
'cmptag1_3_3_3_1', 'cmptag1_3_3_3_2', 'cmptag1_3_3_3_3'
)
redis.call('SADD', 'component_tag_keys',
'cmptag2_1_1_1_1', 'cmptag2_1_1_1_2', 'cmptag2_1_1_1_3',
'cmptag2_1_1_2_1', 'cmptag2_1_1_2_2', 'cmptag2_1_1_2_3',
'cmptag2_1_1_3_1', 'cmptag2_1_1_3_2', 'cmptag2_1_1_3_3',
'cmptag2_1_2_1_1', 'cmptag2_1_2_1_2', 'cmptag2_1_2_1_3',
'cmptag2_1_2_2_1', 'cmptag2_1_2_2_2', 'cmptag2_1_2_2_3',
'cmptag2_1_2_3_1', 'cmptag2_1_2_3_2', 'cmptag2_1_2_3_3',
'cmptag2_1_3_1_1', 'cmptag2_1_3_1_2', 'cmptag2_1_3_1_3',
'cmptag2_1_3_2_1', 'cmptag2_1_3_2_2', 'cmptag2_1_3_2_3',
'cmptag2_1_3_3_1', 'cmptag2_1_3_3_2', 'cmptag2_1_3_3_3',
'cmptag2_2_1_1_1', 'cmptag2_2_1_1_2', 'cmptag2_2_1_1_3',
'cmptag2_2_1_2_1', 'cmptag2_2_1_2_2', 'cmptag2_2_1_2_3',
'cmptag2_2_1_3_1', 'cmptag2_2_1_3_2', 'cmptag2_2_1_3_3',
'cmptag2_2_2_1_1', 'cmptag2_2_2_1_2', 'cmptag2_2_2_1_3',
'cmptag2_2_2_2_1', 'cmptag2_2_2_2_2', 'cmptag2_2_2_2_3',
'cmptag2_2_2_3_1', 'cmptag2_2_2_3_2', 'cmptag2_2_2_3_3',
'cmptag2_2_3_1_1', 'cmptag2_2_3_1_2', 'cmptag2_2_3_1_3',
'cmptag2_2_3_2_1', 'cmptag2_2_3_2_2', 'cmptag2_2_3_2_3',
'cmptag2_2_3_3_1', 'cmptag2_2_3_3_2', 'cmptag2_2_3_3_3',
'cmptag2_3_1_1_1', 'cmptag2_3_1_1_2', 'cmptag2_3_1_1_3',
'cmptag2_3_1_2_1', 'cmptag2_3_1_2_2', 'cmptag2_3_1_2_3',
'cmptag2_3_1_3_1', 'cmptag2_3_1_3_2', 'cmptag2_3_1_3_3',
'cmptag2_3_2_1_1', 'cmptag2_3_2_1_2', 'cmptag2_3_2_1_3',
'cmptag2_3_2_2_1', 'cmptag2_3_2_2_2', 'cmptag2_3_2_2_3',
'cmptag2_3_2_3_1', 'cmptag2_3_2_3_2', 'cmptag2_3_2_3_3',
'cmptag2_3_3_1_1', 'cmptag2_3_3_1_2', 'cmptag2_3_3_1_3',
'cmptag2_3_3_2_1', 'cmptag2_3_3_2_2', 'cmptag2_3_3_2_3',
'cmptag2_3_3_3_1', 'cmptag2_3_3_3_2', 'cmptag2_3_3_3_3'
)
redis.call('SADD', 'component_tag_keys',
'cmptag3_1_1_1_1', 'cmptag3_1_1_1_2', 'cmptag3_1_1_1_3',
'cmptag3_1_1_2_1', 'cmptag3_1_1_2_2', 'cmptag3_1_1_2_3',
'cmptag3_1_1_3_1', 'cmptag3_1_1_3_2', 'cmptag3_1_1_3_3',
'cmptag3_1_2_1_1', 'cmptag3_1_2_1_2', 'cmptag3_1_2_1_3',
'cmptag3_1_2_2_1', 'cmptag3_1_2_2_2', 'cmptag3_1_2_2_3',
'cmptag3_1_2_3_1', 'cmptag3_1_2_3_2', 'cmptag3_1_2_3_3',
'cmptag3_1_3_1_1', 'cmptag3_1_3_1_2', 'cmptag3_1_3_1_3',
'cmptag3_1_3_2_1', 'cmptag3_1_3_2_2', 'cmptag3_1_3_2_3',
'cmptag3_1_3_3_1', 'cmptag3_1_3_3_2', 'cmptag3_1_3_3_3',
'cmptag3_2_1_1_1', 'cmptag3_2_1_1_2', 'cmptag3_2_1_1_3',
'cmptag3_2_1_2_1', 'cmptag3_2_1_2_2', 'cmptag3_2_1_2_3',
'cmptag3_2_1_3_1', 'cmptag3_2_1_3_2', 'cmptag3_2_1_3_3',
'cmptag3_2_2_1_1', 'cmptag3_2_2_1_2', 'cmptag3_2_2_1_3',
'cmptag3_2_2_2_1', 'cmptag3_2_2_2_2', 'cmptag3_2_2_2_3',
'cmptag3_2_2_3_1', 'cmptag3_2_2_3_2', 'cmptag3_2_2_3_3',
'cmptag3_2_3_1_1', 'cmptag3_2_3_1_2', 'cmptag3_2_3_1_3',
'cmptag3_2_3_2_1', 'cmptag3_2_3_2_2', 'cmptag3_2_3_2_3',
'cmptag3_2_3_3_1', 'cmptag3_2_3_3_2', 'cmptag3_2_3_3_3',
'cmptag3_3_1_1_1', 'cmptag3_3_1_1_2', 'cmptag3_3_1_1_3',
'cmptag3_3_1_2_1', 'cmptag3_3_1_2_2', 'cmptag3_3_1_2_3',
'cmptag3_3_1_3_1', 'cmptag3_3_1_3_2', 'cmptag3_3_1_3_3',
'cmptag3_3_2_1_1', 'cmptag3_3_2_1_2', 'cmptag3_3_2_1_3',
'cmptag3_3_2_2_1', 'cmptag3_3_2_2_2', 'cmptag3_3_2_2_3',
'cmptag3_3_2_3_1', 'cmptag3_3_2_3_2', 'cmptag3_3_2_3_3',
'cmptag3_3_3_1_1', 'cmptag3_3_3_1_2', 'cmptag3_3_3_1_3',
'cmptag3_3_3_2_1', 'cmptag3_3_3_2_2', 'cmptag3_3_3_2_3',
'cmptag3_3_3_3_1', 'cmptag3_3_3_3_2', 'cmptag3_3_3_3_3'
)
redis.call('SADD', 'config_keys', 'component', 'base_extend', 'rated', 'setup', 'model', 'stable', 'bay', 'craft', 'integrity', 'behavior')
redis.call('SADD', 'measurement_tag_keys',
'meas1_1_1_1_1_1', 'meas1_1_1_1_1_2', 'meas1_1_1_1_1_3', 'meas1_1_1_1_2_1', 'meas1_1_1_1_2_2', 'meas1_1_1_1_2_3', 'meas1_1_1_1_3_1', 'meas1_1_1_1_3_2', 'meas1_1_1_1_3_3',
'meas1_1_1_2_1_1', 'meas1_1_1_2_1_2', 'meas1_1_1_2_1_3', 'meas1_1_1_2_2_1', 'meas1_1_1_2_2_2', 'meas1_1_1_2_2_3', 'meas1_1_1_2_3_1', 'meas1_1_1_2_3_2', 'meas1_1_1_2_3_3',
'meas1_1_1_3_1_1', 'meas1_1_1_3_1_2', 'meas1_1_1_3_1_3', 'meas1_1_1_3_2_1', 'meas1_1_1_3_2_2', 'meas1_1_1_3_2_3', 'meas1_1_1_3_3_1', 'meas1_1_1_3_3_2', 'meas1_1_1_3_3_3',
'meas1_1_2_1_1_1', 'meas1_1_2_1_1_2', 'meas1_1_2_1_1_3', 'meas1_1_2_1_2_1', 'meas1_1_2_1_2_2', 'meas1_1_2_1_2_3', 'meas1_1_2_1_3_1', 'meas1_1_2_1_3_2', 'meas1_1_2_1_3_3',
'meas1_1_2_2_1_1', 'meas1_1_2_2_1_2', 'meas1_1_2_2_1_3', 'meas1_1_2_2_2_1', 'meas1_1_2_2_2_2', 'meas1_1_2_2_2_3', 'meas1_1_2_2_3_1', 'meas1_1_2_2_3_2', 'meas1_1_2_2_3_3',
'meas1_1_2_3_1_1', 'meas1_1_2_3_1_2', 'meas1_1_2_3_1_3', 'meas1_1_2_3_2_1', 'meas1_1_2_3_2_2', 'meas1_1_2_3_2_3', 'meas1_1_2_3_3_1', 'meas1_1_2_3_3_2', 'meas1_1_2_3_3_3',
'meas1_1_3_1_1_1', 'meas1_1_3_1_1_2', 'meas1_1_3_1_1_3', 'meas1_1_3_1_2_1', 'meas1_1_3_1_2_2', 'meas1_1_3_1_2_3', 'meas1_1_3_1_3_1', 'meas1_1_3_1_3_2', 'meas1_1_3_1_3_3',
'meas1_1_3_2_1_1', 'meas1_1_3_2_1_2', 'meas1_1_3_2_1_3', 'meas1_1_3_2_2_1', 'meas1_1_3_2_2_2', 'meas1_1_3_2_2_3', 'meas1_1_3_2_3_1', 'meas1_1_3_2_3_2', 'meas1_1_3_2_3_3',
'meas1_1_3_3_1_1', 'meas1_1_3_3_1_2', 'meas1_1_3_3_1_3', 'meas1_1_3_3_2_1', 'meas1_1_3_3_2_2', 'meas1_1_3_3_2_3', 'meas1_1_3_3_3_1', 'meas1_1_3_3_3_2', 'meas1_1_3_3_3_3',
'meas1_2_1_1_1_1', 'meas1_2_1_1_1_2', 'meas1_2_1_1_1_3', 'meas1_2_1_1_2_1', 'meas1_2_1_1_2_2', 'meas1_2_1_1_2_3', 'meas1_2_1_1_3_1', 'meas1_2_1_1_3_2', 'meas1_2_1_1_3_3',
'meas1_2_1_2_1_1', 'meas1_2_1_2_1_2', 'meas1_2_1_2_1_3', 'meas1_2_1_2_2_1', 'meas1_2_1_2_2_2', 'meas1_2_1_2_2_3', 'meas1_2_1_2_3_1', 'meas1_2_1_2_3_2', 'meas1_2_1_2_3_3',
'meas1_2_1_3_1_1', 'meas1_2_1_3_1_2', 'meas1_2_1_3_1_3', 'meas1_2_1_3_2_1', 'meas1_2_1_3_2_2', 'meas1_2_1_3_2_3', 'meas1_2_1_3_3_1', 'meas1_2_1_3_3_2', 'meas1_2_1_3_3_3',
'meas1_2_2_1_1_1', 'meas1_2_2_1_1_2', 'meas1_2_2_1_1_3', 'meas1_2_2_1_2_1', 'meas1_2_2_1_2_2', 'meas1_2_2_1_2_3', 'meas1_2_2_1_3_1', 'meas1_2_2_1_3_2', 'meas1_2_2_1_3_3',
'meas1_2_2_2_1_1', 'meas1_2_2_2_1_2', 'meas1_2_2_2_1_3', 'meas1_2_2_2_2_1', 'meas1_2_2_2_2_2', 'meas1_2_2_2_2_3', 'meas1_2_2_2_3_1', 'meas1_2_2_2_3_2', 'meas1_2_2_2_3_3',
'meas1_2_2_3_1_1', 'meas1_2_2_3_1_2', 'meas1_2_2_3_1_3', 'meas1_2_2_3_2_1', 'meas1_2_2_3_2_2', 'meas1_2_2_3_2_3', 'meas1_2_2_3_3_1', 'meas1_2_2_3_3_2', 'meas1_2_2_3_3_3',
'meas1_2_3_1_1_1', 'meas1_2_3_1_1_2', 'meas1_2_3_1_1_3', 'meas1_2_3_1_2_1', 'meas1_2_3_1_2_2', 'meas1_2_3_1_2_3', 'meas1_2_3_1_3_1', 'meas1_2_3_1_3_2', 'meas1_2_3_1_3_3',
'meas1_2_3_2_1_1', 'meas1_2_3_2_1_2', 'meas1_2_3_2_1_3', 'meas1_2_3_2_2_1', 'meas1_2_3_2_2_2', 'meas1_2_3_2_2_3', 'meas1_2_3_2_3_1', 'meas1_2_3_2_3_2', 'meas1_2_3_2_3_3',
'meas1_2_3_3_1_1', 'meas1_2_3_3_1_2', 'meas1_2_3_3_1_3', 'meas1_2_3_3_2_1', 'meas1_2_3_3_2_2', 'meas1_2_3_3_2_3', 'meas1_2_3_3_3_1', 'meas1_2_3_3_3_2', 'meas1_2_3_3_3_3',
'meas1_3_1_1_1_1', 'meas1_3_1_1_1_2', 'meas1_3_1_1_1_3', 'meas1_3_1_1_2_1', 'meas1_3_1_1_2_2', 'meas1_3_1_1_2_3', 'meas1_3_1_1_3_1', 'meas1_3_1_1_3_2', 'meas1_3_1_1_3_3',
'meas1_3_1_2_1_1', 'meas1_3_1_2_1_2', 'meas1_3_1_2_1_3', 'meas1_3_1_2_2_1', 'meas1_3_1_2_2_2', 'meas1_3_1_2_2_3', 'meas1_3_1_2_3_1', 'meas1_3_1_2_3_2', 'meas1_3_1_2_3_3',
'meas1_3_1_3_1_1', 'meas1_3_1_3_1_2', 'meas1_3_1_3_1_3', 'meas1_3_1_3_2_1', 'meas1_3_1_3_2_2', 'meas1_3_1_3_2_3', 'meas1_3_1_3_3_1', 'meas1_3_1_3_3_2', 'meas1_3_1_3_3_3',
'meas1_3_2_1_1_1', 'meas1_3_2_1_1_2', 'meas1_3_2_1_1_3', 'meas1_3_2_1_2_1', 'meas1_3_2_1_2_2', 'meas1_3_2_1_2_3', 'meas1_3_2_1_3_1', 'meas1_3_2_1_3_2', 'meas1_3_2_1_3_3',
'meas1_3_2_2_1_1', 'meas1_3_2_2_1_2', 'meas1_3_2_2_1_3', 'meas1_3_2_2_2_1', 'meas1_3_2_2_2_2', 'meas1_3_2_2_2_3', 'meas1_3_2_2_3_1', 'meas1_3_2_2_3_2', 'meas1_3_2_2_3_3',
'meas1_3_2_3_1_1', 'meas1_3_2_3_1_2', 'meas1_3_2_3_1_3', 'meas1_3_2_3_2_1', 'meas1_3_2_3_2_2', 'meas1_3_2_3_2_3', 'meas1_3_2_3_3_1', 'meas1_3_2_3_3_2', 'meas1_3_2_3_3_3',
'meas1_3_3_1_1_1', 'meas1_3_3_1_1_2', 'meas1_3_3_1_1_3', 'meas1_3_3_1_2_1', 'meas1_3_3_1_2_2', 'meas1_3_3_1_2_3', 'meas1_3_3_1_3_1', 'meas1_3_3_1_3_2', 'meas1_3_3_1_3_3',
'meas1_3_3_2_1_1', 'meas1_3_3_2_1_2', 'meas1_3_3_2_1_3', 'meas1_3_3_2_2_1', 'meas1_3_3_2_2_2', 'meas1_3_3_2_2_3', 'meas1_3_3_2_3_1', 'meas1_3_3_2_3_2', 'meas1_3_3_2_3_3',
'meas1_3_3_3_1_1', 'meas1_3_3_3_1_2', 'meas1_3_3_3_1_3', 'meas1_3_3_3_2_1', 'meas1_3_3_3_2_2', 'meas1_3_3_3_2_3', 'meas1_3_3_3_3_1', 'meas1_3_3_3_3_2', 'meas1_3_3_3_3_3'
)
redis.call('SADD', 'measurement_tag_keys',
'meas2_1_1_1_1_1', 'meas2_1_1_1_1_2', 'meas2_1_1_1_1_3', 'meas2_1_1_1_2_1', 'meas2_1_1_1_2_2', 'meas2_1_1_1_2_3', 'meas2_1_1_1_3_1', 'meas2_1_1_1_3_2', 'meas2_1_1_1_3_3',
'meas2_1_1_2_1_1', 'meas2_1_1_2_1_2', 'meas2_1_1_2_1_3', 'meas2_1_1_2_2_1', 'meas2_1_1_2_2_2', 'meas2_1_1_2_2_3', 'meas2_1_1_2_3_1', 'meas2_1_1_2_3_2', 'meas2_1_1_2_3_3',
'meas2_1_1_3_1_1', 'meas2_1_1_3_1_2', 'meas2_1_1_3_1_3', 'meas2_1_1_3_2_1', 'meas2_1_1_3_2_2', 'meas2_1_1_3_2_3', 'meas2_1_1_3_3_1', 'meas2_1_1_3_3_2', 'meas2_1_1_3_3_3',
'meas2_1_2_1_1_1', 'meas2_1_2_1_1_2', 'meas2_1_2_1_1_3', 'meas2_1_2_1_2_1', 'meas2_1_2_1_2_2', 'meas2_1_2_1_2_3', 'meas2_1_2_1_3_1', 'meas2_1_2_1_3_2', 'meas2_1_2_1_3_3',
'meas2_1_2_2_1_1', 'meas2_1_2_2_1_2', 'meas2_1_2_2_1_3', 'meas2_1_2_2_2_1', 'meas2_1_2_2_2_2', 'meas2_1_2_2_2_3', 'meas2_1_2_2_3_1', 'meas2_1_2_2_3_2', 'meas2_1_2_2_3_3',
'meas2_1_2_3_1_1', 'meas2_1_2_3_1_2', 'meas2_1_2_3_1_3', 'meas2_1_2_3_2_1', 'meas2_1_2_3_2_2', 'meas2_1_2_3_2_3', 'meas2_1_2_3_3_1', 'meas2_1_2_3_3_2', 'meas2_1_2_3_3_3',
'meas2_1_3_1_1_1', 'meas2_1_3_1_1_2', 'meas2_1_3_1_1_3', 'meas2_1_3_1_2_1', 'meas2_1_3_1_2_2', 'meas2_1_3_1_2_3', 'meas2_1_3_1_3_1', 'meas2_1_3_1_3_2', 'meas2_1_3_1_3_3',
'meas2_1_3_2_1_1', 'meas2_1_3_2_1_2', 'meas2_1_3_2_1_3', 'meas2_1_3_2_2_1', 'meas2_1_3_2_2_2', 'meas2_1_3_2_2_3', 'meas2_1_3_2_3_1', 'meas2_1_3_2_3_2', 'meas2_1_3_2_3_3',
'meas2_1_3_3_1_1', 'meas2_1_3_3_1_2', 'meas2_1_3_3_1_3', 'meas2_1_3_3_2_1', 'meas2_1_3_3_2_2', 'meas2_1_3_3_2_3', 'meas2_1_3_3_3_1', 'meas2_1_3_3_3_2', 'meas2_1_3_3_3_3',
'meas2_2_1_1_1_1', 'meas2_2_1_1_1_2', 'meas2_2_1_1_1_3', 'meas2_2_1_1_2_1', 'meas2_2_1_1_2_2', 'meas2_2_1_1_2_3', 'meas2_2_1_1_3_1', 'meas2_2_1_1_3_2', 'meas2_2_1_1_3_3',
'meas2_2_1_2_1_1', 'meas2_2_1_2_1_2', 'meas2_2_1_2_1_3', 'meas2_2_1_2_2_1', 'meas2_2_1_2_2_2', 'meas2_2_1_2_2_3', 'meas2_2_1_2_3_1', 'meas2_2_1_2_3_2', 'meas2_2_1_2_3_3',
'meas2_2_1_3_1_1', 'meas2_2_1_3_1_2', 'meas2_2_1_3_1_3', 'meas2_2_1_3_2_1', 'meas2_2_1_3_2_2', 'meas2_2_1_3_2_3', 'meas2_2_1_3_3_1', 'meas2_2_1_3_3_2', 'meas2_2_1_3_3_3',
'meas2_2_2_1_1_1', 'meas2_2_2_1_1_2', 'meas2_2_2_1_1_3', 'meas2_2_2_1_2_1', 'meas2_2_2_1_2_2', 'meas2_2_2_1_2_3', 'meas2_2_2_1_3_1', 'meas2_2_2_1_3_2', 'meas2_2_2_1_3_3',
'meas2_2_2_2_1_1', 'meas2_2_2_2_1_2', 'meas2_2_2_2_1_3', 'meas2_2_2_2_2_1', 'meas2_2_2_2_2_2', 'meas2_2_2_2_2_3', 'meas2_2_2_2_3_1', 'meas2_2_2_2_3_2', 'meas2_2_2_2_3_3',
'meas2_2_2_3_1_1', 'meas2_2_2_3_1_2', 'meas2_2_2_3_1_3', 'meas2_2_2_3_2_1', 'meas2_2_2_3_2_2', 'meas2_2_2_3_2_3', 'meas2_2_2_3_3_1', 'meas2_2_2_3_3_2', 'meas2_2_2_3_3_3',
'meas2_2_3_1_1_1', 'meas2_2_3_1_1_2', 'meas2_2_3_1_1_3', 'meas2_2_3_1_2_1', 'meas2_2_3_1_2_2', 'meas2_2_3_1_2_3', 'meas2_2_3_1_3_1', 'meas2_2_3_1_3_2', 'meas2_2_3_1_3_3',
'meas2_2_3_2_1_1', 'meas2_2_3_2_1_2', 'meas2_2_3_2_1_3', 'meas2_2_3_2_2_1', 'meas2_2_3_2_2_2', 'meas2_2_3_2_2_3', 'meas2_2_3_2_3_1', 'meas2_2_3_2_3_2', 'meas2_2_3_2_3_3',
'meas2_2_3_3_1_1', 'meas2_2_3_3_1_2', 'meas2_2_3_3_1_3', 'meas2_2_3_3_2_1', 'meas2_2_3_3_2_2', 'meas2_2_3_3_2_3', 'meas2_2_3_3_3_1', 'meas2_2_3_3_3_2', 'meas2_2_3_3_3_3',
'meas2_3_1_1_1_1', 'meas2_3_1_1_1_2', 'meas2_3_1_1_1_3', 'meas2_3_1_1_2_1', 'meas2_3_1_1_2_2', 'meas2_3_1_1_2_3', 'meas2_3_1_1_3_1', 'meas2_3_1_1_3_2', 'meas2_3_1_1_3_3',
'meas2_3_1_2_1_1', 'meas2_3_1_2_1_2', 'meas2_3_1_2_1_3', 'meas2_3_1_2_2_1', 'meas2_3_1_2_2_2', 'meas2_3_1_2_2_3', 'meas2_3_1_2_3_1', 'meas2_3_1_2_3_2', 'meas2_3_1_2_3_3',
'meas2_3_1_3_1_1', 'meas2_3_1_3_1_2', 'meas2_3_1_3_1_3', 'meas2_3_1_3_2_1', 'meas2_3_1_3_2_2', 'meas2_3_1_3_2_3', 'meas2_3_1_3_3_1', 'meas2_3_1_3_3_2', 'meas2_3_1_3_3_3',
'meas2_3_2_1_1_1', 'meas2_3_2_1_1_2', 'meas2_3_2_1_1_3', 'meas2_3_2_1_2_1', 'meas2_3_2_1_2_2', 'meas2_3_2_1_2_3', 'meas2_3_2_1_3_1', 'meas2_3_2_1_3_2', 'meas2_3_2_1_3_3',
'meas2_3_2_2_1_1', 'meas2_3_2_2_1_2', 'meas2_3_2_2_1_3', 'meas2_3_2_2_2_1', 'meas2_3_2_2_2_2', 'meas2_3_2_2_2_3', 'meas2_3_2_2_3_1', 'meas2_3_2_2_3_2', 'meas2_3_2_2_3_3',
'meas2_3_2_3_1_1', 'meas2_3_2_3_1_2', 'meas2_3_2_3_1_3', 'meas2_3_2_3_2_1', 'meas2_3_2_3_2_2', 'meas2_3_2_3_2_3', 'meas2_3_2_3_3_1', 'meas2_3_2_3_3_2', 'meas2_3_2_3_3_3',
'meas2_3_3_1_1_1', 'meas2_3_3_1_1_2', 'meas2_3_3_1_1_3', 'meas2_3_3_1_2_1', 'meas2_3_3_1_2_2', 'meas2_3_3_1_2_3', 'meas2_3_3_1_3_1', 'meas2_3_3_1_3_2', 'meas2_3_3_1_3_3',
'meas2_3_3_2_1_1', 'meas2_3_3_2_1_2', 'meas2_3_3_2_1_3', 'meas2_3_3_2_2_1', 'meas2_3_3_2_2_2', 'meas2_3_3_2_2_3', 'meas2_3_3_2_3_1', 'meas2_3_3_2_3_2', 'meas2_3_3_2_3_3',
'meas2_3_3_3_1_1', 'meas2_3_3_3_1_2', 'meas2_3_3_3_1_3', 'meas2_3_3_3_2_1', 'meas2_3_3_3_2_2', 'meas2_3_3_3_2_3', 'meas2_3_3_3_3_1', 'meas2_3_3_3_3_2', 'meas2_3_3_3_3_3'
)
redis.call('SADD', 'measurement_tag_keys',
'meas3_1_1_1_1_1', 'meas3_1_1_1_1_2', 'meas3_1_1_1_1_3', 'meas3_1_1_1_2_1', 'meas3_1_1_1_2_2', 'meas3_1_1_1_2_3', 'meas3_1_1_1_3_1', 'meas3_1_1_1_3_2', 'meas3_1_1_1_3_3',
'meas3_1_1_2_1_1', 'meas3_1_1_2_1_2', 'meas3_1_1_2_1_3', 'meas3_1_1_2_2_1', 'meas3_1_1_2_2_2', 'meas3_1_1_2_2_3', 'meas3_1_1_2_3_1', 'meas3_1_1_2_3_2', 'meas3_1_1_2_3_3',
'meas3_1_1_3_1_1', 'meas3_1_1_3_1_2', 'meas3_1_1_3_1_3', 'meas3_1_1_3_2_1', 'meas3_1_1_3_2_2', 'meas3_1_1_3_2_3', 'meas3_1_1_3_3_1', 'meas3_1_1_3_3_2', 'meas3_1_1_3_3_3',
'meas3_1_2_1_1_1', 'meas3_1_2_1_1_2', 'meas3_1_2_1_1_3', 'meas3_1_2_1_2_1', 'meas3_1_2_1_2_2', 'meas3_1_2_1_2_3', 'meas3_1_2_1_3_1', 'meas3_1_2_1_3_2', 'meas3_1_2_1_3_3',
'meas3_1_2_2_1_1', 'meas3_1_2_2_1_2', 'meas3_1_2_2_1_3', 'meas3_1_2_2_2_1', 'meas3_1_2_2_2_2', 'meas3_1_2_2_2_3', 'meas3_1_2_2_3_1', 'meas3_1_2_2_3_2', 'meas3_1_2_2_3_3',
'meas3_1_2_3_1_1', 'meas3_1_2_3_1_2', 'meas3_1_2_3_1_3', 'meas3_1_2_3_2_1', 'meas3_1_2_3_2_2', 'meas3_1_2_3_2_3', 'meas3_1_2_3_3_1', 'meas3_1_2_3_3_2', 'meas3_1_2_3_3_3',
'meas3_1_3_1_1_1', 'meas3_1_3_1_1_2', 'meas3_1_3_1_1_3', 'meas3_1_3_1_2_1', 'meas3_1_3_1_2_2', 'meas3_1_3_1_2_3', 'meas3_1_3_1_3_1', 'meas3_1_3_1_3_2', 'meas3_1_3_1_3_3',
'meas3_1_3_2_1_1', 'meas3_1_3_2_1_2', 'meas3_1_3_2_1_3', 'meas3_1_3_2_2_1', 'meas3_1_3_2_2_2', 'meas3_1_3_2_2_3', 'meas3_1_3_2_3_1', 'meas3_1_3_2_3_2', 'meas3_1_3_2_3_3',
'meas3_1_3_3_1_1', 'meas3_1_3_3_1_2', 'meas3_1_3_3_1_3', 'meas3_1_3_3_2_1', 'meas3_1_3_3_2_2', 'meas3_1_3_3_2_3', 'meas3_1_3_3_3_1', 'meas3_1_3_3_3_2', 'meas3_1_3_3_3_3',
'meas3_2_1_1_1_1', 'meas3_2_1_1_1_2', 'meas3_2_1_1_1_3', 'meas3_2_1_1_2_1', 'meas3_2_1_1_2_2', 'meas3_2_1_1_2_3', 'meas3_2_1_1_3_1', 'meas3_2_1_1_3_2', 'meas3_2_1_1_3_3',
'meas3_2_1_2_1_1', 'meas3_2_1_2_1_2', 'meas3_2_1_2_1_3', 'meas3_2_1_2_2_1', 'meas3_2_1_2_2_2', 'meas3_2_1_2_2_3', 'meas3_2_1_2_3_1', 'meas3_2_1_2_3_2', 'meas3_2_1_2_3_3',
'meas3_2_1_3_1_1', 'meas3_2_1_3_1_2', 'meas3_2_1_3_1_3', 'meas3_2_1_3_2_1', 'meas3_2_1_3_2_2', 'meas3_2_1_3_2_3', 'meas3_2_1_3_3_1', 'meas3_2_1_3_3_2', 'meas3_2_1_3_3_3',
'meas3_2_2_1_1_1', 'meas3_2_2_1_1_2', 'meas3_2_2_1_1_3', 'meas3_2_2_1_2_1', 'meas3_2_2_1_2_2', 'meas3_2_2_1_2_3', 'meas3_2_2_1_3_1', 'meas3_2_2_1_3_2', 'meas3_2_2_1_3_3',
'meas3_2_2_2_1_1', 'meas3_2_2_2_1_2', 'meas3_2_2_2_1_3', 'meas3_2_2_2_2_1', 'meas3_2_2_2_2_2', 'meas3_2_2_2_2_3', 'meas3_2_2_2_3_1', 'meas3_2_2_2_3_2', 'meas3_2_2_2_3_3',
'meas3_2_2_3_1_1', 'meas3_2_2_3_1_2', 'meas3_2_2_3_1_3', 'meas3_2_2_3_2_1', 'meas3_2_2_3_2_2', 'meas3_2_2_3_2_3', 'meas3_2_2_3_3_1', 'meas3_2_2_3_3_2', 'meas3_2_2_3_3_3',
'meas3_2_3_1_1_1', 'meas3_2_3_1_1_2', 'meas3_2_3_1_1_3', 'meas3_2_3_1_2_1', 'meas3_2_3_1_2_2', 'meas3_2_3_1_2_3', 'meas3_2_3_1_3_1', 'meas3_2_3_1_3_2', 'meas3_2_3_1_3_3',
'meas3_2_3_2_1_1', 'meas3_2_3_2_1_2', 'meas3_2_3_2_1_3', 'meas3_2_3_2_2_1', 'meas3_2_3_2_2_2', 'meas3_2_3_2_2_3', 'meas3_2_3_2_3_1', 'meas3_2_3_2_3_2', 'meas3_2_3_2_3_3',
'meas3_2_3_3_1_1', 'meas3_2_3_3_1_2', 'meas3_2_3_3_1_3', 'meas3_2_3_3_2_1', 'meas3_2_3_3_2_2', 'meas3_2_3_3_2_3', 'meas3_2_3_3_3_1', 'meas3_2_3_3_3_2', 'meas3_2_3_3_3_3',
'meas3_3_1_1_1_1', 'meas3_3_1_1_1_2', 'meas3_3_1_1_1_3', 'meas3_3_1_1_2_1', 'meas3_3_1_1_2_2', 'meas3_3_1_1_2_3', 'meas3_3_1_1_3_1', 'meas3_3_1_1_3_2', 'meas3_3_1_1_3_3',
'meas3_3_1_2_1_1', 'meas3_3_1_2_1_2', 'meas3_3_1_2_1_3', 'meas3_3_1_2_2_1', 'meas3_3_1_2_2_2', 'meas3_3_1_2_2_3', 'meas3_3_1_2_3_1', 'meas3_3_1_2_3_2', 'meas3_3_1_2_3_3',
'meas3_3_1_3_1_1', 'meas3_3_1_3_1_2', 'meas3_3_1_3_1_3', 'meas3_3_1_3_2_1', 'meas3_3_1_3_2_2', 'meas3_3_1_3_2_3', 'meas3_3_1_3_3_1', 'meas3_3_1_3_3_2', 'meas3_3_1_3_3_3',
'meas3_3_2_1_1_1', 'meas3_3_2_1_1_2', 'meas3_3_2_1_1_3', 'meas3_3_2_1_2_1', 'meas3_3_2_1_2_2', 'meas3_3_2_1_2_3', 'meas3_3_2_1_3_1', 'meas3_3_2_1_3_2', 'meas3_3_2_1_3_3',
'meas3_3_2_2_1_1', 'meas3_3_2_2_1_2', 'meas3_3_2_2_1_3', 'meas3_3_2_2_2_1', 'meas3_3_2_2_2_2', 'meas3_3_2_2_2_3', 'meas3_3_2_2_3_1', 'meas3_3_2_2_3_2', 'meas3_3_2_2_3_3',
'meas3_3_2_3_1_1', 'meas3_3_2_3_1_2', 'meas3_3_2_3_1_3', 'meas3_3_2_3_2_1', 'meas3_3_2_3_2_2', 'meas3_3_2_3_2_3', 'meas3_3_2_3_3_1', 'meas3_3_2_3_3_2', 'meas3_3_2_3_3_3',
'meas3_3_3_1_1_1', 'meas3_3_3_1_1_2', 'meas3_3_3_1_1_3', 'meas3_3_3_1_2_1', 'meas3_3_3_1_2_2', 'meas3_3_3_1_2_3', 'meas3_3_3_1_3_1', 'meas3_3_3_1_3_2', 'meas3_3_3_1_3_3',
'meas3_3_3_2_1_1', 'meas3_3_3_2_1_2', 'meas3_3_3_2_1_3', 'meas3_3_3_2_2_1', 'meas3_3_3_2_2_2', 'meas3_3_3_2_2_3', 'meas3_3_3_2_3_1', 'meas3_3_3_2_3_2', 'meas3_3_3_2_3_3',
'meas3_3_3_3_1_1', 'meas3_3_3_3_1_2', 'meas3_3_3_3_1_3', 'meas3_3_3_3_2_1', 'meas3_3_3_3_2_2', 'meas3_3_3_3_2_3', 'meas3_3_3_3_3_1', 'meas3_3_3_3_3_2', 'meas3_3_3_3_3_3'
)
redis.call('SADD', 'grid1_zones_keys', 'zone1_1', 'zone1_2', 'zone1_3')
redis.call('SADD', 'grid2_zones_keys', 'zone2_1', 'zone2_2', 'zone2_3')
redis.call('SADD', 'grid3_zones_keys', 'zone3_1', 'zone3_2', 'zone3_3')
redis.call('SADD', 'zone1_1_stations_keys', 'station1_1_1', 'station1_1_2', 'station1_1_3')
redis.call('SADD', 'zone1_2_stations_keys', 'station1_2_1', 'station1_2_2', 'station1_2_3')
redis.call('SADD', 'zone1_3_stations_keys', 'station1_3_1', 'station1_3_2', 'station1_3_3')
redis.call('SADD', 'zone2_1_stations_keys', 'station2_1_1', 'station2_1_2', 'station2_1_3')
redis.call('SADD', 'zone2_2_stations_keys', 'station2_2_1', 'station2_2_2', 'station2_2_3')
redis.call('SADD', 'zone2_3_stations_keys', 'station2_3_1', 'station2_3_2', 'station2_3_3')
redis.call('SADD', 'zone3_1_stations_keys', 'station3_1_1', 'station3_1_2', 'station3_1_3')
redis.call('SADD', 'zone3_2_stations_keys', 'station3_2_1', 'station3_2_2', 'station3_2_3')
redis.call('SADD', 'zone3_3_stations_keys', 'station3_3_1', 'station3_3_2', 'station3_3_3')
redis.call('SADD', 'station1_1_1_components_nspath_keys', 'ns1_1_1_1', 'ns1_1_1_2', 'ns1_1_1_3')
redis.call('SADD', 'station1_1_2_components_nspath_keys', 'ns1_1_2_1', 'ns1_1_2_2', 'ns1_1_2_3')
redis.call('SADD', 'station1_1_3_components_nspath_keys', 'ns1_1_3_1', 'ns1_1_3_2', 'ns1_1_3_3')
redis.call('SADD', 'station1_2_1_components_nspath_keys', 'ns1_2_1_1', 'ns1_2_1_2', 'ns1_2_1_3')
redis.call('SADD', 'station1_2_2_components_nspath_keys', 'ns1_2_2_1', 'ns1_2_2_2', 'ns1_2_2_3')
redis.call('SADD', 'station1_2_3_components_nspath_keys', 'ns1_2_3_1', 'ns1_2_3_2', 'ns1_2_3_3')
redis.call('SADD', 'station1_3_1_components_nspath_keys', 'ns1_3_1_1', 'ns1_3_1_2', 'ns1_3_1_3')
redis.call('SADD', 'station1_3_2_components_nspath_keys', 'ns1_3_2_1', 'ns1_3_2_2', 'ns1_3_2_3')
redis.call('SADD', 'station1_3_3_components_nspath_keys', 'ns1_3_3_1', 'ns1_3_3_2', 'ns1_3_3_3')
redis.call('SADD', 'station2_1_1_components_nspath_keys', 'ns2_1_1_1', 'ns2_1_1_2', 'ns2_1_1_3')
redis.call('SADD', 'station2_1_2_components_nspath_keys', 'ns2_1_2_1', 'ns2_1_2_2', 'ns2_1_2_3')
redis.call('SADD', 'station2_1_3_components_nspath_keys', 'ns2_1_3_1', 'ns2_1_3_2', 'ns2_1_3_3')
redis.call('SADD', 'station2_2_1_components_nspath_keys', 'ns2_2_1_1', 'ns2_2_1_2', 'ns2_2_1_3')
redis.call('SADD', 'station2_2_2_components_nspath_keys', 'ns2_2_2_1', 'ns2_2_2_2', 'ns2_2_2_3')
redis.call('SADD', 'station2_2_3_components_nspath_keys', 'ns2_2_3_1', 'ns2_2_3_2', 'ns2_2_3_3')
redis.call('SADD', 'station2_3_1_components_nspath_keys', 'ns2_3_1_1', 'ns2_3_1_2', 'ns2_3_1_3')
redis.call('SADD', 'station2_3_2_components_nspath_keys', 'ns2_3_2_1', 'ns2_3_2_2', 'ns2_3_2_3')
redis.call('SADD', 'station2_3_3_components_nspath_keys', 'ns2_3_3_1', 'ns2_3_3_2', 'ns2_3_3_3')
redis.call('SADD', 'station3_1_1_components_nspath_keys', 'ns3_1_1_1', 'ns3_1_1_2', 'ns3_1_1_3')
redis.call('SADD', 'station3_1_2_components_nspath_keys', 'ns3_1_2_1', 'ns3_1_2_2', 'ns3_1_2_3')
redis.call('SADD', 'station3_1_3_components_nspath_keys', 'ns3_1_3_1', 'ns3_1_3_2', 'ns3_1_3_3')
redis.call('SADD', 'station3_2_1_components_nspath_keys', 'ns3_2_1_1', 'ns3_2_1_2', 'ns3_2_1_3')
redis.call('SADD', 'station3_2_2_components_nspath_keys', 'ns3_2_2_1', 'ns3_2_2_2', 'ns3_2_2_3')
redis.call('SADD', 'station3_2_3_components_nspath_keys', 'ns3_2_3_1', 'ns3_2_3_2', 'ns3_2_3_3')
redis.call('SADD', 'station3_3_1_components_nspath_keys', 'ns3_3_1_1', 'ns3_3_1_2', 'ns3_3_1_3')
redis.call('SADD', 'station3_3_2_components_nspath_keys', 'ns3_3_2_1', 'ns3_3_2_2', 'ns3_3_2_3')
redis.call('SADD', 'station3_3_3_components_nspath_keys', 'ns3_3_3_1', 'ns3_3_3_2', 'ns3_3_3_3')
redis.call('SADD', 'station1_1_1_components_nspath_keys', 'ns1_1_1_1', 'ns1_1_1_2', 'ns1_1_1_3')
redis.call('SADD', 'station1_1_2_components_nspath_keys', 'ns1_1_2_1', 'ns1_1_2_2', 'ns1_1_2_3')
redis.call('SADD', 'station1_1_3_components_nspath_keys', 'ns1_1_3_1', 'ns1_1_3_2', 'ns1_1_3_3')
redis.call('SADD', 'station1_2_1_components_nspath_keys', 'ns1_2_1_1', 'ns1_2_1_2', 'ns1_2_1_3')
redis.call('SADD', 'station1_2_2_components_nspath_keys', 'ns1_2_2_1', 'ns1_2_2_2', 'ns1_2_2_3')
redis.call('SADD', 'station1_2_3_components_nspath_keys', 'ns1_2_3_1', 'ns1_2_3_2', 'ns1_2_3_3')
redis.call('SADD', 'station1_3_1_components_nspath_keys', 'ns1_3_1_1', 'ns1_3_1_2', 'ns1_3_1_3')
redis.call('SADD', 'station1_3_2_components_nspath_keys', 'ns1_3_2_1', 'ns1_3_2_2', 'ns1_3_2_3')
redis.call('SADD', 'station1_3_3_components_nspath_keys', 'ns1_3_3_1', 'ns1_3_3_2', 'ns1_3_3_3')
redis.call('SADD', 'station2_1_1_components_nspath_keys', 'ns2_1_1_1', 'ns2_1_1_2', 'ns2_1_1_3')
redis.call('SADD', 'station2_1_2_components_nspath_keys', 'ns2_1_2_1', 'ns2_1_2_2', 'ns2_1_2_3')
redis.call('SADD', 'station2_1_3_components_nspath_keys', 'ns2_1_3_1', 'ns2_1_3_2', 'ns2_1_3_3')
redis.call('SADD', 'station2_2_1_components_nspath_keys', 'ns2_2_1_1', 'ns2_2_1_2', 'ns2_2_1_3')
redis.call('SADD', 'station2_2_2_components_nspath_keys', 'ns2_2_2_1', 'ns2_2_2_2', 'ns2_2_2_3')
redis.call('SADD', 'station2_2_3_components_nspath_keys', 'ns2_2_3_1', 'ns2_2_3_2', 'ns2_2_3_3')
redis.call('SADD', 'station2_3_1_components_nspath_keys', 'ns2_3_1_1', 'ns2_3_1_2', 'ns2_3_1_3')
redis.call('SADD', 'station2_3_2_components_nspath_keys', 'ns2_3_2_1', 'ns2_3_2_2', 'ns2_3_2_3')
redis.call('SADD', 'station2_3_3_components_nspath_keys', 'ns2_3_3_1', 'ns2_3_3_2', 'ns2_3_3_3')
redis.call('SADD', 'station3_1_1_components_nspath_keys', 'ns3_1_1_1', 'ns3_1_1_2', 'ns3_1_1_3')
redis.call('SADD', 'station3_1_2_components_nspath_keys', 'ns3_1_2_1', 'ns3_1_2_2', 'ns3_1_2_3')
redis.call('SADD', 'station3_1_3_components_nspath_keys', 'ns3_1_3_1', 'ns3_1_3_2', 'ns3_1_3_3')
redis.call('SADD', 'station3_2_1_components_nspath_keys', 'ns3_2_1_1', 'ns3_2_1_2', 'ns3_2_1_3')
redis.call('SADD', 'station3_2_2_components_nspath_keys', 'ns3_2_2_1', 'ns3_2_2_2', 'ns3_2_2_3')
redis.call('SADD', 'station3_2_3_components_nspath_keys', 'ns3_2_3_1', 'ns3_2_3_2', 'ns3_2_3_3')
redis.call('SADD', 'station3_3_1_components_nspath_keys', 'ns3_3_1_1', 'ns3_3_1_2', 'ns3_3_1_3')
redis.call('SADD', 'station3_3_2_components_nspath_keys', 'ns3_3_2_1', 'ns3_3_2_2', 'ns3_3_2_3')
redis.call('SADD', 'station3_3_3_components_nspath_keys', 'ns3_3_3_1', 'ns3_3_3_2', 'ns3_3_3_3')
redis.call('SADD', 'ns1_1_1_1_components_tag_keys', 'comptag1_1_1_1_1', 'comptag1_1_1_1_2' 'comptag1_1_1_1_3')
redis.call('SADD', 'ns1_1_1_2_components_tag_keys', 'comptag1_1_1_2_1', 'comptag1_1_1_2_2', 'comptag1_1_1_2_3')
redis.call('SADD', 'ns1_1_1_3_components_tag_keys', 'comptag1_1_1_3_1', 'comptag1_1_1_3_2', 'comptag1_1_1_3_3')
redis.call('SADD', 'ns1_1_2_1_components_tag_keys', 'comptag1_1_2_1_1', 'comptag1_1_2_1_2', 'comptag1_1_2_1_3')
redis.call('SADD', 'ns1_1_2_2_components_tag_keys', 'comptag1_1_2_2_1', 'comptag1_1_2_2_2', 'comptag1_1_2_2_3')
redis.call('SADD', 'ns1_1_2_3_components_tag_keys', 'comptag1_1_2_3_1', 'comptag1_1_2_3_2', 'comptag1_1_2_3_3')
redis.call('SADD', 'ns1_1_3_1_components_tag_keys', 'comptag1_1_3_1_1', 'comptag1_1_3_1_2', 'comptag1_1_3_1_3')
redis.call('SADD', 'ns1_1_3_2_components_tag_keys', 'comptag1_1_3_2_1', 'comptag1_1_3_2_2', 'comptag1_1_3_2_3')
redis.call('SADD', 'ns1_1_3_3_components_tag_keys', 'comptag1_1_3_3_1', 'comptag1_1_3_3_2', 'comptag1_1_3_3_3')
redis.call('SADD', 'ns1_2_1_1_components_tag_keys', 'comptag1_2_1_1_1', 'comptag1_2_1_1_2', 'comptag1_2_1_1_3')
redis.call('SADD', 'ns1_2_1_2_components_tag_keys', 'comptag1_2_1_2_1', 'comptag1_2_1_2_2', 'comptag1_2_1_2_3')
redis.call('SADD', 'ns1_2_1_3_components_tag_keys', 'comptag1_2_1_3_1', 'comptag1_2_1_3_2', 'comptag1_2_1_3_3')
redis.call('SADD', 'ns1_2_2_1_components_tag_keys', 'comptag1_2_2_1_1', 'comptag1_2_2_1_2', 'comptag1_2_2_1_3')
redis.call('SADD', 'ns1_2_2_2_components_tag_keys', 'comptag1_2_2_2_1', 'comptag1_2_2_2_2', 'comptag1_2_2_2_3')
redis.call('SADD', 'ns1_2_2_3_components_tag_keys', 'comptag1_2_2_3_1', 'comptag1_2_2_3_2', 'comptag1_2_2_3_3')
redis.call('SADD', 'ns1_2_3_1_components_tag_keys', 'comptag1_2_3_1_1', 'comptag1_2_3_1_2', 'comptag1_2_3_1_3')
redis.call('SADD', 'ns1_2_3_2_components_tag_keys', 'comptag1_2_3_2_1', 'comptag1_2_3_2_2', 'comptag1_2_3_2_3')
redis.call('SADD', 'ns1_2_3_3_components_tag_keys', 'comptag1_2_3_3_1', 'comptag1_2_3_3_2', 'comptag1_2_3_3_3')
redis.call('SADD', 'ns1_3_1_1_components_tag_keys', 'comptag1_3_1_1_1', 'comptag1_3_1_1_2', 'comptag1_3_1_1_3')
redis.call('SADD', 'ns1_3_1_2_components_tag_keys', 'comptag1_3_1_2_1', 'comptag1_3_1_2_2', 'comptag1_3_1_2_3')
redis.call('SADD', 'ns1_3_1_3_components_tag_keys', 'comptag1_3_1_3_1', 'comptag1_3_1_3_2', 'comptag1_3_1_3_3')
redis.call('SADD', 'ns1_3_2_1_components_tag_keys', 'comptag1_3_2_1_1', 'comptag1_3_2_1_2', 'comptag1_3_2_1_3')
redis.call('SADD', 'ns1_3_2_2_components_tag_keys', 'comptag1_3_2_2_1', 'comptag1_3_2_2_2', 'comptag1_3_2_2_3')
redis.call('SADD', 'ns1_3_2_3_components_tag_keys', 'comptag1_3_2_3_1', 'comptag1_3_2_3_2', 'comptag1_3_2_3_3')
redis.call('SADD', 'ns1_3_2_1_components_tag_keys', 'comptag1_3_2_1_1', 'comptag1_3_2_1_2', 'comptag1_3_2_1_3')
redis.call('SADD', 'ns1_3_2_2_components_tag_keys', 'comptag1_3_2_2_1', 'comptag1_3_2_2_2', 'comptag1_3_2_2_3')
redis.call('SADD', 'ns1_3_2_3_components_tag_keys', 'comptag1_3_2_3_1', 'comptag1_3_2_3_2', 'comptag1_3_2_3_3')
redis.call('SADD', 'ns2_1_1_1_components_tag_keys', 'comptag2_1_1_1_1', 'comptag2_1_1_1_2', 'comptag2_1_1_1_3')
redis.call('SADD', 'ns2_1_1_2_components_tag_keys', 'comptag2_1_1_2_1', 'comptag2_1_1_2_2', 'comptag2_1_1_2_3')
redis.call('SADD', 'ns2_1_1_3_components_tag_keys', 'comptag2_1_1_3_1', 'comptag2_1_1_3_2', 'comptag2_1_1_3_3')
redis.call('SADD', 'ns2_1_2_1_components_tag_keys', 'comptag2_1_2_1_1', 'comptag2_1_2_1_2', 'comptag2_1_2_1_3')
redis.call('SADD', 'ns2_1_2_2_components_tag_keys', 'comptag2_1_2_2_1', 'comptag2_1_2_2_2', 'comptag2_1_2_2_3')
redis.call('SADD', 'ns2_1_2_3_components_tag_keys', 'comptag2_1_2_3_1', 'comptag2_1_2_3_2', 'comptag2_1_2_3_3')
redis.call('SADD', 'ns2_1_3_1_components_tag_keys', 'comptag2_1_3_1_1', 'comptag2_1_3_1_2', 'comptag2_1_3_1_3')
redis.call('SADD', 'ns2_1_3_2_components_tag_keys', 'comptag2_1_3_2_1', 'comptag2_1_3_2_2', 'comptag2_1_3_2_3')
redis.call('SADD', 'ns2_1_3_3_components_tag_keys', 'comptag2_1_3_3_1', 'comptag2_1_3_3_2', 'comptag2_1_3_3_3')
redis.call('SADD', 'ns2_2_1_1_components_tag_keys', 'comptag2_2_1_1_1', 'comptag2_2_1_1_2', 'comptag2_2_1_1_3')
redis.call('SADD', 'ns2_2_1_2_components_tag_keys', 'comptag2_2_1_2_1', 'comptag2_2_1_2_2', 'comptag2_2_1_2_3')
redis.call('SADD', 'ns2_2_1_3_components_tag_keys', 'comptag2_2_1_3_1', 'comptag2_2_1_3_2', 'comptag2_2_1_3_3')
redis.call('SADD', 'ns2_2_2_1_components_tag_keys', 'comptag2_2_2_1_1', 'comptag2_2_2_1_2', 'comptag2_2_2_1_3')
redis.call('SADD', 'ns2_2_2_2_components_tag_keys', 'comptag2_2_2_2_1', 'comptag2_2_2_2_2', 'comptag2_2_2_2_3')
redis.call('SADD', 'ns2_2_2_3_components_tag_keys', 'comptag2_2_2_3_1', 'comptag2_2_2_3_2', 'comptag2_2_2_3_3')
redis.call('SADD', 'ns2_2_3_1_components_tag_keys', 'comptag2_2_3_1_1', 'comptag2_2_3_1_2', 'comptag2_2_3_1_3')
redis.call('SADD', 'ns2_2_3_2_components_tag_keys', 'comptag2_2_3_2_1', 'comptag2_2_3_2_2', 'comptag2_2_3_2_3')
redis.call('SADD', 'ns2_2_3_3_components_tag_keys', 'comptag2_2_3_3_1', 'comptag2_2_3_3_2', 'comptag2_2_3_3_3')
redis.call('SADD', 'ns2_3_1_1_components_tag_keys', 'comptag2_3_1_1_1', 'comptag2_3_1_1_2', 'comptag2_3_1_1_3')
redis.call('SADD', 'ns2_3_1_2_components_tag_keys', 'comptag2_3_1_2_1', 'comptag2_3_1_2_2', 'comptag2_3_1_2_3')
redis.call('SADD', 'ns2_3_1_3_components_tag_keys', 'comptag2_3_1_3_1', 'comptag2_3_1_3_2', 'comptag2_3_1_3_3')
redis.call('SADD', 'ns2_3_2_1_components_tag_keys', 'comptag2_3_2_1_1', 'comptag2_3_2_1_2', 'comptag2_3_2_1_3')
redis.call('SADD', 'ns2_3_2_2_components_tag_keys', 'comptag2_3_2_2_1', 'comptag2_3_2_2_2', 'comptag2_3_2_2_3')
redis.call('SADD', 'ns2_3_2_3_components_tag_keys', 'comptag2_3_2_3_1', 'comptag2_3_2_3_2', 'comptag2_3_2_3_3')
redis.call('SADD', 'ns2_3_2_1_components_tag_keys', 'comptag2_3_2_1_1', 'comptag2_3_2_1_2', 'comptag2_3_2_1_3')
redis.call('SADD', 'ns2_3_2_2_components_tag_keys', 'comptag2_3_2_2_1', 'comptag2_3_2_2_2', 'comptag2_3_2_2_3')
redis.call('SADD', 'ns2_3_2_3_components_tag_keys', 'comptag2_3_2_3_1', 'comptag2_3_2_3_2', 'comptag2_3_2_3_3')
redis.call('SADD', 'ns3_1_1_1_components_tag_keys', 'comptag3_1_1_1_1', 'comptag3_1_1_1_2', 'comptag3_1_1_1_3')
redis.call('SADD', 'ns3_1_1_2_components_tag_keys', 'comptag3_1_1_2_1', 'comptag3_1_1_2_2', 'comptag3_1_1_2_3')
redis.call('SADD', 'ns3_1_1_3_components_tag_keys', 'comptag3_1_1_3_1', 'comptag3_1_1_3_2', 'comptag3_1_1_3_3')
redis.call('SADD', 'ns3_1_2_1_components_tag_keys', 'comptag3_1_2_1_1', 'comptag3_1_2_1_2', 'comptag3_1_2_1_3')
redis.call('SADD', 'ns3_1_2_2_components_tag_keys', 'comptag3_1_2_2_1', 'comptag3_1_2_2_2', 'comptag3_1_2_2_3')
redis.call('SADD', 'ns3_1_2_3_components_tag_keys', 'comptag3_1_2_3_1', 'comptag3_1_2_3_2', 'comptag3_1_2_3_3')
redis.call('SADD', 'ns3_1_3_1_components_tag_keys', 'comptag3_1_3_1_1', 'comptag3_1_3_1_2', 'comptag3_1_3_1_3')
redis.call('SADD', 'ns3_1_3_2_components_tag_keys', 'comptag3_1_3_2_1', 'comptag3_1_3_2_2', 'comptag3_1_3_2_3')
redis.call('SADD', 'ns3_1_3_3_components_tag_keys', 'comptag3_1_3_3_1', 'comptag3_1_3_3_2', 'comptag3_1_3_3_3')
redis.call('SADD', 'ns3_2_1_1_components_tag_keys', 'comptag3_2_1_1_1', 'comptag3_2_1_1_2', 'comptag3_2_1_1_3')
redis.call('SADD', 'ns3_2_1_2_components_tag_keys', 'comptag3_2_1_2_1', 'comptag3_2_1_2_2', 'comptag3_2_1_2_3')
redis.call('SADD', 'ns3_2_1_3_components_tag_keys', 'comptag3_2_1_3_1', 'comptag3_2_1_3_2', 'comptag3_2_1_3_3')
redis.call('SADD', 'ns3_2_2_1_components_tag_keys', 'comptag3_2_2_1_1', 'comptag3_2_2_1_2', 'comptag3_2_2_1_3')
redis.call('SADD', 'ns3_2_2_2_components_tag_keys', 'comptag3_2_2_2_1', 'comptag3_2_2_2_2', 'comptag3_2_2_2_3')
redis.call('SADD', 'ns3_2_2_3_components_tag_keys', 'comptag3_2_2_3_1', 'comptag3_2_2_3_2', 'comptag3_2_2_3_3')
redis.call('SADD', 'ns3_2_3_1_components_tag_keys', 'comptag3_2_3_1_1', 'comptag3_2_3_1_2', 'comptag3_2_3_1_3')
redis.call('SADD', 'ns3_2_3_2_components_tag_keys', 'comptag3_2_3_2_1', 'comptag3_2_3_2_2', 'comptag3_2_3_2_3')
redis.call('SADD', 'ns3_2_3_3_components_tag_keys', 'comptag3_2_3_3_1', 'comptag3_2_3_3_2', 'comptag3_2_3_3_3')
redis.call('SADD', 'ns3_3_1_1_components_tag_keys', 'comptag3_3_1_1_1', 'comptag3_3_1_1_2', 'comptag3_3_1_1_3')
redis.call('SADD', 'ns3_3_1_2_components_tag_keys', 'comptag3_3_1_2_1', 'comptag3_3_1_2_2', 'comptag3_3_1_2_3')
redis.call('SADD', 'ns3_3_1_3_components_tag_keys', 'comptag3_3_1_3_1', 'comptag3_3_1_3_2', 'comptag3_3_1_3_3')
redis.call('SADD', 'ns3_3_2_1_components_tag_keys', 'comptag3_3_2_1_1', 'comptag3_3_2_1_2', 'comptag3_3_2_1_3')
redis.call('SADD', 'ns3_3_2_2_components_tag_keys', 'comptag3_3_2_2_1', 'comptag3_3_2_2_2', 'comptag3_3_2_2_3')
redis.call('SADD', 'ns3_3_2_3_components_tag_keys', 'comptag3_3_2_3_1', 'comptag3_3_2_3_2', 'comptag3_3_2_3_3')
redis.call('SADD', 'ns3_3_3_1_components_tag_keys', 'comptag3_3_3_1_1', 'comptag3_3_3_1_2', 'comptag3_3_3_1_3')
redis.call('SADD', 'ns3_3_3_2_components_tag_keys', 'comptag3_3_3_2_1', 'comptag3_3_3_2_2', 'comptag3_3_3_2_3')
redis.call('SADD', 'ns3_3_3_3_components_tag_keys', 'comptag3_3_3_3_1', 'comptag3_3_3_3_2', 'comptag3_3_3_3_3')
redis.call('SADD', 'comptag1_1_1_1_2_measurement_keys', 'meas1_1_1_1_2_1', 'meas1_1_1_1_2_2', 'meas1_1_1_1_2_3')
redis.call('SADD', 'comptag1_1_1_1_3_measurement_keys', 'meas1_1_1_1_3_1', 'meas1_1_1_1_3_2', 'meas1_1_1_1_3_3')
redis.call('SADD', 'comptag1_1_1_2_1_measurement_keys', 'meas1_1_1_2_1_1', 'meas1_1_1_2_1_2', 'meas1_1_1_2_1_3')
redis.call('SADD', 'comptag1_1_1_2_2_measurement_keys', 'meas1_1_1_2_2_1', 'meas1_1_1_2_2_2', 'meas1_1_1_2_2_3')
redis.call('SADD', 'comptag1_1_1_2_3_measurement_keys', 'meas1_1_1_2_3_1', 'meas1_1_1_2_3_2', 'meas1_1_1_2_3_3')
redis.call('SADD', 'comptag1_1_1_3_1_measurement_keys', 'meas1_1_1_3_1_1', 'meas1_1_1_3_1_2', 'meas1_1_1_3_1_3')
redis.call('SADD', 'comptag1_1_1_3_2_measurement_keys', 'meas1_1_1_3_2_1', 'meas1_1_1_3_2_2', 'meas1_1_1_3_2_3')
redis.call('SADD', 'comptag1_1_1_3_3_measurement_keys', 'meas1_1_1_3_3_1', 'meas1_1_1_3_3_2', 'meas1_1_1_3_3_3')
redis.call('SADD', 'comptag1_1_2_1_1_measurement_keys', 'meas1_1_2_1_1_1', 'meas1_1_2_1_1_2', 'meas1_1_2_1_1_3')
redis.call('SADD', 'comptag1_1_2_1_2_measurement_keys', 'meas1_1_2_1_2_1', 'meas1_1_2_1_2_2', 'meas1_1_2_1_2_3')
redis.call('SADD', 'comptag1_1_2_1_3_measurement_keys', 'meas1_1_2_1_3_1', 'meas1_1_2_1_3_2', 'meas1_1_2_1_3_3')
redis.call('SADD', 'comptag1_1_2_2_1_measurement_keys', 'meas1_1_2_2_1_1', 'meas1_1_2_2_1_2', 'meas1_1_2_2_1_3')
redis.call('SADD', 'comptag1_1_2_2_2_measurement_keys', 'meas1_1_2_2_2_1', 'meas1_1_2_2_2_2', 'meas1_1_2_2_2_3')
redis.call('SADD', 'comptag1_1_2_2_3_measurement_keys', 'meas1_1_2_2_3_1', 'meas1_1_2_2_3_2', 'meas1_1_2_2_3_3')
redis.call('SADD', 'comptag1_1_2_3_1_measurement_keys', 'meas1_1_2_3_1_1', 'meas1_1_2_3_1_2', 'meas1_1_2_3_1_3')
redis.call('SADD', 'comptag1_1_2_3_2_measurement_keys', 'meas1_1_2_3_2_1', 'meas1_1_2_3_2_2', 'meas1_1_2_3_2_3')
redis.call('SADD', 'comptag1_1_2_3_3_measurement_keys', 'meas1_1_2_3_3_1', 'meas1_1_2_3_3_2', 'meas1_1_2_3_3_3')
redis.call('SADD', 'comptag1_1_3_1_1_measurement_keys', 'meas1_1_3_1_1_1', 'meas1_1_3_1_1_2', 'meas1_1_3_1_1_3')
redis.call('SADD', 'comptag1_1_3_1_2_measurement_keys', 'meas1_1_3_1_2_1', 'meas1_1_3_1_2_2', 'meas1_1_3_1_2_3')
redis.call('SADD', 'comptag1_1_3_1_3_measurement_keys', 'meas1_1_3_1_3_1', 'meas1_1_3_1_3_2', 'meas1_1_3_1_3_3')
redis.call('SADD', 'comptag1_1_3_2_1_measurement_keys', 'meas1_1_3_2_1_1', 'meas1_1_3_2_1_2', 'meas1_1_3_2_1_3')
redis.call('SADD', 'comptag1_1_3_2_2_measurement_keys', 'meas1_1_3_2_2_1', 'meas1_1_3_2_2_2', 'meas1_1_3_2_2_3')
redis.call('SADD', 'comptag1_1_3_2_3_measurement_keys', 'meas1_1_3_2_3_1', 'meas1_1_3_2_3_2', 'meas1_1_3_2_3_3')
redis.call('SADD', 'comptag1_1_3_3_1_measurement_keys', 'meas1_1_3_3_1_1', 'meas1_1_3_3_1_2', 'meas1_1_3_3_1_3')
redis.call('SADD', 'comptag1_1_3_3_2_measurement_keys', 'meas1_1_3_3_2_1', 'meas1_1_3_3_2_2', 'meas1_1_3_3_2_3')
redis.call('SADD', 'comptag1_1_3_3_3_measurement_keys', 'meas1_1_3_3_3_1', 'meas1_1_3_3_3_2', 'meas1_1_3_3_3_3')
redis.call('SADD', 'comptag1_2_1_1_1_measurement_keys', 'meas1_2_1_1_1_1', 'meas1_2_1_1_1_2', 'meas1_2_1_1_1_3')
redis.call('SADD', 'comptag1_2_1_1_2_measurement_keys', 'meas1_2_1_1_2_1', 'meas1_2_1_1_2_2', 'meas1_2_1_1_2_3')
redis.call('SADD', 'comptag1_2_1_1_3_measurement_keys', 'meas1_2_1_1_3_1', 'meas1_2_1_1_3_2', 'meas1_2_1_1_3_3')
redis.call('SADD', 'comptag1_2_1_2_1_measurement_keys', 'meas1_2_1_2_1_1', 'meas1_2_1_2_1_2', 'meas1_2_1_2_1_3')
redis.call('SADD', 'comptag1_2_1_2_2_measurement_keys', 'meas1_2_1_2_2_1', 'meas1_2_1_2_2_2', 'meas1_2_1_2_2_3')
redis.call('SADD', 'comptag1_2_1_2_3_measurement_keys', 'meas1_2_1_2_3_1', 'meas1_2_1_2_3_2', 'meas1_2_1_2_3_3')
redis.call('SADD', 'comptag1_2_1_3_1_measurement_keys', 'meas1_2_1_3_1_1', 'meas1_2_1_3_1_2', 'meas1_2_1_3_1_3')
redis.call('SADD', 'comptag1_2_1_3_2_measurement_keys', 'meas1_2_1_3_2_1', 'meas1_2_1_3_2_2', 'meas1_2_1_3_2_3')
redis.call('SADD', 'comptag1_2_1_3_3_measurement_keys', 'meas1_2_1_3_3_1', 'meas1_2_1_3_3_2', 'meas1_2_1_3_3_3')
redis.call('SADD', 'comptag1_2_2_1_1_measurement_keys', 'meas1_2_2_1_1_1', 'meas1_2_2_1_1_2', 'meas1_2_2_1_1_3')
redis.call('SADD', 'comptag1_2_2_1_2_measurement_keys', 'meas1_2_2_1_2_1', 'meas1_2_2_1_2_2', 'meas1_2_2_1_2_3')
redis.call('SADD', 'comptag1_2_2_1_3_measurement_keys', 'meas1_2_2_1_3_1', 'meas1_2_2_1_3_2', 'meas1_2_2_1_3_3')
redis.call('SADD', 'comptag1_2_2_2_1_measurement_keys', 'meas1_2_2_2_1_1', 'meas1_2_2_2_1_2', 'meas1_2_2_2_1_3')
redis.call('SADD', 'comptag1_2_2_2_2_measurement_keys', 'meas1_2_2_2_2_1', 'meas1_2_2_2_2_2', 'meas1_2_2_2_2_3')
redis.call('SADD', 'comptag1_2_2_2_3_measurement_keys', 'meas1_2_2_2_3_1', 'meas1_2_2_2_3_2', 'meas1_2_2_2_3_3')
redis.call('SADD', 'comptag1_2_2_3_1_measurement_keys', 'meas1_2_2_3_1_1', 'meas1_2_2_3_1_2', 'meas1_2_2_3_1_3')
redis.call('SADD', 'comptag1_2_2_3_2_measurement_keys', 'meas1_2_2_3_2_1', 'meas1_2_2_3_2_2', 'meas1_2_2_3_2_3')
redis.call('SADD', 'comptag1_2_2_3_3_measurement_keys', 'meas1_2_2_3_3_1', 'meas1_2_2_3_3_2', 'meas1_2_2_3_3_3')
redis.call('SADD', 'comptag1_2_3_1_1_measurement_keys', 'meas1_2_3_1_1_1', 'meas1_2_3_1_1_2', 'meas1_2_3_1_1_3')
redis.call('SADD', 'comptag1_2_3_1_2_measurement_keys', 'meas1_2_3_1_2_1', 'meas1_2_3_1_2_2', 'meas1_2_3_1_2_3')
redis.call('SADD', 'comptag1_2_3_1_3_measurement_keys', 'meas1_2_3_1_3_1', 'meas1_2_3_1_3_2', 'meas1_2_3_1_3_3')
redis.call('SADD', 'comptag1_2_3_2_1_measurement_keys', 'meas1_2_3_2_1_1', 'meas1_2_3_2_1_2', 'meas1_2_3_2_1_3')
redis.call('SADD', 'comptag1_2_3_2_2_measurement_keys', 'meas1_2_3_2_2_1', 'meas1_2_3_2_2_2', 'meas1_2_3_2_2_3')
redis.call('SADD', 'comptag1_2_3_2_3_measurement_keys', 'meas1_2_3_2_3_1', 'meas1_2_3_2_3_2', 'meas1_2_3_2_3_3')
redis.call('SADD', 'comptag1_2_3_3_1_measurement_keys', 'meas1_2_3_3_1_1', 'meas1_2_3_3_1_2', 'meas1_2_3_3_1_3')
redis.call('SADD', 'comptag1_2_3_3_2_measurement_keys', 'meas1_2_3_3_2_1', 'meas1_2_3_3_2_2', 'meas1_2_3_3_2_3')
redis.call('SADD', 'comptag1_2_3_3_3_measurement_keys', 'meas1_2_3_3_3_1', 'meas1_2_3_3_3_2', 'meas1_2_3_3_3_3')
redis.call('SADD', 'comptag1_3_1_1_1_measurement_keys', 'meas1_3_1_1_1_1', 'meas1_3_1_1_1_2', 'meas1_3_1_1_1_3')
redis.call('SADD', 'comptag1_3_1_1_2_measurement_keys', 'meas1_3_1_1_2_1', 'meas1_3_1_1_2_2', 'meas1_3_1_1_2_3')
redis.call('SADD', 'comptag1_3_1_1_3_measurement_keys', 'meas1_3_1_1_3_1', 'meas1_3_1_1_3_2', 'meas1_3_1_1_3_3')
redis.call('SADD', 'comptag1_3_1_2_1_measurement_keys', 'meas1_3_1_2_1_1', 'meas1_3_1_2_1_2', 'meas1_3_1_2_1_3')
redis.call('SADD', 'comptag1_3_1_2_2_measurement_keys', 'meas1_3_1_2_2_1', 'meas1_3_1_2_2_2', 'meas1_3_1_2_2_3')
redis.call('SADD', 'comptag1_3_1_2_3_measurement_keys', 'meas1_3_1_2_3_1', 'meas1_3_1_2_3_2', 'meas1_3_1_2_3_3')
redis.call('SADD', 'comptag1_3_1_3_1_measurement_keys', 'meas1_3_1_3_1_1', 'meas1_3_1_3_1_2', 'meas1_3_1_3_1_3')
redis.call('SADD', 'comptag1_3_1_3_2_measurement_keys', 'meas1_3_1_3_2_1', 'meas1_3_1_3_2_2', 'meas1_3_1_3_2_3')
redis.call('SADD', 'comptag1_3_1_3_3_measurement_keys', 'meas1_3_1_3_3_1', 'meas1_3_1_3_3_2', 'meas1_3_1_3_3_3')
redis.call('SADD', 'comptag1_3_2_1_1_measurement_keys', 'meas1_3_2_1_1_1', 'meas1_3_2_1_1_2', 'meas1_3_2_1_1_3')
redis.call('SADD', 'comptag1_3_2_1_2_measurement_keys', 'meas1_3_2_1_2_1', 'meas1_3_2_1_2_2', 'meas1_3_2_1_2_3')
redis.call('SADD', 'comptag1_3_2_1_3_measurement_keys', 'meas1_3_2_1_3_1', 'meas1_3_2_1_3_2', 'meas1_3_2_1_3_3')
redis.call('SADD', 'comptag1_3_2_2_1_measurement_keys', 'meas1_3_2_2_1_1', 'meas1_3_2_2_1_2', 'meas1_3_2_2_1_3')
redis.call('SADD', 'comptag1_3_2_2_2_measurement_keys', 'meas1_3_2_2_2_1', 'meas1_3_2_2_2_2', 'meas1_3_2_2_2_3')
redis.call('SADD', 'comptag1_3_2_2_3_measurement_keys', 'meas1_3_2_2_3_1', 'meas1_3_2_2_3_2', 'meas1_3_2_2_3_3')
redis.call('SADD', 'comptag1_3_2_3_1_measurement_keys', 'meas1_3_2_3_1_1', 'meas1_3_2_3_1_2', 'meas1_3_2_3_1_3')
redis.call('SADD', 'comptag1_3_2_3_2_measurement_keys', 'meas1_3_2_3_2_1', 'meas1_3_2_3_2_2', 'meas1_3_2_3_2_3')
redis.call('SADD', 'comptag1_3_2_3_3_measurement_keys', 'meas1_3_2_3_3_1', 'meas1_3_2_3_3_2', 'meas1_3_2_3_3_3')
redis.call('SADD', 'comptag1_3_3_1_1_measurement_keys', 'meas1_3_3_1_1_1', 'meas1_3_3_1_1_2', 'meas1_3_3_1_1_3')
redis.call('SADD', 'comptag1_3_3_1_2_measurement_keys', 'meas1_3_3_1_2_1', 'meas1_3_3_1_2_2', 'meas1_3_3_1_2_3')
redis.call('SADD', 'comptag1_3_3_1_3_measurement_keys', 'meas1_3_3_1_3_1', 'meas1_3_3_1_3_2', 'meas1_3_3_1_3_3')
redis.call('SADD', 'comptag1_3_3_2_1_measurement_keys', 'meas1_3_3_2_1_1', 'meas1_3_3_2_1_2', 'meas1_3_3_2_1_3')
redis.call('SADD', 'comptag1_3_3_2_2_measurement_keys', 'meas1_3_3_2_2_1', 'meas1_3_3_2_2_2', 'meas1_3_3_2_2_3')
redis.call('SADD', 'comptag1_3_3_2_3_measurement_keys', 'meas1_3_3_2_3_1', 'meas1_3_3_2_3_2', 'meas1_3_3_2_3_3')
redis.call('SADD', 'comptag1_3_3_3_1_measurement_keys', 'meas1_3_3_3_1_1', 'meas1_3_3_3_1_2', 'meas1_3_3_3_1_3')
redis.call('SADD', 'comptag1_3_3_3_2_measurement_keys', 'meas1_3_3_3_2_1', 'meas1_3_3_3_2_2', 'meas1_3_3_3_2_3')
redis.call('SADD', 'comptag1_3_3_3_3_measurement_keys', 'meas1_3_3_3_3_1', 'meas1_3_3_3_3_2', 'meas1_3_3_3_3_3')
redis.call('SADD', 'comptag2_1_1_1_1_measurement_keys', 'meas2_1_1_1_1_1', 'meas2_1_1_1_1_2', 'meas2_1_1_1_1_3')
redis.call('SADD', 'comptag2_1_1_1_2_measurement_keys', 'meas2_1_1_1_2_1', 'meas2_1_1_1_2_2', 'meas2_1_1_1_2_3')
redis.call('SADD', 'comptag2_1_1_1_3_measurement_keys', 'meas2_1_1_1_3_1', 'meas2_1_1_1_3_2', 'meas2_1_1_1_3_3')
redis.call('SADD', 'comptag2_1_1_2_1_measurement_keys', 'meas2_1_1_2_1_1', 'meas2_1_1_2_1_2', 'meas2_1_1_2_1_3')
redis.call('SADD', 'comptag2_1_1_2_2_measurement_keys', 'meas2_1_1_2_2_1', 'meas2_1_1_2_2_2', 'meas2_1_1_2_2_3')
redis.call('SADD', 'comptag2_1_1_2_3_measurement_keys', 'meas2_1_1_2_3_1', 'meas2_1_1_2_3_2', 'meas2_1_1_2_3_3')
redis.call('SADD', 'comptag2_1_1_3_1_measurement_keys', 'meas2_1_1_3_1_1', 'meas2_1_1_3_1_2', 'meas2_1_1_3_1_3')
redis.call('SADD', 'comptag2_1_1_3_2_measurement_keys', 'meas2_1_1_3_2_1', 'meas2_1_1_3_2_2', 'meas2_1_1_3_2_3')
redis.call('SADD', 'comptag2_1_1_3_3_measurement_keys', 'meas2_1_1_3_3_1', 'meas2_1_1_3_3_2', 'meas2_1_1_3_3_3')
redis.call('SADD', 'comptag2_1_2_1_1_measurement_keys', 'meas2_1_2_1_1_1', 'meas2_1_2_1_1_2', 'meas2_1_2_1_1_3')
redis.call('SADD', 'comptag2_1_2_1_2_measurement_keys', 'meas2_1_2_1_2_1', 'meas2_1_2_1_2_2', 'meas2_1_2_1_2_3')
redis.call('SADD', 'comptag2_1_2_1_3_measurement_keys', 'meas2_1_2_1_3_1', 'meas2_1_2_1_3_2', 'meas2_1_2_1_3_3')
redis.call('SADD', 'comptag2_1_2_2_1_measurement_keys', 'meas2_1_2_2_1_1', 'meas2_1_2_2_1_2', 'meas2_1_2_2_1_3')
redis.call('SADD', 'comptag2_1_2_2_2_measurement_keys', 'meas2_1_2_2_2_1', 'meas2_1_2_2_2_2', 'meas2_1_2_2_2_3')
redis.call('SADD', 'comptag2_1_2_2_3_measurement_keys', 'meas2_1_2_2_3_1', 'meas2_1_2_2_3_2', 'meas2_1_2_2_3_3')
redis.call('SADD', 'comptag2_1_2_3_1_measurement_keys', 'meas2_1_2_3_1_1', 'meas2_1_2_3_1_2', 'meas2_1_2_3_1_3')
redis.call('SADD', 'comptag2_1_2_3_2_measurement_keys', 'meas2_1_2_3_2_1', 'meas2_1_2_3_2_2', 'meas2_1_2_3_2_3')
redis.call('SADD', 'comptag2_1_2_3_3_measurement_keys', 'meas2_1_2_3_3_1', 'meas2_1_2_3_3_2', 'meas2_1_2_3_3_3')
redis.call('SADD', 'comptag2_1_3_1_1_measurement_keys', 'meas2_1_3_1_1_1', 'meas2_1_3_1_1_2', 'meas2_1_3_1_1_3')
redis.call('SADD', 'comptag2_1_3_1_2_measurement_keys', 'meas2_1_3_1_2_1', 'meas2_1_3_1_2_2', 'meas2_1_3_1_2_3')
redis.call('SADD', 'comptag2_1_3_1_3_measurement_keys', 'meas2_1_3_1_3_1', 'meas2_1_3_1_3_2', 'meas2_1_3_1_3_3')
redis.call('SADD', 'comptag2_1_3_2_1_measurement_keys', 'meas2_1_3_2_1_1', 'meas2_1_3_2_1_2', 'meas2_1_3_2_1_3')
redis.call('SADD', 'comptag2_1_3_2_2_measurement_keys', 'meas2_1_3_2_2_1', 'meas2_1_3_2_2_2', 'meas2_1_3_2_2_3')
redis.call('SADD', 'comptag2_1_3_2_3_measurement_keys', 'meas2_1_3_2_3_1', 'meas2_1_3_2_3_2', 'meas2_1_3_2_3_3')
redis.call('SADD', 'comptag2_1_3_3_1_measurement_keys', 'meas2_1_3_3_1_1', 'meas2_1_3_3_1_2', 'meas2_1_3_3_1_3')
redis.call('SADD', 'comptag2_1_3_3_2_measurement_keys', 'meas2_1_3_3_2_1', 'meas2_1_3_3_2_2', 'meas2_1_3_3_2_3')
redis.call('SADD', 'comptag2_1_3_3_3_measurement_keys', 'meas2_1_3_3_3_1', 'meas2_1_3_3_3_2', 'meas2_1_3_3_3_3')
redis.call('SADD', 'comptag2_2_1_1_1_measurement_keys', 'meas2_2_1_1_1_1', 'meas2_2_1_1_1_2', 'meas2_2_1_1_1_3')
redis.call('SADD', 'comptag2_2_1_1_2_measurement_keys', 'meas2_2_1_1_2_1', 'meas2_2_1_1_2_2', 'meas2_2_1_1_2_3')
redis.call('SADD', 'comptag2_2_1_1_3_measurement_keys', 'meas2_2_1_1_3_1', 'meas2_2_1_1_3_2', 'meas2_2_1_1_3_3')
redis.call('SADD', 'comptag2_2_1_2_1_measurement_keys', 'meas2_2_1_2_1_1', 'meas2_2_1_2_1_2', 'meas2_2_1_2_1_3')
redis.call('SADD', 'comptag2_2_1_2_2_measurement_keys', 'meas2_2_1_2_2_1', 'meas2_2_1_2_2_2', 'meas2_2_1_2_2_3')
redis.call('SADD', 'comptag2_2_1_2_3_measurement_keys', 'meas2_2_1_2_3_1', 'meas2_2_1_2_3_2', 'meas2_2_1_2_3_3')
redis.call('SADD', 'comptag2_2_1_3_1_measurement_keys', 'meas2_2_1_3_1_1', 'meas2_2_1_3_1_2', 'meas2_2_1_3_1_3')
redis.call('SADD', 'comptag2_2_1_3_2_measurement_keys', 'meas2_2_1_3_2_1', 'meas2_2_1_3_2_2', 'meas2_2_1_3_2_3')
redis.call('SADD', 'comptag2_2_1_3_3_measurement_keys', 'meas2_2_1_3_3_1', 'meas2_2_1_3_3_2', 'meas2_2_1_3_3_3')
redis.call('SADD', 'comptag2_2_2_1_1_measurement_keys', 'meas2_2_2_1_1_1', 'meas2_2_2_1_1_2', 'meas2_2_2_1_1_3')
redis.call('SADD', 'comptag2_2_2_1_2_measurement_keys', 'meas2_2_2_1_2_1', 'meas2_2_2_1_2_2', 'meas2_2_2_1_2_3')
redis.call('SADD', 'comptag2_2_2_1_3_measurement_keys', 'meas2_2_2_1_3_1', 'meas2_2_2_1_3_2', 'meas2_2_2_1_3_3')
redis.call('SADD', 'comptag2_2_2_2_1_measurement_keys', 'meas2_2_2_2_1_1', 'meas2_2_2_2_1_2', 'meas2_2_2_2_1_3')
redis.call('SADD', 'comptag2_2_2_2_2_measurement_keys', 'meas2_2_2_2_2_1', 'meas2_2_2_2_2_2', 'meas2_2_2_2_2_3')
redis.call('SADD', 'comptag2_2_2_2_3_measurement_keys', 'meas2_2_2_2_3_1', 'meas2_2_2_2_3_2', 'meas2_2_2_2_3_3')
redis.call('SADD', 'comptag2_2_2_3_1_measurement_keys', 'meas2_2_2_3_1_1', 'meas2_2_2_3_1_2', 'meas2_2_2_3_1_3')
redis.call('SADD', 'comptag2_2_2_3_2_measurement_keys', 'meas2_2_2_3_2_1', 'meas2_2_2_3_2_2', 'meas2_2_2_3_2_3')
redis.call('SADD', 'comptag2_2_2_3_3_measurement_keys', 'meas2_2_2_3_3_1', 'meas2_2_2_3_3_2', 'meas2_2_2_3_3_3')
redis.call('SADD', 'comptag2_2_3_1_1_measurement_keys', 'meas2_2_3_1_1_1', 'meas2_2_3_1_1_2', 'meas2_2_3_1_1_3')
redis.call('SADD', 'comptag2_2_3_1_2_measurement_keys', 'meas2_2_3_1_2_1', 'meas2_2_3_1_2_2', 'meas2_2_3_1_2_3')
redis.call('SADD', 'comptag2_2_3_1_3_measurement_keys', 'meas2_2_3_1_3_1', 'meas2_2_3_1_3_2', 'meas2_2_3_1_3_3')
redis.call('SADD', 'comptag2_2_3_2_1_measurement_keys', 'meas2_2_3_2_1_1', 'meas2_2_3_2_1_2', 'meas2_2_3_2_1_3')
redis.call('SADD', 'comptag2_2_3_2_2_measurement_keys', 'meas2_2_3_2_2_1', 'meas2_2_3_2_2_2', 'meas2_2_3_2_2_3')
redis.call('SADD', 'comptag2_2_3_2_3_measurement_keys', 'meas2_2_3_2_3_1', 'meas2_2_3_2_3_2', 'meas2_2_3_2_3_3')
redis.call('SADD', 'comptag2_2_3_3_1_measurement_keys', 'meas2_2_3_3_1_1', 'meas2_2_3_3_1_2', 'meas2_2_3_3_1_3')
redis.call('SADD', 'comptag2_2_3_3_2_measurement_keys', 'meas2_2_3_3_2_1', 'meas2_2_3_3_2_2', 'meas2_2_3_3_2_3')
redis.call('SADD', 'comptag2_2_3_3_3_measurement_keys', 'meas2_2_3_3_3_1', 'meas2_2_3_3_3_2', 'meas2_2_3_3_3_3')
redis.call('SADD', 'comptag2_3_1_1_1_measurement_keys', 'meas2_3_1_1_1_1', 'meas2_3_1_1_1_2', 'meas2_3_1_1_1_3')
redis.call('SADD', 'comptag2_3_1_1_2_measurement_keys', 'meas2_3_1_1_2_1', 'meas2_3_1_1_2_2', 'meas2_3_1_1_2_3')
redis.call('SADD', 'comptag2_3_1_1_3_measurement_keys', 'meas2_3_1_1_3_1', 'meas2_3_1_1_3_2', 'meas2_3_1_1_3_3')
redis.call('SADD', 'comptag2_3_1_2_1_measurement_keys', 'meas2_3_1_2_1_1', 'meas2_3_1_2_1_2', 'meas2_3_1_2_1_3')
redis.call('SADD', 'comptag2_3_1_2_2_measurement_keys', 'meas2_3_1_2_2_1', 'meas2_3_1_2_2_2', 'meas2_3_1_2_2_3')
redis.call('SADD', 'comptag2_3_1_2_3_measurement_keys', 'meas2_3_1_2_3_1', 'meas2_3_1_2_3_2', 'meas2_3_1_2_3_3')
redis.call('SADD', 'comptag2_3_1_3_1_measurement_keys', 'meas2_3_1_3_1_1', 'meas2_3_1_3_1_2', 'meas2_3_1_3_1_3')
redis.call('SADD', 'comptag2_3_1_3_2_measurement_keys', 'meas2_3_1_3_2_1', 'meas2_3_1_3_2_2', 'meas2_3_1_3_2_3')
redis.call('SADD', 'comptag2_3_1_3_3_measurement_keys', 'meas2_3_1_3_3_1', 'meas2_3_1_3_3_2', 'meas2_3_1_3_3_3')
redis.call('SADD', 'comptag2_3_2_1_1_measurement_keys', 'meas2_3_2_1_1_1', 'meas2_3_2_1_1_2', 'meas2_3_2_1_1_3')
redis.call('SADD', 'comptag2_3_2_1_2_measurement_keys', 'meas2_3_2_1_2_1', 'meas2_3_2_1_2_2', 'meas2_3_2_1_2_3')
redis.call('SADD', 'comptag2_3_2_1_3_measurement_keys', 'meas2_3_2_1_3_1', 'meas2_3_2_1_3_2', 'meas2_3_2_1_3_3')
redis.call('SADD', 'comptag2_3_2_2_1_measurement_keys', 'meas2_3_2_2_1_1', 'meas2_3_2_2_1_2', 'meas2_3_2_2_1_3')
redis.call('SADD', 'comptag2_3_2_2_2_measurement_keys', 'meas2_3_2_2_2_1', 'meas2_3_2_2_2_2', 'meas2_3_2_2_2_3')
redis.call('SADD', 'comptag2_3_2_2_3_measurement_keys', 'meas2_3_2_2_3_1', 'meas2_3_2_2_3_2', 'meas2_3_2_2_3_3')
redis.call('SADD', 'comptag2_3_2_3_1_measurement_keys', 'meas2_3_2_3_1_1', 'meas2_3_2_3_1_2', 'meas2_3_2_3_1_3')
redis.call('SADD', 'comptag2_3_2_3_2_measurement_keys', 'meas2_3_2_3_2_1', 'meas2_3_2_3_2_2', 'meas2_3_2_3_2_3')
redis.call('SADD', 'comptag2_3_2_3_3_measurement_keys', 'meas2_3_2_3_3_1', 'meas2_3_2_3_3_2', 'meas2_3_2_3_3_3')
redis.call('SADD', 'comptag2_3_3_1_1_measurement_keys', 'meas2_3_3_1_1_1', 'meas2_3_3_1_1_2', 'meas2_3_3_1_1_3')
redis.call('SADD', 'comptag2_3_3_1_2_measurement_keys', 'meas2_3_3_1_2_1', 'meas2_3_3_1_2_2', 'meas2_3_3_1_2_3')
redis.call('SADD', 'comptag2_3_3_1_3_measurement_keys', 'meas2_3_3_1_3_1', 'meas2_3_3_1_3_2', 'meas2_3_3_1_3_3')
redis.call('SADD', 'comptag2_3_3_2_1_measurement_keys', 'meas2_3_3_2_1_1', 'meas2_3_3_2_1_2', 'meas2_3_3_2_1_3')
redis.call('SADD', 'comptag2_3_3_2_2_measurement_keys', 'meas2_3_3_2_2_1', 'meas2_3_3_2_2_2', 'meas2_3_3_2_2_3')
redis.call('SADD', 'comptag2_3_3_2_3_measurement_keys', 'meas2_3_3_2_3_1', 'meas2_3_3_2_3_2', 'meas2_3_3_2_3_3')
redis.call('SADD', 'comptag2_3_3_3_1_measurement_keys', 'meas2_3_3_3_1_1', 'meas2_3_3_3_1_2', 'meas2_3_3_3_1_3')
redis.call('SADD', 'comptag2_3_3_3_2_measurement_keys', 'meas2_3_3_3_2_1', 'meas2_3_3_3_2_2', 'meas2_3_3_3_2_3')
redis.call('SADD', 'comptag2_3_3_3_3_measurement_keys', 'meas2_3_3_3_3_1', 'meas2_3_3_3_3_2', 'meas2_3_3_3_3_3')
redis.call('SADD', 'comptag3_1_1_1_1_measurement_keys', 'meas3_1_1_1_1_1', 'meas3_1_1_1_1_2', 'meas3_1_1_1_1_3')
redis.call('SADD', 'comptag3_1_1_1_2_measurement_keys', 'meas3_1_1_1_2_1', 'meas3_1_1_1_2_2', 'meas3_1_1_1_2_3')
redis.call('SADD', 'comptag3_1_1_1_3_measurement_keys', 'meas3_1_1_1_3_1', 'meas3_1_1_1_3_2', 'meas3_1_1_1_3_3')
redis.call('SADD', 'comptag3_1_1_2_1_measurement_keys', 'meas3_1_1_2_1_1', 'meas3_1_1_2_1_2', 'meas3_1_1_2_1_3')
redis.call('SADD', 'comptag3_1_1_2_2_measurement_keys', 'meas3_1_1_2_2_1', 'meas3_1_1_2_2_2', 'meas3_1_1_2_2_3')
redis.call('SADD', 'comptag3_1_1_2_3_measurement_keys', 'meas3_1_1_2_3_1', 'meas3_1_1_2_3_2', 'meas3_1_1_2_3_3')
redis.call('SADD', 'comptag3_1_1_3_1_measurement_keys', 'meas3_1_1_3_1_1', 'meas3_1_1_3_1_2', 'meas3_1_1_3_1_3')
redis.call('SADD', 'comptag3_1_1_3_2_measurement_keys', 'meas3_1_1_3_2_1', 'meas3_1_1_3_2_2', 'meas3_1_1_3_2_3')
redis.call('SADD', 'comptag3_1_1_3_3_measurement_keys', 'meas3_1_1_3_3_1', 'meas3_1_1_3_3_2', 'meas3_1_1_3_3_3')
redis.call('SADD', 'comptag3_1_3_1_1_measurement_keys', 'meas3_1_3_1_1_1', 'meas3_1_3_1_1_2', 'meas3_1_3_1_1_3')
redis.call('SADD', 'comptag3_1_3_1_2_measurement_keys', 'meas3_1_3_1_2_1', 'meas3_1_3_1_2_2', 'meas3_1_3_1_2_3')
redis.call('SADD', 'comptag3_1_3_1_3_measurement_keys', 'meas3_1_3_1_3_1', 'meas3_1_3_1_3_2', 'meas3_1_3_1_3_3')
redis.call('SADD', 'comptag3_1_3_2_1_measurement_keys', 'meas3_1_3_2_1_1', 'meas3_1_3_2_1_2', 'meas3_1_3_2_1_3')
redis.call('SADD', 'comptag3_1_3_2_2_measurement_keys', 'meas3_1_3_2_2_1', 'meas3_1_3_2_2_2', 'meas3_1_3_2_2_3')
redis.call('SADD', 'comptag3_1_3_2_3_measurement_keys', 'meas3_1_3_2_3_1', 'meas3_1_3_2_3_2', 'meas3_1_3_2_3_3')
redis.call('SADD', 'comptag3_1_3_3_1_measurement_keys', 'meas3_1_3_3_1_1', 'meas3_1_3_3_1_2', 'meas3_1_3_3_1_3')
redis.call('SADD', 'comptag3_1_3_3_2_measurement_keys', 'meas3_1_3_3_2_1', 'meas3_1_3_3_2_2', 'meas3_1_3_3_2_3')
redis.call('SADD', 'comptag3_1_3_3_3_measurement_keys', 'meas3_1_3_3_3_1', 'meas3_1_3_3_3_2', 'meas3_1_3_3_3_3')
redis.call('SADD', 'comptag3_2_1_1_1_measurement_keys', 'meas3_2_1_1_1_1', 'meas3_2_1_1_1_2', 'meas3_2_1_1_1_3')
redis.call('SADD', 'comptag3_2_1_1_2_measurement_keys', 'meas3_2_1_1_2_1', 'meas3_2_1_1_2_2', 'meas3_2_1_1_2_3')
redis.call('SADD', 'comptag3_2_1_1_3_measurement_keys', 'meas3_2_1_1_3_1', 'meas3_2_1_1_3_2', 'meas3_2_1_1_3_3')
redis.call('SADD', 'comptag3_2_1_2_1_measurement_keys', 'meas3_2_1_2_1_1', 'meas3_2_1_2_1_2', 'meas3_2_1_2_1_3')
redis.call('SADD', 'comptag3_2_1_2_2_measurement_keys', 'meas3_2_1_2_2_1', 'meas3_2_1_2_2_2', 'meas3_2_1_2_2_3')
redis.call('SADD', 'comptag3_2_1_2_3_measurement_keys', 'meas3_2_1_2_3_1', 'meas3_2_1_2_3_2', 'meas3_2_1_2_3_3')
redis.call('SADD', 'comptag3_2_1_3_1_measurement_keys', 'meas3_2_1_3_1_1', 'meas3_2_1_3_1_2', 'meas3_2_1_3_1_3')
redis.call('SADD', 'comptag3_2_1_3_2_measurement_keys', 'meas3_2_1_3_2_1', 'meas3_2_1_3_2_2', 'meas3_2_1_3_2_3')
redis.call('SADD', 'comptag3_2_1_3_3_measurement_keys', 'meas3_2_1_3_3_1', 'meas3_2_1_3_3_2', 'meas3_2_1_3_3_3')
redis.call('SADD', 'comptag3_2_2_1_1_measurement_keys', 'meas3_2_2_1_1_1', 'meas3_2_2_1_1_2', 'meas3_2_2_1_1_3')
redis.call('SADD', 'comptag3_2_2_1_2_measurement_keys', 'meas3_2_2_1_2_1', 'meas3_2_2_1_2_2', 'meas3_2_2_1_2_3')
redis.call('SADD', 'comptag3_2_2_1_3_measurement_keys', 'meas3_2_2_1_3_1', 'meas3_2_2_1_3_2', 'meas3_2_2_1_3_3')
redis.call('SADD', 'comptag3_2_2_2_1_measurement_keys', 'meas3_2_2_2_1_1', 'meas3_2_2_2_1_2', 'meas3_2_2_2_1_3')
redis.call('SADD', 'comptag3_2_2_2_2_measurement_keys', 'meas3_2_2_2_2_1', 'meas3_2_2_2_2_2', 'meas3_2_2_2_2_3')
redis.call('SADD', 'comptag3_2_2_2_3_measurement_keys', 'meas3_2_2_2_3_1', 'meas3_2_2_2_3_2', 'meas3_2_2_2_3_3')
redis.call('SADD', 'comptag3_2_2_3_1_measurement_keys', 'meas3_2_2_3_1_1', 'meas3_2_2_3_1_2', 'meas3_2_2_3_1_3')
redis.call('SADD', 'comptag3_2_2_3_2_measurement_keys', 'meas3_2_2_3_2_1', 'meas3_2_2_3_2_2', 'meas3_2_2_3_2_3')
redis.call('SADD', 'comptag3_2_2_3_3_measurement_keys', 'meas3_2_2_3_3_1', 'meas3_2_2_3_3_2', 'meas3_2_2_3_3_3')
redis.call('SADD', 'comptag3_2_3_1_1_measurement_keys', 'meas3_2_3_1_1_1', 'meas3_2_3_1_1_2', 'meas3_2_3_1_1_3')
redis.call('SADD', 'comptag3_2_3_1_2_measurement_keys', 'meas3_2_3_1_2_1', 'meas3_2_3_1_2_2', 'meas3_2_3_1_2_3')
redis.call('SADD', 'comptag3_2_3_1_3_measurement_keys', 'meas3_2_3_1_3_1', 'meas3_2_3_1_3_2', 'meas3_2_3_1_3_3')
redis.call('SADD', 'comptag3_2_3_2_1_measurement_keys', 'meas3_2_3_2_1_1', 'meas3_2_3_2_1_2', 'meas3_2_3_2_1_3')
redis.call('SADD', 'comptag3_2_3_2_2_measurement_keys', 'meas3_2_3_2_2_1', 'meas3_2_3_2_2_2', 'meas3_2_3_2_2_3')
redis.call('SADD', 'comptag3_2_3_2_3_measurement_keys', 'meas3_2_3_2_3_1', 'meas3_2_3_2_3_2', 'meas3_2_3_2_3_3')
redis.call('SADD', 'comptag3_2_3_3_1_measurement_keys', 'meas3_2_3_3_1_1', 'meas3_2_3_3_1_2', 'meas3_2_3_3_1_3')
redis.call('SADD', 'comptag3_2_3_3_2_measurement_keys', 'meas3_2_3_3_2_1', 'meas3_2_3_3_2_2', 'meas3_2_3_3_2_3')
redis.call('SADD', 'comptag3_2_3_3_3_measurement_keys', 'meas3_2_3_3_3_1', 'meas3_2_3_3_3_2', 'meas3_2_3_3_3_3')
redis.call('SADD', 'comptag3_3_1_1_1_measurement_keys', 'meas3_3_1_1_1_1', 'meas3_3_1_1_1_2', 'meas3_3_1_1_1_3')
redis.call('SADD', 'comptag3_3_1_1_2_measurement_keys', 'meas3_3_1_1_2_1', 'meas3_3_1_1_2_2', 'meas3_3_1_1_2_3')
redis.call('SADD', 'comptag3_3_1_1_3_measurement_keys', 'meas3_3_1_1_3_1', 'meas3_3_1_1_3_2', 'meas3_3_1_1_3_3')
redis.call('SADD', 'comptag3_3_1_2_1_measurement_keys', 'meas3_3_1_2_1_1', 'meas3_3_1_2_1_2', 'meas3_3_1_2_1_3')
redis.call('SADD', 'comptag3_3_1_2_2_measurement_keys', 'meas3_3_1_2_2_1', 'meas3_3_1_2_2_2', 'meas3_3_1_2_2_3')
redis.call('SADD', 'comptag3_3_1_2_3_measurement_keys', 'meas3_3_1_2_3_1', 'meas3_3_1_2_3_2', 'meas3_3_1_2_3_3')
redis.call('SADD', 'comptag3_3_1_3_1_measurement_keys', 'meas3_3_1_3_1_1', 'meas3_3_1_3_1_2', 'meas3_3_1_3_1_3')
redis.call('SADD', 'comptag3_3_1_3_2_measurement_keys', 'meas3_3_1_3_2_1', 'meas3_3_1_3_2_2', 'meas3_3_1_3_2_3')
redis.call('SADD', 'comptag3_3_1_3_3_measurement_keys', 'meas3_3_1_3_3_1', 'meas3_3_1_3_3_2', 'meas3_3_1_3_3_3')
redis.call('SADD', 'comptag3_3_2_1_1_measurement_keys', 'meas3_3_2_1_1_1', 'meas3_3_2_1_1_2', 'meas3_3_2_1_1_3')
redis.call('SADD', 'comptag3_3_2_1_2_measurement_keys', 'meas3_3_2_1_2_1', 'meas3_3_2_1_2_2', 'meas3_3_2_1_2_3')
redis.call('SADD', 'comptag3_3_2_1_3_measurement_keys', 'meas3_3_2_1_3_1', 'meas3_3_2_1_3_2', 'meas3_3_2_1_3_3')
redis.call('SADD', 'comptag3_3_2_2_1_measurement_keys', 'meas3_3_2_2_1_1', 'meas3_3_2_2_1_2', 'meas3_3_2_2_1_3')
redis.call('SADD', 'comptag3_3_2_2_2_measurement_keys', 'meas3_3_2_2_2_1', 'meas3_3_2_2_2_2', 'meas3_3_2_2_2_3')
redis.call('SADD', 'comptag3_3_2_2_3_measurement_keys', 'meas3_3_2_2_3_1', 'meas3_3_2_2_3_2', 'meas3_3_2_2_3_3')
redis.call('SADD', 'comptag3_3_2_3_1_measurement_keys', 'meas3_3_2_3_1_1', 'meas3_3_2_3_1_2', 'meas3_3_2_3_1_3')
redis.call('SADD', 'comptag3_3_2_3_2_measurement_keys', 'meas3_3_2_3_2_1', 'meas3_3_2_3_2_2', 'meas3_3_2_3_2_3')
redis.call('SADD', 'comptag3_3_2_3_3_measurement_keys', 'meas3_3_2_3_3_1', 'meas3_3_2_3_3_2', 'meas3_3_2_3_3_3')
redis.call('SADD', 'comptag3_3_3_1_1_measurement_keys', 'meas3_3_3_1_1_1', 'meas3_3_3_1_1_2', 'meas3_3_3_1_1_3')
redis.call('SADD', 'comptag3_3_3_1_2_measurement_keys', 'meas3_3_3_1_2_1', 'meas3_3_3_1_2_2', 'meas3_3_3_1_2_3')
redis.call('SADD', 'comptag3_3_3_1_3_measurement_keys', 'meas3_3_3_1_3_1', 'meas3_3_3_1_3_2', 'meas3_3_3_1_3_3')
redis.call('SADD', 'comptag3_3_3_2_1_measurement_keys', 'meas3_3_3_2_1_1', 'meas3_3_3_2_1_2', 'meas3_3_3_2_1_3')
redis.call('SADD', 'comptag3_3_3_2_2_measurement_keys', 'meas3_3_3_2_2_1', 'meas3_3_3_2_2_2', 'meas3_3_3_2_2_3')
redis.call('SADD', 'comptag3_3_3_2_3_measurement_keys', 'meas3_3_3_2_3_1', 'meas3_3_3_2_3_2', 'meas3_3_3_2_3_3')
redis.call('SADD', 'comptag3_3_3_3_1_measurement_keys', 'meas3_3_3_3_1_1', 'meas3_3_3_3_1_2', 'meas3_3_3_3_1_3')
redis.call('SADD', 'comptag3_3_3_3_2_measurement_keys', 'meas3_3_3_3_2_1', 'meas3_3_3_3_2_2', 'meas3_3_3_3_2_3')
redis.call('SADD', 'comptag3_3_3_3_3_measurement_keys', 'meas3_3_3_3_3_1', 'meas3_3_3_3_3_2', 'meas3_3_3_3_3_3')
local dict_key = 'search_suggestions_dict'
redis.call('FT.SUGADD', dict_key, 'grid1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_2.station1_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_2.station1_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_2.station1_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_3.station1_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_3.station1_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_3.station1_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_1.station2_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_1.station2_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_1.station2_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_2.station2_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_2.station2_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_2.station2_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_3.station2_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_3.station2_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone2_3.station2_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_1.station3_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_1.station3_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_1.station3_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_2.station3_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_2.station3_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_2.station3_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_3.station3_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_3.station3_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone3_3.station3_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_1.station1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_1.station1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_1.station1_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_2.station1_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_2.station1_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_2.station1_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_3.station1_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_3.station1_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone1_3.station1_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_1.station2_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_1.station2_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_1.station2_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_2.station2_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_2.station2_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_2.station2_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_3.station2_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_3.station2_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone2_3.station2_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_1.station3_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_1.station3_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_1.station3_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_2.station3_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_2.station3_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_2.station3_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_3.station3_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_3.station3_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid2.zone3_3.station3_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_1.station1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_1.station1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_1.station1_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_2.station1_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_2.station1_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_2.station1_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_3.station1_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_3.station1_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone1_3.station1_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_1.station2_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_1.station2_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_1.station2_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_2.station2_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_2.station2_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_2.station2_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_3.station2_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_3.station2_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone2_3.station2_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_1.station3_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_1.station3_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_1.station3_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_2.station3_2_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_2.station3_2_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_2.station3_2_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_3.station3_3_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_3.station3_3_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid3.zone3_3.station3_3_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_1.ns1_1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_1.ns1_1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_1.ns1_1_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_2.ns1_1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_2.ns1_1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_2.ns1_1_1_3', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_3.ns1_1_1_1', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_3.ns1_1_1_2', 1)
redis.call('FT.SUGADD', dict_key, 'grid1.zone1_1.station1_1_3.ns1_1_1_3', 1)
return 'OK'
```shell
deploy/redis-test-data/measurments-recommend/measurement_injection.go
```
在Redis CLI 中导入命令
运行脚本向 Reids 导入数据
1. 使用 `EVAL "lua脚本" 0`即可成功导入数据
2. 使用 `SCRIPT LOAD "lua脚本"`加载脚本,然后使用 `EVAL SHA1值 0` 命令执行上一步存储命令返回的哈希值即可
```shell
go run deploy/redis-test-data/measurments-recommend/measurement_injection.go
```
### 3\. 启动 ModelRT 服务

View File

@ -0,0 +1,332 @@
// Package main implement redis test data injection
package main
import (
"context"
"fmt"
"log"
"github.com/RediSearch/redisearch-go/v2/redisearch"
"github.com/redis/go-redis/v9"
)
var ac *redisearch.Autocompleter
// InitAutocompleterWithPool define func of initialize the Autocompleter with redigo pool
func init() {
// ac = redisearch.NewAutocompleterFromPool(pool, redisSearchDictName)
ac = redisearch.NewAutocompleter("localhost:6379", redisSearchDictName)
}
const (
gridKeysSet = "grid_keys"
zoneKeysSet = "zone_keys"
stationKeysSet = "station_keys"
componentNSPathKeysSet = "component_nspath_keys"
componentTagKeysSet = "component_tag_keys"
configKeysSet = "config_keys"
measurementTagKeysSet = "measurement_tag_keys"
// Grid -> Zone (e.g., grid1_zones_keys)
gridZoneSetKeyFormat = "grid%d_zones_keys"
// Zone -> Station (e.g., zone1_1_stations_keys)
zoneStationSetKeyFormat = "zone%d_%d_stations_keys"
// Station -> NSPath (e.g., station1_1_1_components_nspath_keys)
stationNSPathKeyFormat = "station%d_%d_%d_components_nspath_keys"
// NSPath -> CompTag (e.g., ns1_1_1_1_components_tag_keys)
nsPathCompTagKeyFormat = "ns%d_%d_%d_%d_components_tag_keys"
// CompTag -> Measurement (e.g., comptag1_1_1_1_1_measurement_keys)
compTagMeasKeyFormat = "comptag%d_%d_%d_%d_%d_measurement_keys"
)
const (
redisSearchDictName = "search_suggestions_dict"
defaultScore = 1.0
)
var configMetrics = []any{
"component", "base_extend", "rated", "setup", "model",
"stable", "bay", "craft", "integrity", "behavior",
}
// BulkInsertAllHierarchySets 是主入口函数,用于协调所有 Set 插入操作。
func BulkInsertAllHierarchySets(ctx context.Context, rdb *redis.Client) error {
log.Println("starting bulk insertion of Redis hierarchy sets")
if err := insertStaticSets(ctx, rdb); err != nil {
return fmt.Errorf("static set insertion failed: %w", err)
}
if err := insertDynamicHierarchy(ctx, rdb); err != nil {
return fmt.Errorf("dynamic hierarchy insertion failed: %w", err)
}
if err := insertAllHierarchySuggestions(ac); err != nil {
return fmt.Errorf("dynamic hierarchy insertion failed: %w", err)
}
log.Println("bulk insertion complete.")
return nil
}
func insertStaticSets(ctx context.Context, rdb *redis.Client) error {
// grid_keys
if err := rdb.SAdd(ctx, gridKeysSet, "grid1", "grid2", "grid3").Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", gridKeysSet, err)
}
// zone_keys (3x3 = 9 members)
zoneMembers := make([]any, 0, 9)
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
zoneMembers = append(zoneMembers, fmt.Sprintf("zone%d_%d", i, j))
}
}
if err := rdb.SAdd(ctx, zoneKeysSet, zoneMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", zoneKeysSet, err)
}
// config_keys
if err := rdb.SAdd(ctx, configKeysSet, configMetrics...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", configKeysSet, err)
}
log.Println("Static sets (grid_keys, zone_keys, config_keys) inserted.")
return nil
}
func insertDynamicHierarchy(ctx context.Context, rdb *redis.Client) error {
allStationKeys := make([]any, 0, 27)
allNSPathKeys := make([]any, 0, 81)
allCompTagKeys := make([]any, 0, 243)
allMeasurementTagKeys := make([]any, 0, 729)
// S: Grid Prefix (1-3)
for S := 1; S <= 3; S++ {
// Grid-Zone Set Key: gridS_zones_keys
gridZoneKey := fmt.Sprintf(gridZoneSetKeyFormat, S)
gridZoneMembers := make([]any, 0, 3)
// Y: Zone Index (1-3)
for Y := 1; Y <= 3; Y++ {
zoneID := fmt.Sprintf("%d_%d", S, Y)
zoneMember := "zone" + zoneID
gridZoneMembers = append(gridZoneMembers, zoneMember)
// Zone-Station Set Key: zoneS_Y_stations_keys
zoneStationKey := fmt.Sprintf(zoneStationSetKeyFormat, S, Y)
zoneStationMembers := make([]any, 0, 3)
// Z: Station Index (1-3)
for Z := 1; Z <= 3; Z++ {
stationID := fmt.Sprintf("%d_%d_%d", S, Y, Z)
stationKey := "station" + stationID
allStationKeys = append(allStationKeys, stationKey)
zoneStationMembers = append(zoneStationMembers, stationKey)
// Station-NSPath Set Key: stationS_Y_Z_components_nspath_keys
stationNSPathKey := fmt.Sprintf(stationNSPathKeyFormat, S, Y, Z)
stationNSMembers := make([]any, 0, 3)
// D: NSPath Index (1-3)
for D := 1; D <= 3; D++ {
nsPathID := fmt.Sprintf("%s_%d", stationID, D)
nsPathKey := "ns" + nsPathID
allNSPathKeys = append(allNSPathKeys, nsPathKey)
stationNSMembers = append(stationNSMembers, nsPathKey)
// NSPath-CompTag Set Key: nsS_Y_Z_D_components_tag_keys
nsCompTagKey := fmt.Sprintf(nsPathCompTagKeyFormat, S, Y, Z, D)
nsCompTagMembers := make([]any, 0, 3)
// I: CompTag Index (1-3)
for I := 1; I <= 3; I++ {
compTagID := fmt.Sprintf("%s_%d", nsPathID, I)
compTagKey := "cmptag" + compTagID
allCompTagKeys = append(allCompTagKeys, compTagKey)
nsCompTagMembers = append(nsCompTagMembers, compTagKey)
// CompTag-Measurement Set Key: comptagS_Y_Z_D_I_measurement_keys
compTagMeasKey := fmt.Sprintf(compTagMeasKeyFormat, S, Y, Z, D, I)
compTagMeasMembers := make([]any, 0, 3)
// M: Measurement Index (1-3)
for M := 1; M <= 3; M++ {
measurementID := fmt.Sprintf("%s_%d", compTagID, M)
measurementKey := "meas" + measurementID
allMeasurementTagKeys = append(allMeasurementTagKeys, measurementKey)
compTagMeasMembers = append(compTagMeasMembers, measurementKey)
}
if err := rdb.SAdd(ctx, compTagMeasKey, compTagMeasMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", compTagMeasKey, err)
}
}
if err := rdb.SAdd(ctx, nsCompTagKey, nsCompTagMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", nsCompTagKey, err)
}
}
if err := rdb.SAdd(ctx, stationNSPathKey, stationNSMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", stationNSPathKey, err)
}
}
if err := rdb.SAdd(ctx, zoneStationKey, zoneStationMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", zoneStationKey, err)
}
}
if err := rdb.SAdd(ctx, gridZoneKey, gridZoneMembers...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", gridZoneKey, err)
}
}
// 插入所有顶层动态 Set (将所有成员一次性插入到全局 Set 中)
if err := rdb.SAdd(ctx, stationKeysSet, allStationKeys...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", stationKeysSet, err)
}
if err := rdb.SAdd(ctx, componentNSPathKeysSet, allNSPathKeys...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", componentNSPathKeysSet, err)
}
if err := rdb.SAdd(ctx, componentTagKeysSet, allCompTagKeys...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", componentTagKeysSet, err)
}
if err := rdb.SAdd(ctx, measurementTagKeysSet, allMeasurementTagKeys...).Err(); err != nil {
return fmt.Errorf("sadd failed for %s: %w", measurementTagKeysSet, err)
}
log.Printf("inserted %d stations, %d nspaths, %d comptags, and %d measurements.\n",
len(allStationKeys), len(allNSPathKeys), len(allCompTagKeys), len(allMeasurementTagKeys))
return nil
}
func insertAllHierarchySuggestions(ac *redisearch.Autocompleter) error {
suggestions := make([]redisearch.Suggestion, 0, 10000) // 预估容量:~2430 (Metric) + ~1100 (Path Prefixes)
// S: grid Index (1-3)
for S := 1; S <= 3; S++ {
gridStr := fmt.Sprintf("grid%d", S)
suggestions = append(suggestions, redisearch.Suggestion{Term: gridStr, Score: defaultScore})
// Y: zone Index (1-3)
for Y := 1; Y <= 3; Y++ {
zoneStr := fmt.Sprintf("zone%d_%d", S, Y)
gridZonePath := fmt.Sprintf("%s.%s", gridStr, zoneStr)
suggestions = append(suggestions, redisearch.Suggestion{Term: gridZonePath, Score: defaultScore})
// Z: station Index (1-3)
for Z := 1; Z <= 3; Z++ {
stationStr := fmt.Sprintf("station%d_%d_%d", S, Y, Z)
gridZoneStationPath := fmt.Sprintf("%s.%s", gridZonePath, stationStr)
suggestions = append(suggestions, redisearch.Suggestion{Term: gridZoneStationPath, Score: defaultScore})
// D: nsPath Index (1-3)
for D := 1; D <= 3; D++ {
nsPathStr := fmt.Sprintf("ns%d_%d_%d_%d", S, Y, Z, D)
gridZoneStationNSPath := fmt.Sprintf("%s.%s", gridZoneStationPath, nsPathStr)
suggestions = append(suggestions, redisearch.Suggestion{Term: gridZoneStationNSPath, Score: defaultScore})
// I: compTag Index (1-3)
for I := 1; I <= 3; I++ {
compTagStr := fmt.Sprintf("comptag%d_%d_%d_%d_%d", S, Y, Z, D, I)
fullCompTagPath := fmt.Sprintf("%s.%s", gridZoneStationNSPath, compTagStr)
suggestions = append(suggestions, redisearch.Suggestion{Term: fullCompTagPath, Score: defaultScore})
for _, metric := range configMetrics {
fullMetricPath := fmt.Sprintf("%s.%s", fullCompTagPath, metric)
suggestions = append(suggestions, redisearch.Suggestion{Term: fullMetricPath, Score: defaultScore})
// J: measTag Index (1-3)
for J := 1; J <= 3; J++ {
measTagStr := fmt.Sprintf("comptag%d_%d_%d_%d_%d_%d", S, Y, Z, D, I, J)
fullMeasurementPath := fmt.Sprintf("%s.%s", fullMetricPath, measTagStr)
suggestions = append(suggestions, redisearch.Suggestion{Term: fullMeasurementPath, Score: defaultScore})
}
}
}
}
}
}
}
log.Printf("generated %d suggestions. starting bulk insertion into dictionary '%s'.", len(suggestions), redisSearchDictName)
// del ac suggestion
ac.Delete()
err := ac.AddTerms(suggestions...)
if err != nil {
return fmt.Errorf("failed to add %d suggestions: %w", len(suggestions), err)
}
return nil
}
func deleteAllHierarchySets(ctx context.Context, rdb *redis.Client) error {
log.Println("starting to collect all Redis Set keys for deletion...")
keysToDelete := []string{
gridKeysSet,
zoneKeysSet,
stationKeysSet,
componentNSPathKeysSet,
componentTagKeysSet,
configKeysSet,
measurementTagKeysSet,
}
for S := 1; S <= 3; S++ {
keysToDelete = append(keysToDelete, fmt.Sprintf(gridZoneSetKeyFormat, S))
for Y := 1; Y <= 3; Y++ {
keysToDelete = append(keysToDelete, fmt.Sprintf(zoneStationSetKeyFormat, S, Y))
for Z := 1; Z <= 3; Z++ {
keysToDelete = append(keysToDelete, fmt.Sprintf(stationNSPathKeyFormat, S, Y, Z))
for D := 1; D <= 3; D++ {
keysToDelete = append(keysToDelete, fmt.Sprintf(nsPathCompTagKeyFormat, S, Y, Z, D))
for I := 1; I <= 3; I++ {
keysToDelete = append(keysToDelete, fmt.Sprintf(compTagMeasKeyFormat, S, Y, Z, D, I))
}
}
}
}
}
log.Printf("collected %d unique keys. Starting batch deletion...", len(keysToDelete))
deletedCount, err := rdb.Del(ctx, keysToDelete...).Result()
if err != nil {
return fmt.Errorf("batch deletion failed: %w", err)
}
log.Printf("Successfully deleted %d keys (Sets) from Redis.", deletedCount)
return nil
}
func main() {
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})
ctx := context.Background()
if err := rdb.Ping(ctx).Err(); err != nil {
log.Fatalf("could not connect to Redis: %v", err)
}
log.Println("connected to Redis successfully")
if err := deleteAllHierarchySets(ctx, rdb); err != nil {
log.Fatalf("error delete exist set before bulk insertion: %v", err)
}
if err := BulkInsertAllHierarchySets(ctx, rdb); err != nil {
log.Fatalf("error during bulk insertion: %v", err)
}
}