为什么需要Bitmap
bitmap的主要应用场景为低空间的去重业务场景,比如活跃用户统计和用户行为统计。
Golang如何操作
func main() { rdb := redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Password: "123456", // no password set DB: 0, // use default DB }) // scmd := rdb.GetRange("mybitmap", 0, 1480) // 同样可以 // bs, _ := scmd.Bytes() scmd := rdb.Get("mybitmap") bs, _ := scmd.Bytes() ss := BytesToBinaryBytes(bs) fmt.Println(string(ss), len(ss)) } func appendBinaryBytes(bs []byte, b byte) []byte { var a byte for i := 0; i < 8; i++ { a = b b <<= 1 b >>= 1 switch a { case b: bs = append(bs, '0') default: bs = append(bs, '1') } b <<= 1 } return bs } func BytesToBinaryBytes(bs []byte) []byte { l := len(bs) bl := l*8 + l + 1 buf := make([]byte, 0, bl) for _, b := range bs { buf = appendBinaryBytes(buf, b) } return buf }
有疑问加站长微信联系(非本文作者)