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解决了什么问题:

  1. Token 完全由应用管理,所以它可以避开同源策略
  2. Tokentoken登录验证,避免冒用身份
  3. Token 是无状态的,可以在多个服务间共享

token的时效性问题:

面对极度敏感的信息,如钱或银行数据,那就根本不要在本地存放Token,只存放在内存中。这样,随着App关闭,Token也就没有了。

此外,将Token的时限设置成较短的时间(如1小时)。

对于像游戏或社交类App,时间可以更长些,可以设置为几个月。

java token redis生成算法_Redis实现单点登录相关推荐

  1. java token redis生成算法_如何访问 Redis 中的海量数据,服务才不会挂掉?

    来源:www.toutiao.com/i6697540366528152077 一.前言 有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况 ...

  2. C#session共享+redis_技术干货分享:基于SpringBoot+Redis的Session共享与单点登录

    categories: 架构 author: mrzhou tags: SpringBoot redis session 单点登录 基于SpringBoot+Redis的Session共享与单点登录 ...

  3. java 唯一id生成算法_分布式全局唯一ID生成方案之snowflake算法

    已有的方案: 可大致分为: 完全依赖关系/非关系型数据库递增的方案 完全不依赖数据源作为生成因子的UUID 半依赖数据源作为生成因子的snowflake 为什么推荐snowflake? 这个问题,可以 ...

  4. java的redis的作用_redis用途

    分布式锁(string) setnx key value,当key不存在时,将 key 的值设为 value ,返回1.若给定的 key 已经存在,则setnx不做任何动作,返回0. 当setnx返回 ...

  5. Demo_mmall v2.0 (四) Tomcat集群演进及使用Redis进行session重构实现单点登录

    小谈mmall架构演进 上回书和上上回书说到redis的用法还有在代码里怎么操作Redis数据库,学完了得用啊.怎么用啊?这得从项目架构说起了. mmall是一个简单的用SSM搭建起来的基本只能本地玩 ...

  6. 【Java】Java中用redis生成每天从0开始的业务ID

    场景 业务场景是生成一个唯一主键,主键格式为 字母前缀 + 年月日 + 自增数字(位数固定每天从0开始) 示例:TEST2020042900000015 思路 Redis Incr 命令将 key 中 ...

  7. java 唯一id生成算法_唯一ID生成算法剖析

    在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要求呢 ...

  8. java利用redis实现排行榜_Redis实现排行榜

    ZSet有序集合 redis的有序集合与集合一样也是String类型元素的集合,不允许有重复的元素. 每一个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的 ...

  9. Java工作笔记-Nginx配置IPHash(单点登录)

    拓扑图是这样的 iphash实现原理: 记录ip地址,生成iphash值,用这个值去绑定一台服务器,以后这个client的请求都会访问到绑定到的服务器中,这里生成iphash一般是通过Nginx进行生 ...

最新文章

  1. c语言实现java接口_五分钟带你了解Java是如何从容而优雅地实现接口数据校验
  2. Rational Rose打开方式
  3. 将阿拉伯数字转换为其对应的中文数字
  4. ​CSRankings年度更新,清华北大包揽AI领域前两名​ | AI日报
  5. CV领域论文常用单词汇总
  6. Nature:麻省理工人造「巨型原子」问世,量子处理和量子通信合二为一
  7. 实例解析linux内核I2C体系结构
  8. go程序打包:针对不同OS打包成不同的可执行文件
  9. 数据库开发——MySQL——基本操作
  10. 编写干净的测试–提防魔术
  11. php求数组交集的自定义函数,php数组交集函数
  12. qt的如何调整显示不为科学记数法_Excel操作技巧:如何将信息快速准确的录入Excel?...
  13. oracle数据库怎么锁表,oracle数据库表锁住
  14. Hibernate,JPA注解@Embeddable
  15. 微信里文件小程序导不出来_懒得打开电脑传文件?这四类小程序把这事解决了-小程序视频怎么发在电脑上...
  16. 四轮驱动移动机器人(4WD)运动模型及应用分析(图片版)
  17. mysql主从同步图
  18. 设计模式之Interpreter(解释器)
  19. Reflector7.5.2.1的Bug
  20. 离散数学及其应用(英文版 第7版)及答案

热门文章

  1. esp8266 rtos 开发环境 ubuntu_esp8266/32~资源帖[持续更新]
  2. 百兆以太网口通信速率_以太网 数据包速率计算方法
  3. openGauss与PostgreSQL分区策略语法测试
  4. 警示:强制关闭OGG进程触发bug致abended,详述处理过程
  5. 19C新特性:Voting Disk管理
  6. 18C 也不能避免 SQL 解析的 Bug
  7. 做数仓运维,你必须要认识这个眼观六路耳听八方的“能人”
  8. 解读 SSDB、LevelDB 和 RocksDB 到 GaussDB(for Redis) 的迁移
  9. Faiss源码剖析:类结构分析
  10. 数据库选型入门必读:如何在眼花缭乱的产品中挑出最适合业务的?