Redis的bitmap如何在Golang中使用


本文摘自网络,作者,侵删。

为什么需要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
}

本文来自:51CTO博客

感谢作者:mb601ce0d29b15f

查看原文:Redis的bitmap如何在Golang中使用

相关阅读 >>

Go微服务框架Go-micro整体架构介绍

Golang 泛型初探

Golang 架构设计原则 迪米特法则

Go语言中slice作为参数传递时遇到的一些“坑”

必须掌握的Golang23种设计模式之简单工厂模式

dbatool-dodba

Golang elasticsearch7的使用

了解Go中如何使用包、变量和函数

利用Golang反射机制(reflect)搭建本地leetcode调试器

vscode中的Golang配置介绍

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...