1、Redis有哪些数据结构?
字符串String、词典Hash、列表、集合Set、有序集合SortedSet。
高级数据结构
HyperLogLog :基数统计
GEO :地理位置
PUB/SUB :发布订阅
2、Redis是单进程单线程的吗?
是的。 Redis是一种基于内存的单进程单线程KV数据库,基于C语言编写,不比单进程多线程的Memcached差。 早的理由:
)1)完全基于内存。 )2)数据结构简单,对数据的操作也简单。
)3)使用复用I/O模型(多个网络连接复用同一线程)。 利用select、poll、epoll同时观察多个网络流。 Redis实现了调用轻量的select、poll、epoll的通用接口,在linux中默认作为epoll安装。
3、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
kys正则表达式。 阻止服务器
扫描模糊查询。 不阻止服务器
4、大量key需要设置相同时间的有效期时,一般需要注意什么?
如果key的有效期限过于集中,则系统会在该时间进行计数,因此通常会给时间赋予随机值进行分散。
5、Redis如何做持久化?
)1) bgsave与aof合作,因为镜像全部持久化,需要花费时间,停机时会导致大量数据丢失。 福科。 redis通过fork创建子进程进行bgsave操作,父进程共享数据段,父进程继续提供读写服务,写脏页与子进程逐渐分离。
)2) aof进行增量持久化,与磁盘的同步依赖于sync属性的配置,可以写入1次同步。
6、Redis的同步机制?
主从连接后立即执行全量同步,全量同步后开始增量同步。
完全同步—连接后,服务器发出同步请求,主服务器运行BGSave并生成快照,然后将快照发送到辅助服务器,同时缓存其间执行的命令,并从服务器发送快照
增量同步:主服务器执行的命令发送到从服务器。