mysql和redis常见面试题_redis相关面试题

二、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: 查看还有

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值