`

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深度历险:核心原理和应用实践.png

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

    Redis数据库入门学习教程与面试经验总结(附PDF下载).pdf

    Redis 入门学习教程与面试经验总结 Redis 是一种开源的、基于内存的数据结构存储系统,可以用作数据库、消息中间件、缓存等。下面是 Redis 的一些基本概念和技术要点: 1. Redis 的基本数据结构:字符串、列表、...

    最新JAVA面试题总结之Redis.docx

    Redis 面试题总结 Redis 是一个基于内存的高性能 key-value 数据库,具有高性能、支持丰富的数据类型、支持事务、可用于缓存、消息、按 key 设置过期时间等特点。Redis 的主要缺点是数据库容量受到物理内存的限制,...

    redis快速入门详解.ppt

    Redis 总结: * Redis 是一款开源的、高性能的键值存储系统(key-value store)。 * Redis 的功能非常丰富,包括持久化、主从复制、事务支持、发布订阅、管道、虚拟内存等。 * Redis 的性能非常高,可以满足大多数...

    RedisInsight :Redis 官方可视化工具 下载 mac版

    RedisInsight是Redis官方出品的可视化管理工具,可用于设计、开发、优化你的Redis应用。支持深色和浅色两种主题,界面非常炫酷!可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能...

    tair与redis比较

    文档总结了tair与redis的有缺点,提供给大家应用多为参考

    redis个人总结

    从redis数据结构、项目应用、主从复制、数据存储角度结合资料总结,如何与mysql同步分析等

    RedisInsight :Redis 官方可视化工具 下载 Windows版

    RedisInsight是Redis官方出品的可视化管理工具,可用于设计、开发、优化你的Redis应用。支持深色和浅色两种主题,界面非常炫酷!可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能...

    Redis集群应用及命令详解

    详细介绍redis-cluster创建,redis-trib.rb命令,集群数据迁移等等,实例验证,自我总结。

    php Redis函数用法实例总结【附php连接redis单例类】

    本文实例总结了php Redis函数用法。分享给大家供大家参考,具体如下: 一直在拿PHP使用Redis,但是总感觉不牢靠,索性借这个时间空余一气呵成, 把PHP中所有操作到的Redis命令,几乎全敲个遍,包括它的返回值都是盯对...

    Redis——redis学习过程

    参考文献: ...学习过程: 1、Redis的安装 2、Redis的核心配置we年Redis.conf讲解文件 ...Redis知识点总结 缓存穿透、缓存雪崩,热点key 6、Redis高级配置 Redis5集群搭建 JAVA远程客户端RedisCluster实战应用 Spring

    Redis 在测试过程中的使用.docx

    * Redis Studio:Redis 的集成开发环境,用于开发和调试 Redis 应用程序。 八、总结 Redis 是一个功能强大且灵活的数据存储系统,在测试过程中可以用作缓存层、消息队列和会话存储等。使用 Redis 需要考虑数据的...

    redis数据类型及应用场景知识点总结

    redis数据类型及应用场景 Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 一、string 简介:Strings数据类型是最常用、简单的key-value类型,...

    redis参考手册

    该手册总结了redis基础及常见的应用场景,是新手入门比较适合的参考资料

    redis6.0基本数据结构源码.h

    总结《Redis深度历险:核心原理和应用实践》的基本数据结构源码 —— 对象结构

    Redis入门及集群环境搭建

    由于项目需求,需要尽快掌握redis 的使用,本文是笔者在学习过程中的笔记和总结。通过本文带领读者一步步揭开Redis的面纱,主要涉及了Redis概念、安装、集群和在应用程序中的使用。 1. 概述 2. 认识Redis 3. 安装...

    Cachecloud自动化运维之redis-cluster--应用运维

    cachecloud之应用运维,包括:节点上下线、故障迁移以及数据迁移,全实例验证,自我总结!

    基于python+SpringBoot+Mybatis+velocity仿知乎开发的sns+资讯web应用+redis+mysq

    基于python+SpringBoot+Mybatis+velocity仿知乎开发的sns+资讯web应用+redis+mysq,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 仿照知乎做的一个...

    2019年 Redis从入门到高可用 分布式实战教程

    12-5 应用接入.mp4 12-4 机器部署.mp4 12-3 _快速构建.mp4 12-2 _Redis规模化困扰.mp4 12-1 _目录.mp4 11-8 本章总结.mp4 11-7 热点key的重建优化.mp4 11-6 无底洞问题.mp4 11-5 缓存穿透问题.mp4 11-4 ...

Global site tag (gtag.js) - Google Analytics