1、Redis有哪些数据结构?

字符串String、字典Hash、列表List、集合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是以某个固定的已知的前缀开头的,如果将它们全部找出来?

keys + 正则表达式。会阻塞服务器

scan  模糊查询。不会阻塞服务器

4、如果有大量的key需要设置同一时间过期,一般需要注意什么?

key过期时间太集中会导致系统在那个时间卡顿,因此一般在时间上加一个随机值,使其分散。

5、Redis如何做持久化?

(1)bgsave做镜像全量持久化,耗时长,停机时会导致大量数据丢失,因此要配合aof。fork & cow。redis通过fork创建子进程来进行bgsave操作,父子进程共享数据段,父进程继续提供读写服务,写脏的页面逐渐和子进程分离开来。

(2)aof做增量持久化,与磁盘的同步取决于sync属性的配置,可以写一条同步一次。

6、Redis的同步机制?

主从刚连接时做全量同步,在全量同步后开始做增量同步。

全量同步:在连接后,从服务器发出同步请求,主服务器执行BGSave生成快照,将快照发送给从服务器,同时将这段时间执行的指令缓存起来,从服务器接收快照后,丢弃所有旧数据,载入快照,主服务器将缓冲区的命令发送给从服务器执行。

增量同步:主服务器执行的命令都会发送给从服务器执行。

原文链接:https://blog.csdn.net/L_BestCoder/article/details/79374101

最新文章

  1. JAVA语言中的修饰符
  2. jQuery对象与DOM对象之间的转换方法
  3. redis源码系列-数据结构(adlist/ziplist/dict)
  4. Git:错误:error:src refspec master does not match any
  5. u Calculate e阶乘相加求和问题
  6. HDU 3999 The order of a Tree
  7. app framework map及ajax方法
  8. 与谷歌测试工程师的对话 - from Google Testing Blog
  9. Delphi中关于资源释放(Free,Relealse,FreeAndNil)
  10. UVa1328 - Period(KMP找最短循环节)
  11. 如何将java web项目上线/部署到公网
  12. HDU 1226 超级密码 (搜素)
  13. 读改善c#代码157个建议:建议10~12
  14. T-SQL 临时表、表变量、UNION
  15. 石子合并(NOI1995)
  16. Python Tkinter小试
  17. 亿级SQL Server运维的最佳实践PPT分享
  18. bug狩猎
  19. centos 7 秘钥分发
  20. AVL树平衡旋转详解

热门文章

  1. 解决 win7 win10 等 64位 支持access数据库问题
  2. keeplived高可用集群
  3. Docker部署CTF综合性靶场,定时刷新环境
  4. jQuery笔记(一)
  5. ajax的五种状态
  6. 【题解】GRE Words(UVA1502)
  7. AcWing 322. 消木块
  8. 敏捷开发 | DSDM 在非 IT 领域也同样适用?
  9. 谷歌SameSite策略
  10. JavaScript中遍历的几种方法