“FAQ:Redis”的版本间差异
跳到导航
跳到搜索
(→概念) |
(→数据类型) |
||
第37行: | 第37行: | ||
== 数据类型 == | == 数据类型 == | ||
=== Redis 的数据类型有哪些? === | === Redis 的数据类型有哪些? === | ||
一般文章都是以Redis只有 5 种数据类型,还有 Bitmaps、HyperLogLogs、Streams 等。 | |||
中文官网上的解释: | |||
:[[File:Redis 支持哪些数据类型.jpg|500px]] | |||
=== 一个字符串类型的值能存储最大容量是多少? === | === 一个字符串类型的值能存储最大容量是多少? === |
2021年5月11日 (二) 19:02的版本
关于
关于 Redis 的常见问题、面试问题。
概念
什么是Redis?
Redis 全称为:Remote Dictionary Server(远程数据服务),是一个基于内存且支持持久化的高性能 key-value 数据库。具备一下三个基本特征:
- 多数据类型
- 持久化机制
- 主从同步
Redis 有什么优点和缺点?
优点:
- 读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。
- 支持数据持久化,支持AOF和RDB两种持久化方式。
- 支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
- 数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构。
- 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
缺点:
- 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
- Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。【???】
- 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
- Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。
Redis 和 Memcached 的区别有哪些?
从以下8个方面来讲:
- Redis 和 Memcache 都是将数据存放在内存中,都是内存数据库。不过 Memcache 还可用于缓存其他东西,例如图片、视频等等。
- Memcache 仅支持key-value结构的数据类型,Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,hash等数据结构的存储。
- 虚拟内存– Redis 当物理内存用完时,可以将一些很久没用到的value 交换到磁盘分布式–设定 Memcache 集群,利用 magent 做一主多从; Redis 可以做一主多从。都可以一主一从
- 存储数据安全– Memcache 挂掉后,数据没了; Redis 可以定期保存到磁盘(持久化)
- Memcache 的单个value最大 1m,Redis 的单个value最大 512m。
- 灾难恢复– Memcache 挂掉后,数据不可恢复; Redis 数据丢失后可以通过 aof 恢复
- Redis 原生就支持集群模式, Redis3.0 版本中,官方便能支持Cluster模式了, Memcached 没有原生的集群模式,需要依赖客户端来实现,然后往集群中分片写入数据。
- Memcached 网络IO模型是多线程,非阻塞IO复用的网络模型,原型上接近于 nignx。而 Redis使用单线程的IO复用模型,自己封装了一个简单的 AeEvent 事件处理框架,主要实现类epoll,kqueue 和 select,更接近于Apache早期的模式。
数据类型
Redis 的数据类型有哪些?
一般文章都是以Redis只有 5 种数据类型,还有 Bitmaps、HyperLogLogs、Streams 等。
中文官网上的解释: