springboot使用redis写简易投票系统

该博客介绍了一个使用SpringBoot和Redis构建的简易投票系统。系统要求用户登录后才能进行投票,且每个账号限投一票。候选人票数按高低顺序在页面展示。实现细节包括:使用String类型Key存储账号密码,Set存储已投票账号,ZSet存储候选人ID及其票数,以及Hash存储候选人对象。此外,还提到了dao层、service层和VoteController的相关实现。
摘要由CSDN通过智能技术生成

vote-springboot-redis
基本功能:
登录才能投票
一个账号只能投票一次
页面显示候选人票数由高到低

大致思路:
登录才能投票 : String类型 key名=账号,value=密码 通过key获取value 不相等 密码错误,获取的为空,证明账号不存在
一个用户只能投票一次 : 投票成功把账号添加到set里,添加失败证明投过票
页面显示候选人票数由高到低 : 把候选人id和票数 放入zset里,存放LinkedHashMap有序map里

//候选人对象使用hash存的,
//由于页面显示需要票数高的在前面所以,把候选人的id和票数存到了zset里
//账号密码用string 存的

dao层实现类

redisDaoImpl
//都是重写的7个方法,接口没写位置不够

	@Autowired
	private StringRedisTemplate redisTemplate //当做对redis数据库进行操作的对象

	//批量添加数据 windows的cmd 没办法储存中文所以需要用test添加一些候选人
	@Override
	public void hashMultiSet(String key,Map<String,String>map){
   
	redisTemplate.opsForHash().putAll(key,map);  //.forHash对hash类型的操作
}
	//通过key获取候选人的属性 对应指令:hgetall key
	@Override
    public Map<Object, Object> hashGetAll(String key) {
   
        return redisTemplate.opsForHash().entries(key);
    }
	
	//往redis里存账号和密码 在test里调用方法储存,也可以敲指令来完成这步
	//对应指令:set key value
	 @Override
    public void setString(String key,String value) {
   
    //forValue对string的操作,key账号,value密码
        redisTemplate.opsForValue().set(key,value);
    }
    
    //通过账号获取密码 对应指令: get key 
      @Override
    public String getString(String key) {
   
        return redisTemplate.opsForValue().get(key);
    }
    
    //把账号放入set集合里 用于排重
    //投票以后放入成功=投票成功, 放不进去等于投过票了
	 public Integer setAdd(String key, String value); //账号是value key是集合名字


    //给zset集合里的候选人id字段加1 对应指令: zincrby set score value
 	   @Override
    public Integer zsetIncrby(String key, String value, Integer score) {
   
	//zset集合 里面放的候选人id 和 票数
	//当集合不存在会自动创建集合和字段 
	//score参数为Integer,方法参数需要Double,Integer会自动转换成Double
	//方法返回的参数为Double,需要.intValue方法转换成Integer
       return redisTemplate.opsForZSet().incrementScore(key,value,score).intValue()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值