数据类型-set 实现权限校验| 学习笔记

简介: 快速学习数据类型-set 实现权限校验

开发者学堂课程【Redis 入门到精通(基础篇)数据类型-set 实现权限校验】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13387


数据类型-set 实现权限校验

 

内容介绍

一、set 类型数据操作的注意事项

二、set 类型应用场景
三、Tips10

 

一、set 类型数据操作的注意事项

●set 类型不允许数据重复,如果添加的数据在set中已经存在,将只保留一份

●set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

首先注意不重复,围绕模型特征说的,如果说第一次添加成功,那么第二次及以后添加都是失败的;

第二个是set虽然与hash的存储结构相同,但是无法启用hash中存储值的空间,当数据运行时,就注定了类型,是不允许跨类型存储的。

简单看一下就是,sadd a a,进入成功,后面就失败了,如果一定要操作,在hset a a 1,那么是不允许的,这就是注意事项。

业务场景
集团公司共具有12000名员工,内部OA系统中具有700多个角色,3000多个业务操作,23000多种数据,每位员工具有一个或多个角色,如何快速进行业务操作的权限校验?

这里不要较真,真正的权限校验有框架,包括spring,筛入框架,都可以做一个完美的权限校验,这里是说使用redis的set模型也可也做到这个事情。

一个人对应多个角色,每个人都有不同的权限,就会有一些交叉重叠的部分,我们就可以用set来完成这件事。

image.png


二、set 类型应用场景

解决方案

●依赖 set 集合数据不重复的特征,依赖 set 集合 hash 存储结构特征完成数据过滤与快速查询

●根据用户id获取用户所有角色
●根据用户所有角色获取用户所有操作权限放入 set 集合
●根据用户所有角色获取用户所有数据全选放入 set 集合

依赖 set 集合数据不重复的特征,我们把一个人所有的角色的所有的操作,放到一个 set 集合中,重复的就被去掉了,这件事就可以做快速的校验,我们设定一个人有两个角色,一个角色有好几种权限,先做出角色1的权限,

sadd rid:001 getall,sadd rid:001 getByid,然后sadd rid:002 getCount,sadd rid:002 getall,sadd rid:002 insert,

现在两个角色都有了,现在001有两个角色跟相应的操作,那么他对应的操作权限有哪些?

我们就做一个全新的合并的模型,用到了sunionstore uid:007 rid:001 rid:002,合成结束,然后进行校验,有两种方式,一种是直接查看所有的数据,smembers uid:007,然后判断需要的在不在里面,在的话调用,不在的话,不能调用,还有一个sismember insert,回车,可以使用,这是两种不同的方式,第一种是数据存储方提供数据,然后将校验的业务放到操作的业务层去,第二种是将数据放到校验端,直接校验,两种形式看上去都很不错,但是第一种的耦合度相对低一点,数据跟业务是分散开的,第二种是把数据校验移到了数据这一段,也就是说在取数据的同时还加入了业务校验。

校验工作:redis提供基础数据还是校验数据

 

三、Tips10

Redis 应用于不同类型不重复数据的合并操作

简易提供基础数据,不要融合,应用于不同类型不重复数据的合并操作。

相关文章
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
NoSQL Redis
Redis set数据类型命令使用及应用场景使用总结
Redis set数据类型命令使用及应用场景使用总结
187 1
|
存储 NoSQL Redis
无序集合的利器:深入了解 Redis 的 Set 数据类型
在现代的应用程序中,对于处理独特值、快速判断成员关系等需求,无序集合是一种重要的数据结构。Redis,作为一款高性能的内存数据库,提供了多种数据类型来满足不同的需求。在本文中,我们将着重介绍 Redis 的 Set 数据类型,探讨其特性、用法以及在实际应用中的优势。
391 0
|
消息中间件 JSON NoSQL
Redis深度解析:核心数据类型之hash、list、set
Redis深度解析:核心数据类型之hash、list、set
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
292 0
|
存储 Java Redis
redis-学习笔记(Jedis set 简单命令)
redis-学习笔记(Jedis set 简单命令)
166 1
|
NoSQL Java Redis
redis-学习笔记(string , hash , list , set , zset 前置知识)
redis-学习笔记(string , hash , list , set , zset 前置知识)
174 0
redis-学习笔记(string , hash , list , set , zset 前置知识)
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
143 0
|
搜索推荐
redis-学习笔记(set)
redis-学习笔记(set)
132 0