二、Redis:Remote Dictionary Server(远程数据服务),jedis.exists(token);//服务端判断redis中,是否存在token。
1.Redis怎么操作token
将token作为value,账户的id作为key,存储在redis中,设置key过期时间
每次登录都去redis中查询该账户的登录是否过期,没有过期则删掉原来的id,token,将新生成token作为value存入redis中。过期则没有该账户信息,则重新存入redis中
用户每次请求接口都需要验证是否在登录状态。(这里需要一个filter或则intercepter)获取token。解析token。将id从token中解析出来去。然后将用户的id作为key去redis中查询token。查询为空则表示登录过期。不为空则将解析出来的token和redis中的token作对比,如果相同,则用户状态正常则继续请求接口。如果不相同,则账号在其他设备登录.
2.Redis key的过期时间和永久有效分别怎么设置?
过期时间expire和永久有效persist命令。
persist命令:移除某个键的过期时间,使其永久不过期
有效时间设置四种处理策略
expire将key的生存时间设置为ttl秒[ɪkˈspaɪə(r)]
pexpire将key的生成时间设置为ttl毫秒
expireat将key的过期时间设置为timestamp所代表的的秒数的时间戳
pexpireat将key的过期时间设置为timestamp所代表的的毫秒数的时间戳
过期时间
删除过期时间的方法有三种:
1、删除这个key,使用del command
2、用set or getset 命令会将key的expiration清空,事实上set和getset命令是替换了key对应的value,所以key的过期时间也就不复存在。所以,需要注意的是:incr,LPUSH,HSET命令是不会改变key的过期时间的。原来是多久,这三条命令执行完之后还是多久。
3、使用persist命令清楚key的过期时间。
刷新过期时间:
多次调用expire key 100 可以刷新key的过期时间。
如何更新生存时间可以对一个已经带有生存时间的 key 执行EXPIRE命令,新指定的生存时间会取代旧的生存时间。过期时间的精度已经被控制在1ms之内,主键失效的时间复杂度是O(1),EXPIRE和TTL命令搭配使用,TTL可以查看key的当前生存时间。设置成功返回 1;当 key 不存在或者不能为 key 设置生存时间时,返回 0 。最大缓存配置在 redis 中,允许用户设置最大使用内存大小server.maxmemory默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redis崩溃,所以一定要设置。redis 内存数据集大小上升到一定大小的时候,就会实行数据淘汰策略。
返回值:
返回值:1代表过期时间被设置。
返回值:0代表key不存在或者timeout不能被设置。
过期键
过期键的处理就是把过期键删除,这里的操作主要是针对过期字段处理的。Redis中有三种处理过期键策略:定时删除、惰性删除和定期删除。
主从服务器删除过期键:RDB持久化、AOF持久化和复制功能。
redis如何清除过期keys方式:主动方式,和被动方式
1、主动方式:当client访问某一个key,redis会check key是否过期,如果已经过期,则被删除。定期删除
2、被动方式:不是所有的key都能被client访问。redis有一套默认的机制,如惰性删除
2、处理过期keys的命令
2.1、expire[ɪkˈspaɪə(r)]: 设置过期时间。格式是:expire key值 秒数
2.2、expireat: 设置过期时间,格式是:expireat key值 到期的时间戳
2.3、ttl: 查看还有