admin管理员组文章数量:1794759
java面试
什么是redis
redis是一个基于内存的高性能key-value数据库
redis特点
redis本质上是一个key-value类型的内存数据库,整个数据量统统加载在内存中操作,定期异步操作把数据库数据flush到硬盘上保存。性能出色,每秒处理超过10w次读写操作。支持保存多种数据结构,单个value最大限制是1GB。
主要缺点是数据库容量收到物理内存限制,不嫩用作海量数据的高性能读写,因此redis适合在较小数据量的高性能操作上
redis支持数据类型:
Strings
lists
sets
sorted set
hashes
为什么redis需要把所有数据放到内存中
redis为了达到最快读写速度将数据读到内存中,并通过异步的方式写入磁盘。redis具有快速和数据持久化的特征,如果不把数据放入内存,磁盘I/O速度严重影响性能。
redis是单进程单线程的
redis利用队列技术奖并发访问变为串行访问,消除了传统数据库串行控制的开销
分布式
redis支持主从模式。原则:master会将数据同步到slave,而slave不会将数据同步到master。slave启动时会连接master来同步数据
典型的分布式读写分离模型。利用master来插入数据,slave来检索服务
redis回收策略
- volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
- volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
- volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
- allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
- allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
- no-enviction(驱逐):禁止驱逐数据
redis常见性能问题和解决方案
1、master最好不要做持久化工作
2、如果数据比较重要,某个slave开启AOF备份数据,策略设置为每秒一次
3、为了主从复制的速度和连接的稳定性,master和slave最好在同一个局域网内
4、尽量避免在压力很大的主库增加从库
5、主从赋值不要用图状结构,单向链表结构更加稳定
redis适合场景
1、会话缓存
2、全页缓存
3、队列
4、排行榜、计数器
5、发布/订阅
本文标签: java
版权声明:本文标题:java面试 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686559593a81881.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论