我试图为每个页面或其他事件(如点击等)计算不同客户端的独特访问者.我打算做的是为GUID分配一个唯一的基于cookie的GUID,然后为每个事件调用SADD.redis键将是SET_ [EVENTID]
如果我只想要用户数量,我可能会使用PFADD,但我的应用程序还需要知道谁是唯一用户
但问题是如果有太多的EVENT或太多的用户,那么SADD将在内存中结束大量的用户ID我们期望每小时1000k +用户事件,所有客户端,事件数量也将超过100+
我想要一个意见是redis正确的存储选择.由于请求数量庞大,任何传统的RDBMS方法都不起作用
我不确定是否有任何其他存储可以帮助像Aerospike
在RTB中,Aerospike被大量使用,频率上限是需求侧平台(DSP)的常见用例.根据用户查看特定广告或特定广告系列的广告的次数设置上限.同时,跟踪总展示次数以及剩余预算.这些计数器通常具有短TTL.
解
您可以使用复合键<page ID : user ID : yyyymmdd>作为特定用户是否访问过该页面的标志,使用24小时TTL.这将存在于page-visit内存中的数据索引命名空间中.
如果没有这样的密钥:
page-visit初始值为1.<page ID : yyyymmdd>集合中的键page-users.此set(page-users)可以存在于将其数据存储在SSD上的命名空间中.如果此密钥存在:
在一天结束时:
<page ID : yyyymmdd>该组中的键读取记录page-usersusers.好处
page-visit标志的延迟非常低.它使用非常少的内存,因为索引中的数据库命名空间不会占用Aerospike成本中每个对象的64B元数据之外的额外空间.例如,10M用户*64B*复制因子2 = 1.2GB的DRAM.page-users记录的最新用户ID .只有在页面上出现新的唯一用户时才会使用此操作(由page-visit标志保护).