redis的优点和缺点

最近在项目有用到redis,所以在看redis的源码,接下来打算把redis的整体情况都介绍下,会逐渐写redis源码的相关功能,不过,做什么东西之前,都应该考虑它的优点和缺点,所以,先写redis的优点和缺点。

redis是一个key-value存储系统,数据存储在内存中,它的优点主要如下:

1. 支持多种数据类型

包括set,zset,list,hash,string这五种数据类型,操作非常方便。比如,如果你在做好友系统,查看自己的好友关系,如果采用其他的key-value系统,则必须把对应的好友拼接成字符串,然后在提取好友时,再把value进行解析,而redis则相对简单,直接支持list的存储(采用双向链表或者压缩链表的存储方式)。

2. 持久化存储

作为一个内存数据库,最担心的,就是万一机器死机,数据会消失掉。redi使用rdb和aof做数据的持久化存储。主从数据同时,生成rdb文件,并利用缓冲区添加新的数据更新操作做对应的同步。

3. 丰富的特性

pub/sub,key过期策略,事务,支持多个DB等。

4. 性能很好

由于是全内存操作,所以读写性能很好,可以达到10w/s的频率。公司有项目使用redis,目前的访问频率是80w/s,通过适当的部署,线上运行一切ok。

redis的缺点主要如下:

1. 由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。

2. 如果进行完整重同步,由于需要生成rdb文件,并进行传输,会占用主机的CPU,并会消耗现网的带宽。不过redis2.8版本,已经有部分重同步的功能,但是还是有可能有完整重同步的。比如,新上线的备机。

3. 修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。在这个过程中,redis不能

提供服务。

时间: 2024-10-12 18:17:49

redis的优点和缺点的相关文章

HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

HBase.Redis.MongoDB.Couchbase.LevelDB主流 NoSQL 数据库的对比 最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.Redis.MongoDB.Couchbase.LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比. 鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,

几款主流 NoSql 数据库的对比

最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.Redis.MongoDB.Couchbase.LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比. 鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,也不会有太多深入或底层原理探讨. 本文所引用的资料来源将示于本文尾部.所汇总的内容仅供参考,若有异议望指正

转:几款主流 NoSql 数据库的对比

转自:http://www.cnblogs.com/vajoy/p/5471308.html 最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.Redis.MongoDB.Couchbase.LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比. 鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,也不会有太多

使用 Redis 统计在线用户人数

在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同. 方案 1 :使用有序集合 每当一个用户上线时, 我们就执行 ZADD 命令, 将这个用户以及它的在线时间添加到指定的有序集合中: ZADD "online_users" <use

redis从入门到踩坑

背景 Redis在互联网项目的使用也是非常普遍的,作为最常用的NO-SQL数据库,对Redis的了解已经成为了后端开发的必备技能.小编对Redis的使用时间不长,但是项目中确两次踩中了Redis的坑,今天特意从基础知识层面到实战层面对Redis知识进行梳理,能够达到对Redis的知识体系有更全面和深入的理解. Redis的特点 优点: Key-Value类型的内存数据库,是加强版的Memcached. 整个数据库都是在内存中进行操作的,并且定期异步持久化数据到硬盘上进行保存. 在内存中进行操作,

阿里Java面试题剖析:为什么使用消息队列?消息队列有什么优点和缺点?

面试题 为什么使用消息队列?消息队列有什么优点和缺点?Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis.MQ,但是其实他并不知道自己为什么要用这个东西.其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过.没有对自己的架构问过为什么的人,一定是平时没有思考的人,面试官对这类候选人印象通常很不好.

redis集群和主从复制原理

Redis(内存数据库)是一个key-value存储系统(布式内缓存,高性能的key-value数据库).它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.为了保证效率,数据都是缓存在内存中.redis会周期性的把更新的

redis学习总结(二)

redis 持久化 交换 什么是持久化: 将数据从掉电易失的内存存放到能够永久存储的设备上 redis持久化方式:RDB(Redis DB) hdfs:fsimage(产生持久化镜像文件,以二进制格式文件的形式存储,对应reids的RDB文件) AOF(AppendOnlyFile)  hdfs: edit logs 关闭   (以客户端向redis发送指令的形式来存储文件 ,对应redis的AOF文件) RDB: 在默认情况下,redis将数据库快照保存在名字为dump.rdb的二进制文件中

ElastiCache for Redis 缓存策略

延迟加载 顾名思义,延迟加载 是一种仅在需要时将数据加载到缓存中的缓存策略.它的工作方式如下所述. Amazon ElastiCache 是一种内存中键-值存储,位于您的应用程序和其访问的数据存储(数据库)之间.当应用程序请求数据时,它会先向 ElastiCache 缓存发出请求.如果数据在缓存中且最新,则 ElastiCache 会将数据返回到应用程序.如果数据不存在于缓存中或已过期,则应用程序会从数据存储中请求数据.然后,数据存储会将数据返回给应用程序.应用程序接下来将从存储收到的数据写入缓