在Redis的排行榜中过滤类别

在Redis的排行榜中过滤类别,第1张

在Redis的排行榜中过滤类别

是的,这是可能的,但是这样做会增加应用程序层的复杂性和数据级别的存储。由于

Redis
是键/值存储库-
在多个条件(国家,游戏级别,性别,每日/每周/每月的最高用户)上进行查询表明您可能需要针对此问题的另一种解决方案。当您需要查询多个字段时,您会不断对数据进行非规范化处理,以满足业务需求。Redis并不是解决这类问题的最佳解决方案之一。

Cassandra
(宽列存储,NoSQL数据库)或
PostgreSQL
(RDBM)将是此阶段要考虑的解决方案。您可以继续写/更新到Postgres,并将结果缓存到Redis给定的时间。

如果要在Redis中实现此功能;您需要将国家/地区语言环境用作键的一部分。

您将具有

users
用于跟踪全球用户的键
users:it
,并且将具有诸如的键,
users:es
以便根据用户所在的国家来跟踪他们。每当您设置/更新用户时,您都需要在用户所在的国家/地区中设置/更新他们。

127.0.0.1:6379> zadd users 15 a(integer) 1127.0.0.1:6379> zadd users:it 15 a(integer) 1127.0.0.1:6379> zadd users 23 b 34 c(integer) 2127.0.0.1:6379> zadd users:es 23 b 34 c(integer) 2127.0.0.1:6379> zrevrange users 0 -11) "c"2) "b"3) "a"127.0.0.1:6379> zrevrange users 0 -1 withscores1) "c"2) "34"3) "b"4) "23"5) "a"6) "15"127.0.0.1:6379> zrevrange users:it 0 -1 withscores1) "a"2) "15"127.0.0.1:6379> zrevrange users:es 0 -1 withscores1) "c"2) "34"3) "b"4) "23"127.0.0.1:6379> zadd users 45 b(integer) 0127.0.0.1:6379> zadd users:es 45 b(integer) 0127.0.0.1:6379> zrevrange users:es 0 -1 withscores1) "b"2) "45"3) "c"4) "34"127.0.0.1:6379> zrevrange users 0 -1 withscores1) "b"2) "45"3) "c"4) "34"5) "a"6) "15"127.0.0.1:6379>

这种解决方案的问题之一是,当您需要其他条件来列出用户时,需要将所有现有用户迁移到新系统中,数据大小将大大增加。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4973517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存