导图社区 redis
发一些个人学习的积累及自己遇到的面试题,有需要的同学可以参考一下。受个人能力的影响,若有错误欢迎提出来大家讨论。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
redis
redis如何保持与mysql一致性?
1.在给mysql写数据时同时写一份到redis。
2.使用定时任务定期将数据同步到redis。
写数据时mysql回滚不是产生脏数据?
若回滚同样在回滚时删除redis数据。
redis的存储模型是什么?
快表(quickList)
什么是缓存雪崩,什么是缓存击穿?
缓存雪崩指的是大量的在同一时刻同时失效,大量的请求直接打到mysql的情况。而缓存击穿指的是某一key在缓存不存在。请求直接打到mysql。
缓存雪崩与缓存击穿的解决办法是什么?
对于缓存雪崩,分别给数据随机加失效时间避免大量key在同一时间失效。同时对于缓存击穿可以在mysql层加锁,这样当缓存不存在时,只有一个线程进入mysql,然后这个线程拿到数据后将数据写入缓存,那么第二个线程就是从缓存取数据,避免了大量线程请求到mysql,避免mysql的连接池撑爆。
redis怎么调优?如果定义一个字串,那么给它分配多大的空间,扩容的机制是什么?
1.redis的调优。(1)key的长度不要太长,当然值的长度也不能太长,避免占太多内存。值不超过10KB,集合元素不超过5000个。(2) 不要用redis存复杂结构的数据。
2.redis分配的空间字符串默认是16个字节,但是是动态变化的。
3.扩容的机制是当大小小于1M时成倍增加,当字符串大于1M时,只增加1M,最多512M。
4.redis是单线程避免执行时间过长带来阻塞。
当redis存储的单条内容达到最大值512M时,怎么优化?
尽可能使用散列表存储。比如一个用户信息有用户名,用户id等。不要一项用一个key。要多项合起来用一个key。实际就是存对象。
redis为什么会快?
1.因为数据存在内存。同时采用key,value的存储结构,相对简结。
2.redis的底层采用跳表方式,访问数据比效快。
3.redis是单线程。没有锁的问题。
4.io多路复用。指的是多个网络连接在同一个线程。如epoll就是io多路复用技术。
set与setnx的区别是什么?
set是不存在就插入,存在就覆盖。setnx是不存在插入成功返回1,存在插入失败返回0。用来做分布式锁。
购物车redis用什么数据类型,点赞又用什么数据类型存储?
购物车用hashmap,点赞用hashset。
redis的跳表是什么?
链表上加上索引就是跳表。
10亿用户关注与被关注怎么设计?单个关注不能超过5000
用hashset具体是hashmap的key存项目名,value用hashset存用户id。定期将数据持久化到mysql。关注主表统计关注的人数,被关注的人数。关注明细表统计具体关注人的用户id。被关注明细表有被哪些人关注的用户id。主表(用户id,关注数,被关注数。)关注明细表(用户id,关注人用户id)被关注明细表(用户id,被关注用户id)。热数据存redis,冷数据存mysql。
redis的失效时间存在哪里?
redis和一个叫expire的hash表来存放失效时间戳。这个hash表中,键是key,值是失效时间。
redis的存储结构是什么?
数组加链表。
redis的集群有没有做内存限制?
在redis.conf里设置maxmemory 2gb。若不做限制会把服务器内存撑爆。
redis集群怎么做到数据同步?
redis集群数据同步是自动进行,无需人工干预。当有节点宕机时,会重新选举主节点,然后做数据同步。
redis的zset怎么做到有序?
通过跳表来实现。
什么是跳表?
跳表是一种复合的存储结构,它通过多级索引快速对数据进行新增,修改,删除,查找。
redis的键怎么命名?
项目名加 冒号加对象id(如商品88可以写成"goods:88")。