如何理解Redis中的string二进制安全

1than · 2022-03-07 22:54:00 · 1032 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-03-07 22:54:00 的主题,其中的信息可能已经有所发展或是发生改变。

最近学到redis的bitmap的时候听到说在redis中string底层存储的并不是字符数组(比如 {'a','b','c'})。而是存储的二进制数组,就是将字符串转化为二进制,然后存储在二进制数组中?对于任何语言来说好像都没有直接支持bit这种类型的操作,说可以直接操作位的。所以我的问题是:

Redis中的bitmap是用string实现的,而Redis中的string是二进制安全的,那么Redis是怎么将字符串转化为二进制存储的。

希望大佬最好能从源码层面给小弟解释解释,因为我理解任何语言都没有说变量有bit这种类型的,那么redis是怎么通过类似bit[]来实现功能的


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1032 次点击  
加入收藏 微博
2 回复  |  直到 2022-03-08 22:55:31
Kilin
Kilin · #1 · 3年之前

首先,我认为你说的bit存储是不存在的,在Java(JVM)底层的实现,String就是用连续的int值存储和处理的。 Redis只是使用跟JVM实现类似的方式,主存使用int数字表示。不是你说的bit

1than
1than · #2 · 3年之前

@Kilin 如果是使用int数组表示的话 那我觉得好像没有起到节省空间的作用呀 比如int[] arr,那么这个数组中的每一个数字或者元素都会占用固定的字节数,比如1个字节也就是占用8bit 如果这样的话 简单的0 和1用8位去存储并没有起到节省空间的目的呀。应为bitmap中的值只可能是0或者1 如果用1个字节8bit去存储的话就没有达到节省空间的目的

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传