Redis - 常见面试题
# 基础
# 什么是 Redis?
Redis 是一个基于 C 语言开发的开源数据库(BSD 许可),与传统数据库不同的是 Redis 的数据是存在内存中的(内存数据库),读写速度非常快,被广泛应用于缓存方向。并且,Redis 存储的是 KV 键值对数据。
# 数据结构
# 常用数据结构
5 种基础数据结构 :
- String(字符串)
- List(列表)
- Set(集合)
- Hash(散列)
- Zset(有序集合)
3 种特殊数据结构 :
- HyperLogLogs(基数统计)
- Bitmap (位存储)
- Geospatial (地理位置)
# String 还是 Hash 存储对象数据更好呢?
- String 存储的是序列化后的对象数据,存放的是整个对象。Hash 是对对象的每个字段单独存储,可以获取部分字段的信息,也可以修改或者添加部分字段,节省网络流量。如果对象中某些字段需要经常变动或者经常需要单独查询对象中的个别字段信息,Hash 就非常适合。
- String 存储相对来说更加节省内存,缓存相同数量的对象数据,String 消耗的内存约是 Hash 的一半。并且,存储具有多层嵌套的对象时也方便很多。如果系统对性能和资源消耗非常敏感的话,String 就非常适合。
在绝大部分情况,我们建议使用 String 来存储对象数据即可!
笔记
Hash 粒度更小,可以局部修改,局部查询,但实际很少有这样的场景,都是整个对象序列化和反序列化,把对象序列化成 JSON 字符串用 String 存储即可,简单高效。
# 内存管理
上次更新: 2022/11/26, 11:13:29