如何确定Redis中单个键的大小

时间:2015-11-16 12:12:48

标签: memory redis key size

如何知道中特定键的大小(以KB为单位)?
我知道info memory命令,但它给出了Redis实例的组合大小,而不是单个密钥。

5 个答案:

答案 0 :(得分:3)

您目前(v2.8.23& v3.0.5)不能。

来自serializedlength的{​​{1}}(由@Kumar建议)并不表示该值在RAM中的真实大小 - Redis一方面使用多个“技巧”来保存在RAM上另一方面,您还需要考虑数据结构的开销(也许还有一些Redis的全局字典)。

好消息是OSS项目中有关于这个主题的讨论,未来内存反省可能会有很大的改进。

注意:我开始(并暂时停止)关于该主题的系列文章 - 这是第一部分:https://redislabs.com/blog/redis-ram-ramifications-i

答案 1 :(得分:2)

我知道这是一个古老的问题,但是为了记录起见,Redis从版本 4.0.0 开始实施了# Transform index of df_a to series for mapping a_idx = df_a.index.to_series() # Condition that df_a's index is in df_b idx_in = a_idx.isin(df_b.index) # map df_a's index to the df_b groups mapped = a_idx.map(df_b.Group) # apply np.select on your conditions: conds = [(idx_in) & (mapped == 'O'), (idx_in) & (mapped == 'I')] choices = [5,3] df_a['Actioncode'] = np.select(conds,choices, df_a.Actioncode) >>> df_a Actioncode Group Mary 1.0 I Paul 5.0 I Robert 3.0 O David 4.0 O Julia 4.0 O 命令。

输出是将密钥存储在RAM中所需的字节数量。

参考:https://redis.io/commands/memory-usage

答案 2 :(得分:1)

alphabetL = 'abcdefghijklmnopqrstuvwxyz' alphabetC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' number = '0123456789' space = ' ' Ll = len(alphabetL) Lc = len(alphabetC) Ln = len(number) Lall = Ll + Lc + Ln Question1 = input('Hello, please insert the message you want encrypted: ') key1 = input('Please insert the key you want used [Keep between 1 and 26]: ') cipher = '' cipher2 = '' for A in Question1: if A in alphabetL: cipher += alphabetL[(alphabetL.index(A)+key1)%Ll] elif A in alphabetC: cipher += alphabetC[(alphabetC.index(A)+key1)%Lc] elif A in number: cipher += number[(number.index(A)+key1)%Ln] elif A in space: cipher += space else: print ('Error, please use abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') print (cipher) 显示类似DEBUG OBJECT <key>的密钥,这实际上是我正在寻找的东西......对于整个数据库,您需要聚合KEYS *的所有值,这些值不应该是使用您选择的脚本语言太过分了......糟糕的是redis.io并没有真正掌握DEBUG OBJECT的大量信息。

答案 3 :(得分:0)

如果你只想获得一个键的长度(字符串):STRLEN

答案 4 :(得分:-1)

为什么不试试

  

APPEND {your-key}“”

这将不会向现有值附加任何内容,但会返回当前长度。