`
zhaomengsen
  • 浏览: 207323 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Redis数据库的使用场景介绍(避免误用Redis)

阅读更多
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/122.html?1455854235
Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。但是 Redis 不是银弹,有很多适合它解决的问题,但是也有很多并不适合它解决的问题。另外,Redis 作为内存数据库,如果用在不适合的场合,对内存的消耗是很可观的,甚至会让系统难以承受。
我们可以对系统存储使用的数据以两种角度分类,一种是按数据的大小划分,分成大数据和小数据,另一种是按数据的冷热程度划分,分成冷数据和热数据,热数据是指读或写比较频繁的数据,反之则是冷数据。
可以举一些具体的例子来说明数据的大小和冷热属性。比如网站总的注册用户数,这明显是一个小而热的数据,小是因为这个数据只有一个值,热是因为注册用户数随时间变化很频繁。再比如,用户最新访问时间数据,这是一个量比较大,冷热不均的数据,大是数据的粒度是用户级别,每一个用户都有数据,如果有一千万用户,就意味着有一千万的数据,冷热不均是因为活跃用户的最新访问时间变化很频繁,但是可能有很大一部非活跃用户访问时间长时间不会发生变化。
大体而言,Redis 最适合处理的是小而热,而且是写频繁,或者读写都比较频繁的热数据。对于大而热的数据,如果其它方式很难解决问题,也可以考虑使用 Redis 解决,但是一定要非常谨慎,防止数据无限膨胀。原因如下:
首先,对于冷数据,无论大小,都不建议放在 Redis 中。Redis 数据要全部放在内存中,资源宝贵,把冷数据放在其中实在是一种浪费,冷数据放在普通的存储比如关系数据库中就好了。
其次,对于热数据,尤其是写频繁的热数据,如果量比较小,是最适合放到 Redis 中的。比如上面提到的网站总的注册用户数,就是典型的 Redis 用做计数器的例子。再比如论坛最新发表列表,最新报名列表,可以控制数量在几百到一千的规模,也是典型的 redis 做最新列表的使用方式。
另外,对于量比较大的热数据(或者冷热不均数据​),使用 Redis 时一定要比较谨慎。这种类型数据很容易引起数据膨胀,导致 Redis 消耗内存巨大,让系统难以承受。薄荷的一个惨痛教训是把用户关注(以及被关注)数据放在 Redis 中,这是一种数据量极大,冷热很不均衡的数据,在几百万的用户级别就占用了近 10 GB左右内存,让 Redis 变得难以应付。应对这种类型的数据,可以用普通存储 + 缓存的方式。
如果用对了地方,比如在小而热的数据情形,Redis 表现很棒,如果用错了地方,Redis 也会带来昂贵的代价,所以使用时务必谨慎。
相关热词搜索:

分享到:
评论

相关推荐

    c++ 操作redis数据库

    在IT行业中,C++与Redis的结合使用是一个常见的实践,特别是在需要高性能数据存储和处理的场景下。Redis是一个开源的、基于内存的数据结构存储系统,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等,...

    redis 数据库 介绍.ppt

    redis 数据库 介绍

    C#实现访问Redis数据库

    本文将详细讲解如何使用C#语言来实现对Redis数据库的访问,以便充分利用其高效特性来提升应用性能。 首先,要实现C#访问Redis,我们需要一个客户端库。StackExchange.Redis是.NET开发者广泛使用的官方推荐库,它...

    Redis数据库从入门到实践.pptx

    Redis数据库的应用场景: * 使用Redis实现缓存:通过使用Redis的字符串类型,将常用的查询结果存储在缓存中,减少数据库查询次数,提高系统性能。 * 使用Redis实现会话管理:通过使用Redis的字符串类型和哈希表功能...

    SpringBoot使用注解实现 Redis 数据库的切换.zip

    这样,我们就能灵活地在多个Redis数据库之间切换,满足不同场景的需求。在实际开发中,还可以结合Spring的其他特性,如AOP(面向切面编程)来实现更复杂的逻辑,比如在特定的请求条件下自动切换数据库。

    MYSQL、ORACLE、SQLSERVER、Postgres、Redis数据库等保测评作业指导书V1.1

    通过Redis-cli命令行连接,用户可以使用Redis命令行工具连接到Redis数据库,而通过Redis Desktop Manager连接,用户可以使用图形化界面连接到Redis数据库。 (2) Redis数据库测评基本查询语句 Redis数据库测评基本...

    python的redis数据库连接与使用

    Python 的 Redis 数据库连接与使用 Python 的 Redis 数据库连接与使用是指通过 Python 语言对 Redis 数据库进行连接和操作的过程。Redis 是一个基于内存的 key-value 存储系统,可以存储多种数据类型,包括字符串、...

    C加载使用Redis数据库

    本文将详细介绍如何在C或C++环境中使用Redis数据库,并通过动态库文件实现跨程序调用。 首先,我们要理解Redis的基本概念。Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它支持数据结构如...

    C++ 操作Redis数据库VS2013测试Demo及redis sdk

    【C++操作Redis数据库】 Redis是一个高性能的键值对存储系统,常被用作数据库、缓存和消息中间件。在C++中与Redis交互,通常需要借助客户端库,这里提到的是`hiredis`,这是一个轻量级、高效的纯C语言实现的Redis...

    Redis 数据库的键值设计

    文档描述了Redis 数据库的键值设计,个人感觉很好!

    e语言-redis数据库支持库

    本文将详细介绍这个支持库的功能和使用方法。 一、Redis简介 Redis是一款开源、基于内存、支持网络、可持久化的日志型、Key-Value数据库。它提供多种数据结构如字符串(strings)、哈希(hashes)、列表(lists)...

    redis数据库服务端的

    redis数据库服务器 的 exe 文件 -

    redis数据库

    Redis是一种广泛使用的开源内存数据结构存储系统,它可以作为数据库、缓存和消息中间件使用。作为一种NoSQL(Not Only SQL)数据库,Redis提供了非关系型数据存储的能力,特别适用于需要高速数据访问和处理的应用...

    redis数据库windows版。

    Redis是一款开源的、高性能的键值对存储系统,主要用于数据缓存、消息中间件和数据库。在Windows环境下,Redis提供了一套完整的安装和运行环境,让开发者能够在Windows操作系统上便捷地使用Redis服务。 1. Redis...

    MYSQL、ORACLE、SQLSERVER、Postgres、Redis数据库等保测评作业指导书

    MYSQL、ORACLE、SQLSERVER、Postgres、Redis数据库等保测评作业指导书

    php操作redis数据库常见方法实例总结

    Redis作为一个高性能的键值存储数据库,常被用于缓存、消息队列、排行榜等场景。PHP是广泛使用的服务器端脚本语言,因此结合PHP和Redis,对于Web开发人员来说,是非常实用的技术组合。 描述中提到了基本安装、连接...

    redis-copy, 将一个redis数据库复制到另一个数据库.zip

    redis-copy, 将一个redis数据库复制到另一个数据库 RedisCopy这个工具提供了一种将一个redis数据库的内容移动到另一个redis数据库的方法。 代码是由包含在redis源代码中的 redis-copy.rb 脚本插件激发的,但目标是...

    redis可视化工具 RedisInsight windows安装包在windows系统上可视化查看redis数据库

    在windows系统上可视化查看redis数据库 redis可视化工具 RedisInsight是Redis Labs提供的一个用于管理和监控Redis数据库的图形用户界面(GUI)工具。它为用户提供了直观的界面,以便更轻松地执行各种Redis数据库操作...

Global site tag (gtag.js) - Google Analytics