目录:
- redis是什么?都有哪些使用场景?
- redis有哪些功能?
- redis和memecache有什么区别?
- redis为什么是单线程的?
- 什么是缓存穿透?怎么解决?
- redis支持的数据类型有哪些?
- redis支持的java客户端都有哪些?
- jedis和 redisson 有哪些区别?
- 怎么保证缓存和数据库数据的一致性?
- redis持久化有几种方式?
- redis怎么实现分布式锁?
- redis分布式锁有什么缺陷?
- redis如何做内存优化?
- redis淘汰策略有哪些?
- redis常见的性能问题有哪些?该如何解决?
redis是什么?都有哪些使用场景?
1、Redis是一款开源的、基于C语言编写的key value数据库,其数据读写基于内存,性能高。
2、Redis使用场景很多:
- 可作用于底层DB的缓存层
- 分布式锁
- 使用list做热点数据排行
- GEO做地理位置统计
- 等等。。。。。。
redis有哪些功能?
数据持久化、事务、发布订阅消息、主从复制、集群、哨兵等等。
redis和memecache有什么区别?
memecache目前仅支持k/v类型的数据存储,而redis支持的存储方式更加丰富。
memecache挂掉了数据就没了,redis有持久化策略。
。。。。。。
redis为什么是单线程的?
我们首先要知道Redis是一个高效的key/value数据库,且采用内存读写数据。
那么既然是内存读写数据的话单线程的效率肯定是最高的,因为多线程的本质就是CPU模拟出来多个线程的情况,这种模拟出来的线程势必会有上下文切换的消耗,所以对于内存系统来说没有上下文的切换就是最高效的。
参考:https://blog.csdn.net/world6/article/details/79381682
什么是缓存穿透?怎么解决?
1、什么是缓存穿透:缓存穿透查询一个根本不存在的数据,导致每次请求都不会命中缓存,请求都进到DB,导致DB压力过大而降低DB吞吐量,严重时可能会让DB宕机;一般是自身业务代码或数据出现问题,或是一个恶意工具、爬虫等造成的。
2、怎么解决:
- 缓存null值,将那些不可能存在的数据也做一层缓存,如缓存值为null;这样便不会将这些数据命中到DB层了。
- 布隆过滤器
redis支持的数据类型有哪些?
String、List、Hash、Set、Sorted Set。
可以再细说下编码以及这些数据类型的特性等等。
redis支持的java客户端都有哪些?
Jedis、Redisson、lettuce等等,官方推荐使用Redisson。
jedis和redisson有哪些区别?
简介:
- Jedis:redis的java客户端的实现,提供了比较全面的redis命令支持。
- Redisson:实现了分布式和可扩展的Java数据结构。
区别:
- 封装:jedis只是简单封装了redis的api库,它的方法和redis命令类似;redisson不仅封装了redis命令,还封装了更多的数据结构以及锁等功能。
- 灵活性:jedis对于redisson来说更加灵活。
怎么保证缓存和数据库数据的一致性?
redis持久化有几种方式?
redis怎么实现分布式锁?
redis分布式锁有什么缺陷?
redis如何做内存优化?
redis淘汰策略有哪些?
redis常见的性能问题有哪些?该如何解决?