redis - 不同之处在于 REDIS 使用了多少内存

标签 redis

想象一下 REDIS-SERVER 的这两种情况:

(A)redis-cli> set "firstname lastname.AT.emailaddress.dot.com""1"

(B)redis-cli> setbit "firstname lastname.AT.emailaddress.dot.com"1 1

如果 100 万个不同的 key 与客户姓名/电子邮件一起存储。 用例是我想检查记录是否存在, 所以 在 (A) 的情况下

redis-cli> 获取“名字姓氏.AT.emailaddress.dot.com”

来自 REDIS 的回复将是> 1

在(B)的情况下

redis-cli> getbit "firstname lastname.AT.emailaddress.dot.com"1

来自 REDIS 的回复将是> 1

问题:

如果将一百万对键/值对全部保存在内存中查询,REDIS使用的内存量会有什么不同吗?

最佳答案

您应该使用解决方案 A。它更有意义,并且占用更少的内存,因为 Redis 对小整数有特殊的编码。在您的情况下,值(value)部分,即 “1”,不会花费额外的内存。

此外,另一种解决方案是使用 SET 来保存这些名称/电子邮件对:使用 SADD name-email "firstname lastname.AT.emailaddress.dot.com" 添加记录,并使用 SISMEMBER name-email "firstname lastname.AT.emailaddress.dot.com" 检查是否存在。

关于redis - 不同之处在于 REDIS 使用了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52033543/

相关文章:

redis - 使用 Redis 维护页面浏览量计数队列并使用集合值更新数据库,而不是在每次页面浏览时更新

amazon-web-services - redis-cli:使用 "-r -1"立即退出而不是无限期地运行命令

redis - 系统设计是否能够近乎实时地聚合过去五分钟、过去一小时和最后一天内最常分享的 N 篇文章?

c# - 优化文件操作

Lua 脚本和 redis - 如何测试 None 值

javascript - 在 NodeJS 或 Javascript 中完成例程

php - 未捕获的 RedisException : session_write_close()

php - 在Laravel中使用Redis缓存图像吗?

ruby-on-rails - 使用 Mongoid (MongoDB)、Redis、Resque、Capistrano 等部署 Ruby on Rails 应用程序

Redis.io 与 .Net 中的 Azure Redis 缓存