用户表有数字的唯一字段情况下用Redis的BitMap实现点赞功能

在用户表有数字唯一字段的场景下,本文介绍了如何利用Redis的BitMap实现点赞功能,包括点赞、取消点赞、查看是否点赞和统计点赞数量。通过设置特定Key和偏移量,实现了高效的数据操作。
摘要由CSDN通过智能技术生成

用户表有数字的唯一字段情况下用Redis的BitMap实现点赞功能(不能保存数据)

用户ID为数字的情况下用redis bitmaps实现点赞功能
需求如下:
1.点赞
2.取消点赞
3.查看是否点赞
4.统计有多少点赞

1.BitMap简介

(1)BitMap是一连串的二进制数字(0,1),每一位所在的位置为偏移(offset),在BitMap上可以执行AND,OR,XOR以及其他操作。

(2)位图计数
位图计数的意思是统计BitMap中值为1的位的个数,位图计数的效率是很高的。

(3)Redis BitMap
Redis中允许使用二进制的Key和二进制的Value,BitMap就是二进制的Value。

2.需求实现

(1)点赞/取消点赞
假设用户的数字Id为123456L,对textId为text1的微博点赞。首先根据textId生成赞数据存储的Redis key,比如生成策略为praise_{textId},userId为123456L的用户点赞,只需要将praise_text1的第123456位置为1即可(取消赞则置为0)。
(2)是否点赞
就是根据key和偏移量的值来查询对应的值是1还是0.查询userId为123456L的用户是否给praise_text1点赞,就只需查询praise_text1的第123456位置是否为1即可。
(3)统计有多少点赞
就是利用位图计数的原理来实现。
Jedis把很多方法都封装好了,理解了BitMap的思想后代码实现就是非常简单的了。

import redis.clients.jedis.Jedis;

/**
 * @Author Zhongger
 * @Description 
 * @Date 2020.3.19
 */
public class RedisDriver {
   
    private Jedis jedis=null;

    public RedisDriver(){
   
        jedis=new Jedis("local
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值