Redis 是一个开源的内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
它支持多种类型的数据结构,如字符串(Strings),散列(Hashes),列表(Lists),集合(Sets),有序集合(Sorted Sets 或者是 ZSet) 与范围查询, Bitmaps,Hyperloglogs 和 地理空间(Geospatial)索引半径查询。 其中常见的数据结构类型有 String、List、Set、Hash、ZSet 这 5 种。
Redis 内置了复制(Replication),LUA 脚本(Lua scripting), LRU 驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence), 并通过 Redis 哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High Availability)。
Redis 也提供了持久化的选项,这些选项可以让用户将自己的数据保存到磁盘上面进行存储。根据实际情况, 可以每隔一定时间将数据集导出到磁盘(快照),或者追加到命令日志中(AOF 只追加文件),他会在执行写命令时,将被执行的写命令复制到硬盘里面。您也可以关闭持久化功能,将 Redis 作为一个高效的网络的缓存数据功能使用。
Redis 不使用表,他的数据库不会预定义或者强制去要求用户对 Redis 存储的不同数据进行关联。
数据库的工作模式按存储方式可分为:硬盘数据库和内存数据库。Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。
(1)硬盘数据库的工作模式:
(2)内存数据库的工作模式:
Redis 优势和优点
(1)性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
(2)丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
(3)原子 – Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。
(4)丰富的特性 – Redis 还支持 publish/subscribe(发布/订阅), 通知, key 过期等等特性。
Redis 与其他 key - value 缓存产品有以下三个特点:
(1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(2)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
(3)Redis 支持数据的备份,即 master-slave 模式的数据备份。
Redis 和 Memcached 的区别
Redis 常被拿来和高性能键值缓存服务器 Memcached 进行对比:这两者都可以用来存储键值对,彼此的性能也相差无几,但是 Redis 相对支持更多的数据类型,除了支持键值对之外,还支持 list,set,zset,hash 等数据结构的存储,而 Memcached 只能存储普通的字符串键。
Memcached 用户只能通过 APPEND 的方式将数据添加到已有的字符串的末尾,并将这个字符串当做列表来使用。但是在删除这些元素的时候,Memcached 采用的是通过黑名单的方式来隐藏列表里的元素,从而避免了对元素的读取、更新、删除等操作。相反的 Redis 的 List 和 Set 允许用户直接添加和删除元素。
Redis 和 Memcached 的其他区别如下:
1、Redis 和 Memcached 都是将数据存放在内存中,都是内存数据库。不过 Memcached 还可用于缓存其他东西,例如图片、视频等等;
2、Redis 不仅仅支持简单的 K/V 类型的数据,同时还提供 List,Set,Hash 等数据结构的存储;
3、虚拟内存–Redis 当物理内存用完时,可以将一些很久没用到的 Value 交换到磁盘;
4、过期策略–Memcached 在 set 时就指定,例如:set key1 0 0 8,即永不过期。Redis 可以通过例如 expire 设定,例如:expire name 10;
5、分布式–设定 Memcached 集群,利用 magent 做一主多从;Redis 可以做一主多从。都可以一主一从;
6、存储数据安全–Memcached 挂掉后,数据没了;Redis 可以定期保存到磁盘(持久化);
7、灾难恢复–Memcached 挂掉后,数据不可恢复; Redis 数据丢失后可以通过 AOF 恢复;
8、Redis 支持数据的备份,即 Master-Slave 模式的数据备份;
9、应用场景不一样:Redis 出来作为 NoSQL 数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached 适合于缓存 SQL 语句、数据集、用户临时性数据、延迟查询数据和 Session 等。
Redis 和其他数据库的区别
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于