`
chenchao051
  • 浏览: 137549 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

redis做缓存时的一点优化

阅读更多

 

      最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。

      首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redis的read timeout exception.

我采取的一些办法:

1、使用pool来管理连接,并且适当放长timeout的时间,切记在每次使用完连接后放回池中。

 

2、把不同业务的缓存放到不同的redis实例上,效率有一定增加。

 

3、这个job访问的缓存有个特点,数据量不大,总共才几十兆,所以决定在每个node上使用map来保存,在reduce初始化阶段就读进去,效率有较大提升。

 

4、使用redis的pipeline,一次性将所有缓存拉过来,效率非常好。(注意这里需要你获取缓存值之间没有依赖)

 

此外,我也是用了hadoop的DistributedCache来处理,效果也还过得去,但是我始终对这个方式没好感,最大的体会是不灵活,特别是在有向缓存服务器反设值的时候,此方式无效。

 

分享到:
评论

相关推荐

    RedisRepository 分享和纠错

    综上所述,RedisRepository的分享和纠错主要涵盖了对Redis连接管理的优化、对Redis Sentinel主从切换的理解、读写分离的控制、Lua脚本的使用及代码结构的设计。这些知识点对于希望深入理解和有效使用Redis的开发者来...

    Redis Desktop Manager 2019.4 win x64

    在使用Redis Desktop Manager之前,需要注意一点:它依赖于Python环境才能运行。压缩包中的"python-3.7.4-amd64.exe"文件是Python 3.7.4的64位安装程序,意味着在安装Redis Desktop Manager之前,你需要先安装这个...

    Nosql之Redis技术

    由于其数据结构的多样性,Redis不仅可以作为数据库使用,还能用作缓存、消息中间件等。Redis 的性能非常高,单节点可处理超过10万次的写/读操作每秒,这一点得益于其简单的内存数据结构和高效的网络通信模块。而且,...

    Redis 64位 3.0.501

    5. **效率与速度**:Redis以其高速读写性能而闻名,它通过保持所有数据在内存中来实现这一点。在3.0.501版本中,Redis继续保持其高效率,能够处理每秒成千上万的请求,这使得它成为许多实时应用的理想选择,如缓存...

    redis-4.0.10.tar.gz.zip

    Redis的设计理念是快速响应和低延迟,它通过将所有数据存储在内存中来实现这一点。然而,考虑到数据持久化的必要性,Redis提供了多种持久化策略,以确保在系统崩溃或重启后仍能恢复数据。其中,RDB(Redis Database ...

    redis-2.8.3.tar.gz

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它作为一个键值数据库被广泛应用于缓存、消息中间件、计数器等多个场景。`redis-2.8.3.tar.gz` 是Redis 2.8.3版本的源代码压缩包,这个版本在Redis的发展史上具有...

    2020面试题总结Redis篇.pdf

    4. **缓存与过期策略**:Redis常被用作缓存解决方案,因为它允许设置每个键的过期时间,过期后数据会被自动删除。这有助于管理和优化内存使用。 #### 二、Redis的数据结构 Redis支持多种数据结构,这些数据结构的...

    SpringSession+Redis实现Session共享案例

    - Redis 是一个高性能的键值数据库,常用于缓存和消息代理。在这里,它作为Session数据的存储库,负责存储和检索Session对象。 - 使用Redis作为Session存储的好处包括:高速读写性能、持久化能力、支持多种数据...

    Redis面试专题及答案(上).pdf

    Redis是一种广泛使用的开源内存数据结构存储系统,通常用作数据库、缓存和消息代理。其设计理念是通过提供灵活的键值存储,能够支持包括字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)和散列...

    Laravel开发-laravel-redis-tagger

    `laravel-redis-tagger` 可能会利用这一点,对标签操作进行优化。 在实际开发中,`laravel-redis-tagger` 的使用可能涉及到阅读其文档,了解提供的类和方法,以及如何在模型中集成和调用这些功能。同时,还需要注意...

    jfinal redis cluster plugin-JFinal redis cluster集群插件

    需要注意的是,由于Redis Cluster的数据分布特性,插入和查询数据可能会涉及到多个节点,因此在设计业务逻辑时需要考虑到这一点。 附带的 "readme.txt" 文件可能是插件的使用指南或开发者留下的说明文档,里面可能...

    tomcat-redis-session-manager.zip

    5. **性能优化**:通过设置适当的Redis缓存策略,如LRU(最近最少使用)或TTL(生存时间),可以优化内存使用和避免数据过期。 **使用步骤** 1. 下载`tomcat-redis-session-manager`压缩包并解压。 2. 将相应的JAR...

    20_来聊聊redis的线程模型吧?为啥单线程还能有很高的效率?.zip

    在深入了解Redis的线程模型之前,我们先要明白一点:虽然Redis是单线程的,但它的性能并不低,反而在很多场景下表现出非常高的效率。这主要得益于其高度优化的I/O多路复用模型。 Redis的线程模型主要基于Epoll(在...

    redis-3.2.1.zip

    Redis是一个开源的、先进的键值存储系统,常用于数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这些数据结构设计使得Redis在处理复杂的数据操作时表现得非常高效。Redis-...

    云服务器环境安装,包括mysql,nginx,java,redis一站式安装

    4. **Redis**:是一个开源的、基于内存的数据结构存储系统,可用作数据库、缓存和消息中间件。它的高速读写性能和丰富的数据结构支持,使其在实时数据处理和高性能应用场景中大放异彩。 接下来,我们将按照以下步骤...

    前端开源库-sand-redis

    为了实现这一点,许多前端开发者选择与后端数据库进行直接交互,而Redis作为一款高性能的键值存储系统,常被用于缓存、会话管理等场景。本文将详细介绍一个专为前端设计的开源库——Sand-Redis,它是Sand.js框架的一...

    简单的RedisGo推荐引擎.zip

    它利用了Redis的高速缓存特性以及Go语言的并发优势,为实时推荐场景提供高效、可靠的解决方案。在这一压缩包中,我们主要关注以下几个核心知识点: 1. **Redis**: Redis是一个开源的、基于内存的数据结构存储系统...

    Using Redis As a Time Series Database: Why and How

    Redis 不仅可以用作缓存,还可以作为一个高性能的时间序列数据库。其丰富的数据类型使得它能够胜任许多高级任务。 ### 主要特点 - **高速读写**: Redis 的内存存储模型允许极快的读写速度。 - **持久化**: 支持 RDB...

Global site tag (gtag.js) - Google Analytics