Redis二进制安全概念详解数据库
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。
二进制安全包含了密码学的一些东西,比如加解密、签名等。
举个例子,你把数据11110000加密成10001000,然后传给我,就是一种二进制安全的做法。
redis中的二进制安全C字符串中的字符必须符合某种编码(比如ASCII),并且除了字符串的末尾之外,字符串里面不能包含空字符,否则最先被程序读入的空字符将被误认为是字符串结尾,这些限制使得C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。
举个例子,如果有一种使用空字符来分割多个单词的特殊数据格式,如图所示,那么这种格式就不能使用C字符串来保存,因为C字符串所用的函数只会识别出其中的 Redis ,而忽略之后的 Cluster 。
虽然数据库一般用于保存文本数据,但使用数据库来保存二进制数据的场景也不少见,因此,为了确保Redis可以适用于各种不同的使用场景,SDS(simple dynamid string )的 API都是二进制安全的(binary-safe),所有SDS API都会以处理二进制的方式来处理SDS存放在buf数组里的数据,程序不会对其中的数据做任何限制、过滤、或者假设,数据在写入时是什么样的,它被读 取时就是什么样。
这也是我们将SDS的buf属性称为字节数组的原因——Redis不是用这个数组来保存字符,而是用它来保存一系列二进制数据。
例如,使用SDS来保存之前提到的特殊数据格式就没有任何问题,因为SDS使用len属性的值而不是空字符来判断字符串是否结束,如图所示。
通过使用二进制安全的SDS,而不是C字符串,使得Redis不仅可以保存文本数据,还可以保存任意格式的二进制数据。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/3802.html
Redis相关文章
- Spring之Redis访问(Spring-data-redis)详解数据库
- 利用Redis优化数据库存储(redis作为数据库)
- 建立Redis主从同步环境(redis主从搭建)
- 搭建搭建Redis云数据库,实现无缝迁移(redis云数据库)
- Redis:一种新型NoSQL数据库(redis属于nosql)
- 论文编写Redis论文实现高性能数据库应用(编写redis)
- 细谈分布式Redis 实现高性能数据库管理(细说分布式redis)
- 深入浅出 使用Redis缓存的正确查询姿势(查询redis缓存命令)
- 查究Redis安装路径一探究竟(查询redis安装路径)
- 探索Redis数据库深入了解Redis内部(查看redis数据库内容)
- Redis热度不减的NoSQL数据库(热key redis)
- 构建新世界时序数据库与Redis的合作(时序数据库和redis)
- TCL编译安装Redis一步一步构建你的数据库(tcl编译安装redis)
- SSRF漏洞与Redis缓存引起的危机(ssrf与redis利用)
- 基于Spark实现Redis数据库查询(spark查询redis)
- Redis脚本用更少的代码实现更多(script redis)
- 单机搭建Redis集群跳出局限,打开更多可能(单机下redis集群)
- 前端如何连接 Redis 数据库(前端怎么连接redis)
- 学会Redis快速掌握数据库的功能(如何熟练使用redis)
- 深入了解Redis连接数查询方法(如何查redis连接数)
- 高效率利用Redis实现高并发缓存更新(redis高并发缓存更新)
- Redis数据库实现自动切换DB(redis选中db)
- Redis远程主机强制访问(redis 远程主机强迫)
- 节点灾备部署Redis集群依然保证单节点灾备(redis集群单数台)
- 红色趋势Redis订阅数据库(redis订阅数据库)
- 了解的Redis批量清除一次性了解多少(redis 清除所有可以)