大庆建设网站,互联网网站名字,wordpress 下载插件,吉利的广告公司名字目录Redis有哪些数据结构#xff1f;有大量key需要设置同一时间过期#xff0c;需要注意什么#xff1f;Redis分布式锁怎么回事#xff1f;假设Redis里有1亿个key#xff0c;其中有10万个key是以同一个固定前缀开头#xff0c;如何将它们全部找出#xff1f;如何用Redis…
目录Redis有哪些数据结构有大量key需要设置同一时间过期需要注意什么Redis分布式锁怎么回事假设Redis里有1亿个key其中有10万个key是以同一个固定前缀开头如何将它们全部找出如何用Redis做异步队列Redis是如何持久化的Redis有哪些数据结构 
String、Hash、List、Set、SortedSet还有HyperLoglogGeoPub/Sub。 
有大量key需要设置同一时间过期需要注意什么 
会引发的问题 大量的key过期时间设置过于集中时过期时间点一到redis可能会出现短暂的卡顿。严重情况下会出现缓存雪崩。 
怎么解决 一般在时间上加一个随机值使过期时间分散些。 
造成缓存雪崩的说明 ——场景电商首页经常使用定时任务刷新缓存。 ——特殊情况下可能大量数据失效时间特别集中如果在失效时间点涌入大量用户就有可能造成缓存雪崩。 
Redis分布式锁怎么回事 
先用setnx来争抢锁抢到后用expire给锁加一个过期时间来防止忘记释放锁。 ——特殊情况下setnx执行之后还没用expire之前进程意外crash或者重启维护了会导致这个锁永远得不到释放。 ——建议set指令有非常复杂的参数可以同时把setnx和expire合成一条指令。 
假设Redis里有1亿个key其中有10万个key是以同一个固定前缀开头如何将它们全部找出 
使用keys指令可以扫出指定模式的key列表。 ——特殊情况下如果这个Redis正在给线上的业务提供服务。由于Redis是单线程的特性keys指令会导致线程阻塞一段时间。线上服务会停顿直到keys指令执行完毕服务才能恢复。 ——建议使用scan指令scan指令是可以无阻塞的提取出指定模式的key列表。但是会有一定的重复概率需要在客户端做一次去重。但是整体花费时间会比keys指令长。 
如何用Redis做异步队列 
一般使用list结构作为队列rpush生产消息lpop消费消息。 ——特殊情况下当lpop没有消息的时候。 ——建议要适当sleep一会再重试或者使用blpop阻塞住直到有消息到来。 ——能不能生产一次消费多次使用pub/sub主题订阅者模式可以实现1:N的消息队列。 
Redis是如何持久化的 
RDB做镜像全量持久化AOF做增量持久化。 在redis重启实例时会使用RDB持久化文件重新构建内存再使用AOF重放近期的操作指令来实现完整恢复到重启前状态。 可以把RDB理解为一整个表全量的数据AOF理解为每次操纵的日志。 ——特殊情况下机器掉电数据会怎么样取决于AOF日志sync属性的配置。 ——建议不要求性能情况下每条写指令时都sync一下磁盘就不会丢失数据高性能要求下一般使用定时sync比如1秒一次这时候最多丢失1秒的数据。 
参考来源掘金-敖丙-redis基础