`

Redis应用总结

阅读更多

      首先弄清楚Redis是什么?在实际的应用开发中,能帮我们解决什么问题?应用中要注意什么样的问题,避免乱用。

      Redis其实是一个内存数据库-noSql数据库,数据储存就是key-value。你可以简单的把它看成就是一个map结构。Redis是单线程,所以单个命令请求操作是线程安全的,如果想一次执行多个命令并且要求执行过程中不被打断,则使用事物(用multi来开启,exec来提交)。支持的数据结构比memcached多,有string\list\hash\set\zset五种结构。在应用开发中,我们通常会用Redis来做分布式缓存、流量限制、并发访问控制和分布式锁等。用作分布式缓存的话,一般要考虑的因素是什么数据适合缓存,缓存数据要考虑命中率,如果命中率低 ,那边缓存中作用就适得其反。缓存数据要考虑内存的优化,这样能缓存更多的数据(redis提供的内部编码能优化存储,但其他条件是遵循内部编码的原则)。既然是分布式缓存,那么必然要考虑高可用性。在实际的开发中,redis高可用方案有很多,不过redis自身也提供集群解决方案,我更倾向于redis自身的高可用方案,因为其去中心化,缓存数据分片(可以根据key缓存到不同实例的不同slot)。但这里面有些地方需要注意,因为数据被分片,所以使用多key操作或者集合操作命令的时候,不同slot下面的数据是不能操作的,必须保证在多key或者集合运算的数据都在同一个slot下面。那么如何把这些数据放在同一个slot下面?解决方案就是使用hash tag。我们使用redis集群无非是提高系统的高可用、负载均衡。所以在缓存数据的时候结合业务自身的特点,尽量保证数据均匀发布在所有的slot上面。在使用redis的时候,为了减少多次交互,我们尽量使用pipeline(这操作没有原子特性),一次提交多个命令。当然如果使用了redis集群,那得注意你操作的数据是否都在同一个slot里面(说白了你是否使用了hash tag)。有时候我们也会借助lua脚本来协助我们操作redis,为什么要使用lua脚本,因为该脚本能在服务端执行,并保证操作的原子性,但脚本中不适合复杂的业务,业务业务复杂会占用服务器资源时间过长,并发量大的情况下,很容易引起雪崩。

分享到:
评论

相关推荐

    Redis应用场景--Redis作者谈Redis应用场景

    ### Redis应用场景解析 Redis作为一款开源的键值存储系统,凭借其高性能、低延迟的特点,在众多应用场景中展现出独特的价值。本文将围绕Redis作者@antirez分享的几个典型应用场景进行深入探讨,旨在帮助读者更好地...

    实用手册redis全面总结

    ### 实用手册:Redis全面总结 #### 一、Redis简介 **Redis**(Remote Dictionary Server)是一种开源的、高性能的键值(Key-Value)存储系统。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...

    Redis学习总结

    Redis是一个开源的高性能键值存储数据库,它支持多种类型...而随着对Redis的进一步学习,例如学习其持久化机制、事务处理、发布订阅、Lua脚本以及Redis模块系统等,可以更深入地理解和应用这一强大的数据存储解决方案。

    Redis笔记总结的一些资料

    总的来说,Redis是一款强大且灵活的键值存储系统,其持久化特性、丰富的数据结构和便捷的命令接口使其在许多现代应用程序中成为不可或缺的部分。理解并熟练掌握Redis的使用,对提升应用程序的性能和功能有很大帮助。

    Redis个人总结

    在个人总结中,我们可以看到Redis主要使用了五种数据结构,分别是String、List、Set、Hash和ZSet,每种都有其独特的特性和用途。 1. String(字符串,数值) String是最基础的数据类型,可以存储简单的键值对,值...

    2020面试题总结Redis篇.pdf

    Redis作为一种高性能的键值对存储系统,在IT行业中被广泛应用。它的优势主要包括: 1. **高速访问**:由于数据存储在内存中,Redis提供了类似HashMap的快速访问特性,使得读写操作的时间复杂度接近O(1),即几乎恒定...

    Redis实战.pdf

    ### Redis实战知识点总结 #### 一、Redis简介与特点 **Redis**(Remote Dictionary Server)是一种开源的内存数据结构存储系统,用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串(strings)、哈希...

    redis有关学习总结

    在实际应用中,Redis还可以用于实现队列(通过list数据类型模拟)、计数器(通过 incr 操作)、会话存储、社交网络的用户关系管理(利用set和sorted set)等。 总的来说,Redis是一个强大的工具,具有广泛的应用...

    python操作redis方法总结

    Python操作Redis的方法主要涵盖连接Redis、...总的来说,Python操作Redis提供了丰富的接口,使得在Python应用程序中集成Redis变得简单而高效。了解并熟练掌握这些方法,能帮助我们更好地利用Redis来处理和存储数据。

    redis应用案例_缓存歌曲最新评论.zip

    本案例重点探讨了如何利用Redis作为缓存来存储歌曲的最新评论,以此提升应用程序的响应速度和用户体验。下面将详细阐述Redis的应用场景、缓存策略以及Java与Redis和MySQL的交互。 **一、Redis简介** Redis(Remote ...

    redis使用总结

    ### Redis 使用总结 #### 一、Redis 概述与特性 Redis 是一款开源的高性能键值(Key-Value)存储系统,常被用作数据库、缓存和消息中间件。其默认端口为 6379。Redis 支持多种数据结构如字符串(Strings)、列表(Lists...

    Redis实践与总结

    ### Redis实践与总结 #### 一、Redis简介与应用场景 Redis是一种开源的内存中的数据结构存储系统,可以作为数据库、缓存以及消息中间件使用。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    **Redis与LabVIEW的整合:RedisinLabVIEW和LabVIEWRedis工具包** Redis是一个高性能的键值数据库,常用于数据缓存和消息队列。...通过深入理解和实践,开发者可以构建出满足各种需求的LabVIEW-Redis应用程序。

    Redis geo操作总结.pdf

    在实际应用中,Redis的地理位置数据类型可以用于很多场景,例如基于位置的社交应用、地理位置查询服务等。这些功能依赖于底层的Geohash算法,将地理位置编码成字符串形式,并存储在Redis的有序集合(sorted set)中...

    在ASP.NET MVC中使用Redis 的Demo:通过Redis实现用户登陆,并保持登陆状态。

    总结,这个Demo展示了如何在ASP.NET MVC应用中利用Redis实现用户登录、保持登录状态、设置过期时间和监测在线用户。通过使用Redis,我们可以构建更健壮、高可用的系统,提高用户体验。记得在实际部署时,考虑Redis的...

    redis之相关理解分析以及面试问题总结

    总结,Redis是高效、功能丰富的键值存储系统,理解和掌握其核心概念、存储机制和应用场景,对于提升系统性能和解决实际问题具有重要意义。在面试中,对Redis的深入理解往往能展现出开发者对高性能系统设计的洞察力。

    Redis使用教程,详解

    Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 NoSQL 概述 NoSQL,即...

    Redis深度历险:核心原理和应用实践.png

    总结《Redis深度历险:核心原理和应用实践》的xmind图

    Redis 2.2.4学习总结.ppt

    Redis 在实际应用中,如在酷米客的使用中,可能遇到的问题包括内存管理、数据持久化策略的选择、主从复制的实现、以及如何有效地利用其高级功能,如事务、发布订阅等。通过深入理解和优化这些方面,可以充分发挥...

Global site tag (gtag.js) - Google Analytics