二进制安全
来源:互联网 发布:2am 2pm 知乎 编辑:程序博客网 时间:2024/03/29 02:11
二进制安全
C字符串中的字符必须符合某种编码(比如ASCII),并且除了字符串的末尾之外,字符串里面不能包含空字符,否则最先被程序读入的空字符将被误认为是字符串结尾,这些限制使得C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。
举个例子,如果有一种使用空字符来分割多个单词的特殊数据格式,如图2-17所示,那么这种格式就不能使用C字符串来保存,因为C字符串所用的函数只会识别出其中的"Redis",而忽略之后的"Cluster"。
虽然数据库一般用于保存文本数据,但使用数据库来保存二进制数据的场景也不少见,因此,为了确保Redis可以适用于各种不同的使用场景,SDS的API都是二进制安全的(binary-safe),所有SDS API都会以处理二进制的方式来处理SDS存放在buf数组里的数据,程序不会对其中的数据做任何限制、过滤、或者假设,数据在写入时是什么样的,它被读取时就是什么样。
这也是我们将SDS的buf属性称为字节数组的原因——Redis不是用这个数组来保存字符,而是用它来保存一系列二进制数据。
例如,使用SDS来保存之前提到的特殊数据格式就没有任何问题,因为SDS使用len属性的值而不是空字符来判断字符串是否结束,如图2-18所示。
通过使用二进制安全的SDS,而不是C字符串,使得Redis不仅可以保存文本数据,还可以保存任意格式的二进制数据。
0 0
- 二进制安全
- 二进制安全
- 二进制安全
- 二进制安全
- php的二进制安全
- php的二进制安全
- Binary-safe 二进制安全
- 144.二进制安全
- 安全删除MySql二进制日志
- PHP中的二进制安全是什么意思
- 什么是二进制安全的函数
- php二进制安全的含义
- 安全数组与二进制的转换
- REDIS字符串-二进制安全的含义
- php手册经常见到,什么是“二进制安全”?
- redis中string类型的二进制安全
- 分布式缓存Redis之二进制安全
- 安全删除MySQL二进制日志的3种方法
- listview实现自动向上滚动,快速滚动,和滚动条的一些设置
- 简单工厂方法,工厂方法,抽象工厂方法
- web开发的几道笔试题
- 字符串相关处理函数
- 编写一个方法,确定某字符串的所有排列组合
- 二进制安全
- android获取存储空间
- android:如何从照片中获取拍摄地址信息
- Objective-C 【内存管理&手动内存管理 综述】
- Java中的异常(2)
- 如何给10^7个数据量的磁盘文件排序
- JAVA程序员面试题
- python __base__等内置方法
- Servlet3.0注解配置Servlet和Filter