浅谈redis中set数据结构

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 浅谈redis中set数据结构

结构特点


set的实现原理是利用Hash算法为key,value为null的HashMap.特点是无序不可重复.


场景一:微博点赞


key为文章的编号,value为用户ID,调用sadd方法实现.set中的数据量就是文章的点赞数量.


场景二:朋友圈点赞,推荐可能认识的人


key为朋友圈文章的id,value为用户ID,即可记录朋友圈点赞数,利用集合的交集,可以实现共同好友的记录,来实现推荐可能认识的人.


源码分析

public Long sadd(byte[] key, byte[]... members) {
    this.checkIsInMultiOrPipeline();
    this.client.sadd(key, members);
    return this.client.getIntegerReply();
}


checkIsInMultiOrPipeline 检查连接是否可用,并且是否有别的线程在操作该值.然后调用 RedisClient 客户端中的sadd方法,该方法已经封装了redis的操作命令,两个参数分别为key和value,然后将该结果影响的行数返回,我们可以根据返回的行数来确认加入了几条数据.


总结


redis中set集合的应用场景比较少,不如string和list,利用他的不可重复性,来实现微博朋友圈的点赞记录,也是比较不错的选择.

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
25天前
|
消息中间件 NoSQL Redis
redis数据结构-List
redis数据结构-List
30 1
|
23天前
|
存储 监控 NoSQL
redis数据结构-HyperLogLog
redis数据结构-HyperLogLog
30 1
|
25天前
|
存储 NoSQL Redis
redis数据结构-ziplist
redis数据结构-ziplist
13 2
|
23天前
|
存储 NoSQL 数据处理
redis数据结构-Bitmaps
redis数据结构-Bitmaps
25 0
|
23天前
|
存储 缓存 NoSQL
redis数据结构-hash
redis数据结构-hash
8 0
|
存储 NoSQL Redis
redis set底层数据结构
set底层存储  redis的集合对象set的底层存储结构特别神奇,我估计一般人想象不到,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。
6311 0
|
6天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
27天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
|
23天前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
49 0
|
27天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)
【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)