1.redis怎么保证原子性
redis 是单线程的事件循环,一个操作执行完了才执行下一个操作
2.redis常用的数据结构/数据类型(高频问点,熟!!!)
字符串(string)、列表(list)、无序集合(zset)、有序集合(set)、散列表(hash)
3.redis线程安全吗
redis采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全问题,不过对于需要依赖多个redis操作的复合操作来说,依然需要锁,而且有可能是分布式锁。
4.redis事务支持一致性吗
5.redis使用场景
1、热点数据的缓存:由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据。
2、限时业务的运用:redis中可以使用expire命令设置一个键的生存时间,到时间后redis会删除它。利用这一特性可以运用在限时的优惠活动信息、手机验证码等业务场景。
6.redis持久化:这个是重点!!!!
继续牛客第二页,在收藏里。
7 Redis 和 数据库是怎么保持一致性的(要详细分析)
8 redis事务
9 redis缓存淘汰策略
10.redis为什么快(如果做到高并发)?
11.redis中一些常用的指令
12.redis主从同步
13.redis缓存一致
14.Redis实现原理,为什么是单线程
15.Redis实现分布式锁
16.redis如何保证高并发
单机的redis几乎不太可能说QPS超过10万+,一般在几万。Redis通过主从架构,实现读写分离,主节点负责写,并将数据同步给其他从节点,从节点负责读,从而实现高并发。如果你的缓存要容纳的数据量很大,达到了几十g,甚至几百g,或者是几t,那你就需要redis集群,而且用redis集群之后,可以提供可能每秒几十万的读写并发。
17.渐进式rehash
redis中的字典使用哈希表作为底层实现。字典包含两个数组ht[0]和ht[1],数组中的每一个项都是一个哈希表,一般情况下,字典只使用ht[0],但是当ht0中的数据超过负载因子定义的阈值上限的时候,就需要吧ht0的数据转移到ht1,然后将ht0清空。Ht0的数据转移到ht1要进行rehash重新计算hash值确定位置,而这个操作并不是一次性进行的,因为这样会影响速度,redis将rehash分在了不同的步骤中,通过维护一个rehashidx来记录rehash在ht0中进行到了哪个位置,当index为-1时表示rehash结束。
18.redis哨兵