本文首发于cartoon的博客
转载请注明出处:cartoonyu.github.io/cartoon-blo…
- Redis 为什么是单线程的?
- 参考博客户
- Redis是基于内存的,瓶颈通常是内存大小以及带宽,与CPU没有太大联系
- 什么是缓存穿透?怎么解决?
- 参考地址
- 缓存穿透
- 缓存是key命中时数据写入内存的
- 缓存穿透是指利用不存在key进行缓存查询,当缓存不存在此key则到数据库查询,当请求量级比较大时,数据库有可能宕机
- 解决方法
- 在某些特定场景使用验证码
- 布隆过滤法
- 利用多种HASH算法对数据标识位进行缓存
- Redis 支持的数据类型有哪些?
- string
- 字符串
- hash
- 散列
- list
- 列表
- 内部使用双向链表实现
- 访问端元素较快,通过索引访问较慢
- set
- 无序集合
- 内部通过value为null的散列表实现
- zset
- 有序集合
- string
- Redis 支持的 Java 客户端都有哪些?
- 参考博客
- Jedis
- 优点
- 轻量简洁
- 支持连接池
- 支持pipelining、事务、LUA Scripting、Redis Sentinel、Redis Cluster
- 缺点
- 不支持读写分离
- 文档支持不足
- 优点
- Redisson
- 官方推荐
- 优点
- 采用非阻塞IO
- 支持异步请求
- 支持连接池
- 支持pipelining、LUA Scripting、Redis Sentinel、Redis Cluster
- 支持读写分离以及读负载平衡
- 可与Spring Session集成
- 文档支持充足
- lettuce
- 优点
- 线程安全
- 支持异步请求
- 采用非阻塞IO
- 支持哨兵模式
- 支持集群
- 优点