想象一下REDIS-SERVER的以下两种情况:
(A)redis-cli>设置“名字lastname.AT.emailaddress.dot.com”“ 1”
(B)redis-cli> setbit“名字lastname.AT.emailaddress.dot.com” 1 1
如果一百万个不同的密钥与客户名称/电子邮件一起存储。 用例是我想检查记录是否存在, 所以 如果是(A)
redis-cli>获得“名字lastname.AT.emailaddress.dot.com”
来自REDIS的回复为> 1
在(B)情况下
redis-cli> getbit“名字lastname.AT.emailaddress.dot.com” 1
来自REDIS的回复为> 1
问题:
如果将全部一百万个键/值对都保留在内存中以进行查询,那么REDIS使用的内存量是否会有所不同?
答案 0 :(得分:2)
您应该使用解决方案A 。由于Redis对小整数具有特殊的编码,因此它更有意义,并且占用的内存更少。对于您来说,值部分,即“ 1” ,不会花费额外的内存。
另外,另一种解决方案是使用SET
保存这些名称/电子邮件对:使用SADD name-email "firstname lastname.AT.emailaddress.dot.com"
添加记录,并使用SISMEMBER name-email "firstname lastname.AT.emailaddress.dot.com"
检查是否存在。