gpt4 book ai didi

javascript - Redis - 遍历位图以获取设置位

转载 作者:IT王子 更新时间:2023-10-29 06:06:19 27 4
gpt4 key购买 nike

我正在尝试遍历 Redis 位图并获取所有设置位的偏移量。

我尝试了几种方法,但都失败了,这是我从 Maxwell 的 Redis Essentials 书中截取的片段。我检查了几次代码,仍然无法弄清楚哪里出了问题。

var bitmap = 'test';
redisClient.get(bitmap, function(err, bitmapValue){
var userIds = [];

var data = bitmapValue.toJSON().data;
data.forEach(function(byte, byteIndex){
for(var bitIndex = 7; bitIndex >= 0; bitIndex--) {
var visited = byte >> bitIndex & 1;
}
if(visited === 1) {
var userId = byteIndex * 8 + (7 - bitIndex);
userIds.push(userId);
}
})

console.log(userIds);
});

大多数时候我得到的结果是空的,通常是位图很小的时候。当我尝试大位图时,我得到的数组充满了 8 的倍数。我得到的示例结果如下所示,这是不正确的,该位图的位数是 690,而我只有 91。

[8,
16,
32,
144,
176,
256,
320,
440,
456,
520,
584,
592,
624,
640,
648,
680,
696,
704,
712,
720,
752,
760,
848,
1056,
1088,
1104,
1112,
1120,
1136,
1144,
1160,
1168,
1224,
1248,
1264,
1280,
1312,
1328,
1424,
1480,
1496,
1544,
1600,
1680,
1792,
1824,
1840,
1904,
1976,
2080,
2112,
2144,
2224,
2240,
2296,
2392,
2400,
2504,
2512,
2584,
2616,
2712,
2856,
2880,
2912,
2976,
3048,
3288,
3328,
3352,
3360,
3368,
3376,
3432,
3440,
3496,
3600,
3616,
3624,
3632,
3704,
3752,
3776,
3832,
3880,
3936,
4056,
4264,
4296,
4352,
4376]

最佳答案

我没有您存储在键 test 下的位图,因此很难进行测试。但是,阅读代码时发现 if 语句放置错误 - 应该是:

var bitmap = 'test';
redisClient.get(bitmap, function(err, bitmapValue){
var userIds = [];

var data = bitmapValue.toJSON().data;
data.forEach(function(byte, byteIndex){
for(var bitIndex = 7; bitIndex >= 0; bitIndex--) {
var visited = byte >> bitIndex & 1;
if(visited === 1) {
var userId = byteIndex * 8 + (7 - bitIndex);
userIds.push(userId);
}
}
})

console.log(userIds);
});

关于javascript - Redis - 遍历位图以获取设置位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com