来自Redis,我喜欢你可以把任何二进制blob放在Redis中,它只是被视为一个字符串。这是可能的,因为Redis字符串是他们所谓的“二进制安全”。这使得可以在字符串编码的二进制数据之上执行rangequeries之类的操作,这对于bitset操作等非常有用。
我正在调查Riak,到目前为止我喜欢它。 Riak似乎有范围查询,但我不确定Riak中的字符串是否在上述意义上是“二元安全”。如果没有,是否有另一种方法可以在Riak中存储二进制数据,并且仍然可以快速对它们进行范围查询?
由于
答案 0 :(得分:0)
由于你提到“范围查询”,我在谈论Riak时假设你的意思是2i(二级索引)。
Riak中的_bin
二级索引键存储为普通旧字节,排序(范围)是逐字节比较。
大多数人使用UTF-8 / ISO-8859-1字符串作为_bin
索引中的密钥,但这不是必需的。
但请注意,目前HTTP API在这方面有些笨拙。这个SO问题详细介绍了URL-unsafe Secondary Index names in Riak do not work
使用协议缓冲区,您只需在其上抛出字节即可。
尽管如此,我们目前的客户目前还是以UTF-8为中心。具体而言,Java客户端期望索引值为UTF-8字符串。这将在2.0版本中得到解决。