Redis是否自动“自动”;“备忘录化”;或;识别重复项;?
如果将两个k,v对按入具有相同值的Redis,即Redis是否自动“自动”;“备忘录化”;或;识别重复项;?,redis,Redis,如果将两个k,v对按入具有相同值的Redis,即 set(k1, v) set(k2, v) Redis smarlty是否会在后台存储v并执行以下操作: set(somereference, v) set(k1, #somereference) set(k2, #somereference) 但是仍然返回(k1,v)、(k2,v) 我这样问是因为现在,从Python开始,我将值推送到redis中,形式如下: pickle({"some sequence number" : xxx, "im
set(k1, v)
set(k2, v)
Redis smarlty是否会在后台存储v并执行以下操作:
set(somereference, v)
set(k1, #somereference)
set(k2, #somereference)
但是仍然返回(k1,v)、(k2,v)
我这样问是因为现在,从Python开始,我将值推送到redis中,形式如下:
pickle({"some sequence number" : xxx, "image-bytes" : some long bytestring})
我想知道,如果其中两个dict实际上包含相同的图像,那么通过testring和redis只能存储一次底层值,那么我这样做是否值得 否,redis不会自行进行重复数据消除:
redis$ du -h dump.rdb
4.0K dump.rdb
redis$ ipython3
In [1]: %paste
import os
from redis import StrictRedis
data = os.urandom(1024)
redis = StrictRedis()
for i in range(1000000):
redis.set(f'key{i}', data)
## -- End pasted text --
In [2]:
Do you really want to exit ([y]/n)?
redis$ du -h dump.rdb
633M dump.rdb
数据库转储是用LZW压缩的,所以它比预期的大小小一点
顺便说一句,我发现在打包和解包文本方面比pickle和其他几乎所有东西都快得多。不,redis本身不进行重复数据消除:
redis$ du -h dump.rdb
4.0K dump.rdb
redis$ ipython3
In [1]: %paste
import os
from redis import StrictRedis
data = os.urandom(1024)
redis = StrictRedis()
for i in range(1000000):
redis.set(f'key{i}', data)
## -- End pasted text --
In [2]:
Do you really want to exit ([y]/n)?
redis$ du -h dump.rdb
633M dump.rdb
数据库转储是用LZW压缩的,所以它比预期的大小小一点
顺便说一句,我发现在打包和解包文本方面比pickle和其他几乎所有东西都快得多。msgpack支持字节吗?这是我在JSON上的主要问题。@Tommy:你必须启用一些选项,但是是的:
msgpack.unpacb(msgpack.packb(['a',b'a'],use_bin_type=True),raw=False)==['a',b'a']
msgpack支持字节吗?这是我使用JSON的主要问题。@Tommy:您必须启用一些选项,但是可以:msgpack.unpacb(msgpack.packb(['a',b'a'],使用\u bin\u type=True),raw=False)==['a',b'a']