是的,这是可能的,但是这样做会增加应用程序层的复杂性和数据级别的存储。由于
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>
这种解决方案的问题之一是,当您需要其他条件来列出用户时,需要将所有现有用户迁移到新系统中,数据大小将大大增加。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)