redis usecase使用带有小值的大键

23c0lvtd  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(335)

我有一个使用redis的用例,有点不同。
在mysql中,我有一个实体,我们称之为 HumanEntity . 这个 HumanEntity 有多对多的关系。 HumanEntity.Urls -每个站点有多个URL HumanEntity . HumanEntity.UserNames -每个用户有多个用户名 HumanEntity . HumanEntity.Phones ... HumanEntity.Emails ...
在正常的一小时内,应用程序会创建数百个这样多的值。
用例是,应用程序接收一个http调用(每秒100次),其中 HumanEntity 值(url或用户名、电话或电子邮件)。
我需要扫描我的mysql(1000000条记录)并返回 HumanEntity.Id(integer) .
因为在数据完整性方面有一些延迟是可以的,所以我想到了redis。
我可以将值存储为redis吗 key 以及 HumanEntity.Id(integer) 作为值。
我的api需要返回 HumanEntity.Id(integer) .
有这么长的键和这么短的值有意义吗?例如,url可能是1500字节,值可以是1字节。
实现这一点的最佳redis方法是什么?
谢谢

j8yoct9x

j8yoct9x1#

如果值不是唯一的,那么您可能会遇到一些问题。电话,电子邮件或用户名可能是唯一的用户,但我不确定的网址或任何其他财产存储在您的数据库。您可以用另一个用户的标识符覆盖标识符的值。
如果你没有这样的问题;您可以继续使用字符串类型,时间复杂度 GET 以及 SET 是o(1)-那是你能得到的最好的了。
在某些情况下,例如检查用户是否使用了任何优惠券,您可以使用long(比如说64个字符)user id作为键,1作为值和用法 EXISTS 来决定它。所以使用长键和短值是有效的。

相关问题