redis之文章投票

文章投票中使用Redis

文章的得分会随着时间逐渐降低,所以需要使用一个time zset和score zset

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//time

127.0.0.1:6379> zadd time: 1332065417.47 article:100408
(integer) 1
127.0.0.1:6379> zadd time: 1332075503.49 article:100635
(integer) 1
127.0.0.1:6379> zadd time: 1332082035.26 article:100716

127.0.0.1:6379> zrange time: 0 -1 withscores
1) "article:100408"
2) "1332065417.47"
3) "article:100635"
4) "1332075503.49"
5) "article:100716"
6) "1332082035.26"

//score

127.0.0.1:6379> zadd score: 1332164063.49 article:100635
(integer) 1
127.0.0.1:6379> zadd score: 1332174713.47 article:100408
(integer) 1
127.0.0.1:6379> zadd score: 1332225027.26 article:100716
(integer) 1

127.0.0.1:6379> zrange score: 0 -1 withscores
1) "article:100635"
2) "1332164063.49"
3) "article:100408"
4) "1332174713.47"
5) "article:100716"
6) "1332225027.26"

为了阻止一个用户给一篇文章多次投票,为每一篇文章创建一个已投票用户set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
127.0.0.1:6379> sadd voted:100408 user:234487
(integer) 1
127.0.0.1:6379> sadd voted:100408 user:253378
(integer) 1
127.0.0.1:6379> sadd voted:100408 user:364680
(integer) 1
127.0.0.1:6379> sadd voted:100408 user:132097
(integer) 1
127.0.0.1:6379> sadd voted:100408 user:350917
(integer) 1
127.0.0.1:6379> smembers voted:100408
1) "user:132097"
2) "user:364680"
3) "user:253378"
4) "user:234487"
5) "user:350917"