簡體   English   中英

使用python在Redis中進行鍵壓縮

[英]key compression in redis with python

我的數據集非常大,正在考慮使用Redis 我的數據集包括: sha1哈希和與該哈希關聯的其他n值。

我將sha1哈希用作Redis的鍵,我的目標是以某種方式對其進行壓縮)。 我嘗試使用zlib然后使用base64 ,但是新的哈希值比原始的sha1哈希值還要長:

[alexus@wcmisdlin02 ~]$ python
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> hashlib.sha1('test').hexdigest()
'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'
>>> len(hashlib.sha1('test').hexdigest())
40
>>> import zlib
>>> len(zlib.compress(hashlib.sha1('test').hexdigest()))
46
>>> import base64
>>> base64.b64encode(zlib.compress(hashlib.sha1('test').hexdigest()))
'eJwFwQkBACAIA8BKIihbHB7pH8G7oAXmnaoUZlwpqwXXVsojnNiT2foB7msLYg=='
>>> len(base64.b64encode(zlib.compress(hashlib.sha1('test').hexdigest())))
64
>>> 

任何想法如何去做?


我也在研究以下內容:

哈希函數的結果或多或少是隨機數據,因此您無法真正對其進行壓縮。 根據要處理的對象/哈希的方式以及對碰撞的關注程度,如果要節省空間或使用摘要大小較小的算法(md5,一半的一半),則可以只使用sha1值的一部分sha2-256)。 另外,您無法將摘要從十六進制轉換為原始二進制文件並節省50%。 最后,定義“非常大”,很可能密鑰的大小不會有很大的不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM