java token redis生成算法_Redis实现单点登录
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis与其他key-value存储有什么不同?
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
Redis 数据类型
Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Set(集合)
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
sadd 命令
添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
1. Token是什么
token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法与数据结构知识库")压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库
2. Token生成过程
请求过程:
1、客户端向服务器请求,发送用户名和密码
2、在sql中校验成功后,服务器根据用户信息通过加密生成token,token 是 key value 是用户信息,用户信息包括账号,token过期时间等,具体由服务器自定义。
3、服务器返回token给客户端
4、客户端存储token,以后的请求都带上这个token
5、用户在接下来的请求中 在请求头中带上 token 进行校验 看token是否存在,
或者token是否过期,如果过期,此时用户应该重新登陆
1、第一次登录,生成token
2、
3、登陆的过滤器操作 loginfilter
toekn解决了什么问题:
- Token 完全由应用管理,所以它可以避开同源策略
- Tokentoken登录验证,避免冒用身份
- Token 是无状态的,可以在多个服务间共享
token的时效性问题:
面对极度敏感的信息,如钱或银行数据,那就根本不要在本地存放Token,只存放在内存中。这样,随着App关闭,Token也就没有了。
此外,将Token的时限设置成较短的时间(如1小时)。
对于像游戏或社交类App,时间可以更长些,可以设置为几个月。
java token redis生成算法_Redis实现单点登录相关推荐
- java token redis生成算法_如何访问 Redis 中的海量数据,服务才不会挂掉?
来源:www.toutiao.com/i6697540366528152077 一.前言 有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况 ...
- C#session共享+redis_技术干货分享:基于SpringBoot+Redis的Session共享与单点登录
categories: 架构 author: mrzhou tags: SpringBoot redis session 单点登录 基于SpringBoot+Redis的Session共享与单点登录 ...
- java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法
已有的方案: 可大致分为: 完全依赖关系/非关系型数据库递增的方案 完全不依赖数据源作为生成因子的UUID 半依赖数据源作为生成因子的snowflake 为什么推荐snowflake? 这个问题,可以 ...
- java的redis的作用_redis用途
分布式锁(string) setnx key value,当key不存在时,将 key 的值设为 value ,返回1.若给定的 key 已经存在,则setnx不做任何动作,返回0. 当setnx返回 ...
- Demo_mmall v2.0 (四) Tomcat集群演进及使用Redis进行session重构实现单点登录
小谈mmall架构演进 上回书和上上回书说到redis的用法还有在代码里怎么操作Redis数据库,学完了得用啊.怎么用啊?这得从项目架构说起了. mmall是一个简单的用SSM搭建起来的基本只能本地玩 ...
- 【Java】Java中用redis生成每天从0开始的业务ID
场景 业务场景是生成一个唯一主键,主键格式为 字母前缀 + 年月日 + 自增数字(位数固定每天从0开始) 示例:TEST2020042900000015 思路 Redis Incr 命令将 key 中 ...
- java 唯一id生成算法_唯一ID生成算法剖析
在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要求呢 ...
- java利用redis实现排行榜_Redis实现排行榜
ZSet有序集合 redis的有序集合与集合一样也是String类型元素的集合,不允许有重复的元素. 每一个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的 ...
- Java工作笔记-Nginx配置IPHash(单点登录)
拓扑图是这样的 iphash实现原理: 记录ip地址,生成iphash值,用这个值去绑定一台服务器,以后这个client的请求都会访问到绑定到的服务器中,这里生成iphash一般是通过Nginx进行生 ...
最新文章
- c语言实现java接口_五分钟带你了解Java是如何从容而优雅地实现接口数据校验
- Rational Rose打开方式
- 将阿拉伯数字转换为其对应的中文数字
- ​CSRankings年度更新,清华北大包揽AI领域前两名​ | AI日报
- CV领域论文常用单词汇总
- Nature:麻省理工人造「巨型原子」问世,量子处理和量子通信合二为一
- 实例解析linux内核I2C体系结构
- go程序打包:针对不同OS打包成不同的可执行文件
- 数据库开发——MySQL——基本操作
- 编写干净的测试–提防魔术
- php求数组交集的自定义函数,php数组交集函数
- qt的如何调整显示不为科学记数法_Excel操作技巧:如何将信息快速准确的录入Excel?...
- oracle数据库怎么锁表,oracle数据库表锁住
- Hibernate,JPA注解@Embeddable
- 微信里文件小程序导不出来_懒得打开电脑传文件?这四类小程序把这事解决了-小程序视频怎么发在电脑上...
- 四轮驱动移动机器人(4WD)运动模型及应用分析(图片版)
- mysql主从同步图
- 设计模式之Interpreter(解释器)
- Reflector7.5.2.1的Bug
- 离散数学及其应用(英文版 第7版)及答案
热门文章
- esp8266 rtos 开发环境 ubuntu_esp8266/32~资源帖[持续更新]
- 百兆以太网口通信速率_以太网 数据包速率计算方法
- openGauss与PostgreSQL分区策略语法测试
- 警示:强制关闭OGG进程触发bug致abended,详述处理过程
- 19C新特性:Voting Disk管理
- 18C 也不能避免 SQL 解析的 Bug
- 做数仓运维,你必须要认识这个眼观六路耳听八方的“能人”
- 解读 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁移
- Faiss源码剖析:类结构分析
- 数据库选型入门必读:如何在眼花缭乱的产品中挑出最适合业务的?