基于某个活动实现简易的投票系统:
1、定义一个活动
2、基于活动开始投票
3、同一个人只能投一次票
4、获取投票总数和人数
实现业务代码如下:
1、定义活动和用户id
String activityId = "10001"; String userId1 = "201"; String userId2 = "202";
2、执行投票规则,K为活动id,值为用户id,将具体数据存储到redis的set集合中--由doVote方法实现
boolean flag = doVote(activityId,userId1);
System.out.println(flag);
这里flag表示投票是否成功,第一投票则为true,第二次投票代表取消,值为false
执行dovote方法,先获取jedis连接,然后通过jedis.sismember()方法,判断集合是否含有当前用户
1、检查是否投过票 Jedis jedis = JedisDataSource.getConnection(); Boolean flag = jedis.sismember(activityId, userId);//返回值为Boolean类型 // 2、基于检查结果,执行投票或取消投票 if (flag){ jedis.srem(activityId, userId); return false; } jedis.sadd(activityId, userId); return true; }
查看投票总数,使用的是.scard这个方法,scard这个是获取集合中的个数的意思。
private static Long doCount(String activityId) { Jedis jedis = JedisDataSource.getConnection(); Long scard = jedis.scard(activityId); jedis.close(); return scard; }
获取投票的用户,使用的是jedis中的smembers----获取集合中的成员。
private static Set<String> doGetUsers(String activityId) { Jedis jedis = JedisDataSource.getConnection(); Set<String> users = jedis.smembers(activityId); jedis.close(); return users; }
package com.jt.redis;
import com.jt.JedisDataSource;
import redis.clients.jedis.Jedis;
import java.util.Set;
//基于某个活动实现的简易投票系统
//1、定义一个活动
//2、基于活动开始投票
//3、同一个人只能投一次票,
//4、可以获取投票总数以及人数
public class VoteDemo01 {
public static void main(String[] args) {
// 1、定义活动,用户id---登录用户
String activityId = "10001";
String userId1 = "201";
String userId2 = "202";
// 2、执行投票规则,key为活动id,值为用户id,将具体数据存储的redis的set集合
boolean flag = doVote(activityId,userId1);
System.out.println(flag);
// 3、获取投票总数
Long count = doCount(activityId);
System.out.println(count);
// 4、获取并输出那些人参与了投票
Set<String> users = doGetUsers(activityId);
System.out.println(users);
}
private static Set<String> doGetUsers(String activityId) {
Jedis jedis = JedisDataSource.getConnection();
Set<String> users = jedis.smembers(activityId);
jedis.close();
return users;
}
private static Long doCount(String activityId) {
Jedis jedis = JedisDataSource.getConnection();
Long scard = jedis.scard(activityId);
jedis.close();
return scard;
}
private static boolean doVote(String activityId, String userId) {
// 1、检查是否投过票
Jedis jedis = JedisDataSource.getConnection();
Boolean flag = jedis.sismember(activityId, userId);
// 2、基于检查结果,执行投票或取消投票
if (flag){
jedis.srem(activityId, userId);
return false;
}
jedis.sadd(activityId, userId);
return true;
}
}