Redis入门到通关之Set实现点赞功能

2024-04-15 21:52

本文主要是介绍Redis入门到通关之Set实现点赞功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • set 数据类型介绍
    • 不排序实现
    • 排序实现


set 数据类型介绍

Redis中的set类型是一组无序的字符串值。

在这里插入图片描述

set通过其独特的数据结构和丰富的命令提供了在存储和处理集合元素方面的一些非常有用的功能。下面列出了主要的set类型命令:

  • SADD key member1 [member2]:向指定键名的集合中添加一个或多个成员,并返回成功添加的成员数量。

  • SREM key member1 [member2]:从指定键名的集合中移除一个或多个成员,并返回成功移除的成员数量。

  • SMEMBERS key:返回指定键名集合中所有的成员。

  • SISMEMBER key member:检查指定成员是否在集合中,存在返回1,不存在则返回0。

  • SRANDMEMBER key [count]:随机获取指定键名集合中的一个或多个成员。如果指定count参数,则表示获取不重复的count个随机成员。

  • SCARD key:获取指定键名集合中的成员数。

  • SPOP key [count]:随机弹出指定键名集合中的一个或多个成员。如果指定count参数,则表示弹出不重复的count个随机成员。

  • SDIFF key1 [key2]:对两个或多个集合执行差集操作,返回结果集中保存的成员。

  • SUNION key1 [key2]:对两个或多个集合执行并集操作,返回结果集中保存的成员。

  • SINTER key1 [key2]:对两个或多个集合执行交集操作,返回结果集中保存的成员。

  • SDIFFSTORE destination_key key1 [key2]:对两个或多个集合执行差集操作,并将结果保存到指定键名的集合中。

  • SUNIONSTORE destination_key key1 [key2]:对两个或多个集合执行并集操作,并将结果保存到指定键名的集合中。

  • SINTERSTORE destination_key key1 [key2]:对两个或多个集合执行交集操作,并将结果保存到指定键名的集合中。

set类型提供了非常丰富的命令来管理集合中的元素,使其在实际应用场景中有很大的灵活性和适用性


不排序实现

场景:一件商品 同一个用户只能点赞一次

使用 Redis 的 set(唯一 & 不排序) 数据结构

// 	判断当前登录用户是否已经点赞
String key = BLOG_LIKED_KEY + id;
Boolean isMember = stringRedisTemplate.opsForSet().isMember(key, userId.toString());
//	保存用户到Redis的set集合
stringRedisTemplate.opsForSet().add(key, userId.toString());
//  把用户从Redis的set集合移除
stringRedisTemplate.opsForSet().remove(key, userId.toString());

排序实现

场景:一件商品 同一个用户只能点赞一次 且 按照点赞时间排序

使用 Redis 的 sortedSet(唯一 & 排序) 数据结构

// 保存用户到Redis的sortedSet集合  zadd key value score
stringRedisTemplate.opsForZSet().add(key, userId.toString(), System.currentTimeMillis());// 获取当前登录用户是否已经点赞(null 未点赞)
String key = BLOG_LIKED_KEY + id;
Double score = stringRedisTemplate.opsForZSet().score(key, userId.toString());// 把用户从Redis的set集合移除 key value 
stringRedisTemplate.opsForZSet().remove(key, userId.toString());// 查询top5的点赞用户 zrange key 0 4 (范围查询)
Set<String> top5 = stringRedisTemplate.opsForZSet().range(key, 0, 4);

在这里插入图片描述

这篇关于Redis入门到通关之Set实现点赞功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907023

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo