最近学到redis的bitmap的时候听到说在redis中string底层存储的并不是字符数组(比如 {'a','b','c'})。而是存储的二进制数组,就是将字符串转化为二进制,然后存储在二进制数组中?对于任何语言来说好像都没有直接支持bit这种类型的操作,说可以直接操作位的。所以我的问题是:<br><br>
<b>Redis中的bitmap是用string实现的,而Redis中的string是二进制安全的,那么Redis是怎么将字符串转化为二进制存储的。</b><br><br>
希望大佬最好能从源码层面给小弟解释解释,因为我理解任何语言都没有说变量有bit这种类型的,那么redis是怎么通过类似bit[]来实现功能的
<a href="/user/Kilin" title="@Kilin">@Kilin</a> 如果是使用int数组表示的话 那我觉得好像没有起到节省空间的作用呀 比如int[] arr,那么这个数组中的每一个数字或者元素都会占用固定的字节数,比如1个字节也就是占用8bit 如果这样的话 简单的0 和1用8位去存储并没有起到节省空间的目的呀。应为bitmap中的值只可能是0或者1 如果用1个字节8bit去存储的话就没有达到节省空间的目的
#2
更多评论
首先,我认为你说的bit存储是不存在的,在Java(JVM)底层的实现,String就是用连续的int值存储和处理的。
Redis只是使用跟JVM实现类似的方式,主存使用int数字表示。不是你说的bit
#1