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