一、版本
redis版本:3.2.8
jedis版本:2.9.0/2.7.2
二、项目使用
1、使用场景
用shiro做授权的时候,在用户登录之后,查询该用户可以访问的所有的资源的权限标识,将权限标识放到redis中进行存储。
2、redis存储 List<String> roleIds = applicationDao.queryRoleIds();
for (String id : roleIds) {
List<String> permissionList = applicationDao.queryPermissionsByRoleId(id);
String strPermissions = JacksonJsonUntil.objectToJson(permissionList);
flag= JedisCacheUtil.set("aum" + ":" + "Permissions" + ":" + schoolNo + ":" + id, strPermissions);
}
List<String> roleIds = applicationDao.queryRoleIds();
for (String id : roleIds) {
List<String> permissionList = applicationDao.queryPermissionsByRoleId(id);
String strPermissions = JacksonJsonUntil.objectToJson(permissionList);
flag= JedisCacheUtil.set("aum" + ":" + "Permissions" + ":" + schoolNo + ":" + id, strPermissions);
}
在redis中存放string类型
三、redis数据类型
1、redisObject
redis内部使用redisObject对象来表示所有的key和value,redis是使用C编写的,内部实现了一个struct结构体redisObject对象
/*
* Redis 对象
*/
typedef struct redisObject {
// 类型
unsigned type:4;
// 对齐位
unsigned notused:2;
// 编码方式
unsigned encoding:4;
// LRU 时间(相对于 server.lruclock)
unsigned lru:22;
// 引用计数
int refcount;
// 指向对象的值
void *ptr;
} robj;
本文介绍使用Shiro进行权限管理时如何利用Redis存储用户权限信息。具体实践包括查询并缓存用户的所有权限标识,使用Jedis操作Redis,并探讨了Redis内部数据结构redisObject的组成。
179

被折叠的 条评论
为什么被折叠?



