精华内容
参与话题
问答
  • 高清带书签,代码文字皆可复制,是深入了解redis的必备书籍。
  • Redis开发与运维》,付磊,张益军编著,从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。(高清,带书签) 本书全面讲解Redis基本功能及其...

    《Redis开发与运维》,付磊,张益军编著,从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。(高清,带书签)

    本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,Redis高可用集群解决方案,Redis设计和使用中的问题,最后提供了一个开源工具:Redis监控运维云平台CacheCloud。

    展开全文
  • Redis开发与运维电子书fulei出版 链接: https://pan.baidu.com/s/12rlHhOKP7_72GE8a74lN1g 密码:eep2 复制这段内容后打开百度网盘手机App,操作更方便哦 感觉不错的竖起你的大拇指赞起来,啦~啦~啦~~~ ...

    Redis开发与运维电子书 fulei出版

    链接: https://pan.baidu.com/s/12rlHhOKP7_72GE8a74lN1g 密码: eep2

    复制这段内容后打开百度网盘手机App,操作更方便哦

    感觉不错的竖起你的大拇指赞起来,啦~啦~啦~~~

    展开全文
  • Redis开发与运维》读书笔记

    千次阅读 2018-05-17 09:22:21
    1、 数据结构字符串、哈希(hash)、列表(list)、集合(set)、有序集合 2、 Redis为什么单线程还能这么快第一,纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万...

    1、 数据结构

    字符串、哈希(hash)、列表(list)、集合(set)、有序集合

     

    2、 Redis为什么单线程还能这么快

    第一,纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的重要基础。

    第二,非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间

    第三,单线程避免了线程切换和竞态产生的消耗。

     

    3、慢查询配置

           主要两个参数为slowlog-log-slower-than和slowlog-max-len,慢查询不包含命令网络传输和排队时间,有必要将慢查询定期存放。

     

    4、持久化

           1)Redis提供了两种持久化方式:RDB和AOF。

    2)RDB使用一次性生成内存快照的方式,产生的文件紧凑压缩比更高,因此读取RDB恢复速度更快。由于每次生成RDB开销较大,无法做到实时持久化,一般用于数据冷备和复制传输。

    3)save命令会阻塞主线程不建议使用,bgsave命令通过fork操作创建子进程生成RDB避免阻塞。

    4)AOF通过追加写命令到文件实现持久化,通过appendfsync参数可以控制实时/秒级持久化。因为需要不断追加写命令,所以AOF文件体积逐渐变大,需要定期执行重写操作来降低文件体积。

    5)AOF重写可以通过auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参数控制自动触发,也可以使用bgrewriteaof命令手动触发。

     

    5、Redis阻塞

    1)阻塞的内在原因:确认主线程是否存在阻塞,检查慢查询等信息,发现不合理使用API或数据结构的情况,如keys、sort、hgetall等。关注CPU使用率防止单核跑满。当硬盘IO资源紧张时,AOF追加也会阻塞主线程。

    2)阻塞的外在原因:从CPU竞争、内存交换、网络问题等方面入手排查是否因为系统层面问题引起阻塞。

     

    6、内存

           当Redis内存不足时,首先考虑的问题不是加机器做水平扩展,应该先尝试做内存优化,当遇到瓶颈时,再去考虑水平扩展。即使对于集群化方案,垂直层面优化也同样重要,避免不必要的资源浪费和集群化后的管理成本。

     

    1)Redis实际内存消耗主要包括:键值对象、缓冲区内存、内存碎片。

    2)通过调整maxmemory控制Redis最大可用内存。当内存使用超出时,根据maxmemory-policy控制内存回收策略。

    3)内存是相对宝贵的资源,通过合理的优化可以有效地降低内存的使用量,内存优化的思路包括:

    ·精简键值对大小,键值字面量精简,使用高效二进制序列化工具。

    ·使用对象共享池优化小整数对象。

    ·数据优先使用整数,比字符串类型更节省空间。

    ·优化字符串使用,避免预分配造成的内存浪费。

    ·使用ziplist压缩编码优化hash、list等结构,注重效率和空间的平衡。

    ·使用intset编码优化整数集合。

    ·使用ziplist编码的hash结构降低小对象链规模。

     

    7、缓存设计

    1)缓存的更新策略

    低一致性业务建议配置最大内存和淘汰策略的方式使用。

    高一致性业务可以结合使用超时剔除和主动更新,这样即使主动更新

    出了问题,也能保证数据过期时间后删除脏数据。

     

           2)缓存粒度控制

     

           3)穿透优化

           4)雪崩优化

    a.在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

    b.可以通过缓存reload机制,预先去更新缓存,再即将发生大并发访问前手动触发加载缓存

    c.不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀

    d.做二级缓存,或者双缓存策略。A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期。

     

    8、最大内存及策略

     

     

     

     

     

    展开全文
  • Redis是一种基于键值对(key-value)的NoSQL数据库,很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、 ...

    近期准备讲解Redis,肚子里没点料怎么能行,遂找点资料充实充实自己,听说这本书还是非常不错的!

    一、初识Redis

    Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)hash(哈希)list(列表)set(集合)zset(有序集合)Bitmaps(位图)HyperLogLogGEO(地理信息定位)等多种数据结构和算法组成,因此 Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。

    特性:

    1. 速度快:读写性能10万/秒
    2. 基于键值对的数据结构服务器。
    3. 丰富的功能:(1)提供了键过期功能,可以用来实现缓存;(2)提供了发布订阅功能,可以用来实现消息系统;(3)支持Lua脚本功能,可以用Lua创造出新的Redis命令;(4)提供了简单的事务功能;(5)提供了流水线功能
    4. 简单稳定:源码少,单线程
    5. 客户端语言多
    6. 持久化:RDB和AOF
    7. 主从复制
    8. 高可用和分布式:哨兵(Sentinel)模式

    启动redis的三种方式:

    1. $ redis-sever
    2. $ redis-server --configKey1 configValue1 --configKey2 configValue2
    3. $ redis-server /opt/redis/redis.conf

    关闭redis

    1. $ redis-cli shutdown

    关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅的关闭方式

    二、API的理解和使用

    为什么单线程还能这么快?

    1. 纯内存访问
    2. 非阻塞I/O:Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间
    3. 单线程避免了线程切换和竞态产生的消耗

    Redis数据结构

    字符串

    字符串是Redis最基础的数据结构。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。

    setnx可以作为分布式锁的一种实现方案

    字符串比较典型的使用场景:

    1. 缓存功能,其中Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用
    2. 许多应用也会使用Redis作为计数的基础工具
    3. 共享Session
    4. 限速

    哈希

    列表

    列表(list)类型是用来存储多个有序的字符串,一个列表最多可以存储23212^{32} - 1个元素。在Redis中,可以对列表两端插入和弹出,还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。

    使用场景:

    1. 消息队列,通过Redis的lpush和brpop命令组合即可实现阻塞队列
    2. 文章列表

    lpush + lpop = Stack(栈)

    lpush + rpop = Queue(队列)

    lpush + ltrim = Capped Collection(有限集合)

    lpush + brpop = Message Queue(消息队列)

    集合

    集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。一个集合最多可以存储23212^{32}-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。

    集合类型比较典型的使用场景是标签(Tag)

    有序集合

    集合+score

    $ zrank key member:计算成员排名

    使用场景:排行榜系统

    键管理

    Redis从2.8版本后,提供了一个新的命令scan,它能有效的解决keys命令存在的问题。和keys命令执行时遍历所有键不同,scan采用渐进式遍历的方式来解决keys命令可能带来的阻塞问题。

    三、小功能大用处

    慢查询分析

    所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功能。

    展开全文
  • 2.1API的理解和使用 ...redis对外是五种数据结构,但是实际每种数据结构都有自己底层的内部编码实现,且是多种实现,redis会在合适的场景选择合适的内部编码, object encoding查询内部编码 redis使用单线程架
  • 1、可以通过object encoding命令查询内部编码 内部编码: string:raw int embstr(小于39) Hash:hashtable ziplist List:linked list ziplist Set :hashtable intset ...这样设计的有点:改进内部编码,对外的数据...
  • Redis开发与运维

    2019-11-03 00:07:23
    http://ifeve.com/%e6%88%91%e4%bb%ac%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e7%94%a8redis/ https://book.douban.com/subject/26971561/
  • Redis运维(做一个合格运维工程师)

    万次阅读 多人点赞 2019-08-23 13:06:20
  • Redis开发与运维(一)

    千次阅读 2017-09-12 20:40:40
    Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库。 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,...
  • 一、持久化 二、复制 ...五、Redis Cluster 5.1、数据分布理论 5.2、Redis数据分区 5.3、通信流程 5.3.1、Gossip消息 5.3.2、节点选择 5.4、请求路由 5.4.1、计算槽 5.4.2、槽节...
  • 一、redis特性 1、(1)速度快:C/内存/单线程架构;(2)丰富功能:建过期/订阅发布/Lua脚本创建新命令/简单事务/流水线(pipeline)功能;(3)持久化:RDB/AOF;(4)高可用:主从复制/哨兵/集群。 2、对外数据结构由内部...
  • 本人和同事撰写的新书《Redis开发运维》近期已经截稿,本书重点关注Redis开发运维中方方面面的问题,作者是来自搜狐视频一线的Redis开发和运维工程师-付磊和张益军。2016年3月,作者所在团队开源了Redis的私有云...
  • Redis开发与运维这本书的内容太多,网上没有找到检索,记录下来自己认为重要的信息片段,供检所使用。 书籍地址:https://github.com/singgel/Study-Floder 目录 redis可以做什么: redi...
  • 复制功能是高可用Redis的基础。 主从节点之间维护心跳(长连接)和偏移量检查机制,保证主从通信正常和数据一致 Redis复制过程是异步的,主节点完成后直接返回客户端,不等待从节点复制完成,可能存在从节点延时。 ...
  • 1.Redis通过复制功能实现主节点的多个副本。从节点可灵活地通过slaveof命令建立或者断开复制流程。 2.复制支持树状结构,从节点可以复制另一个从节点,实现一层层向下的复制流。Redis2.8之后复制的流程分为:全量...
  • dbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时 间复杂度是O(1)。而keys命令会遍历所有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,线上环境禁止...
  • Redis开发与一书勘误列表如下:https://cachecloud.github.io/2017/02/17/%E3%80%8ARedis%E5%BC%80%E5%8F%91%E4%B8%8E%E8%BF%90%E7%BB%B4%E3%80%8B%E5%8B%98%E8%AF%AF/ ...
  • 1、Redis开发与运维 (数据库技术丛书) PDF 下载 2、深度剖析Hadoop HDFS (大数据技术丛书) PDF 下载 关注微信公众号:职业开发者之路,百度云免费 下载 PDF 电子书籍,或直接访问:问风网:askwinds.com请添加链接...
  • 集群: Redis Cluster是Redis分布式解决方案 主要解决了单机内存、并发(OPS)、流量等瓶颈,采用Cluster架构方案达到负载均衡的目的,比如虽然redis官网说10万/s条命令,但是有些业务需要100万/每秒,机器内存16-...
  • 1、在实现异常统计时要注意,由于Redis调用API会分散在项目的多个地方,每个地方都监听异常并加入监控代码必然难以维护。这可以借助于日志系统,使用logback或者log4j.当异常发生时,异常信息最终会被日志系统收集到...
  • Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解 决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的。 一.数据分布 1 数据分布...
  • Redis开发与运维》读书笔记三

    千次阅读 2019-07-01 21:05:50
    集群运维 集群倾斜 集群读写分离 手动故障转移 数据迁移 缓存更新策略 穿透优化 无底洞优化 雪崩优化 热点key优化 Linux配置优化 flushall/flushdb误操作 安全的redis 处理bigkey 寻找热点key 之前...
  • Redis开发与运维_读书笔记

    千次阅读 2020-08-25 10:43:23
    dbsize命令在计算键总数时不会遍历所有键,而是直接获取redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1); 而keys命令会遍历所有键,所以它的时间复杂度是O(n),当redis保存大量键时,线上环境禁止使用...
  • Redis开发与运维视频教程,本套教程基本上涵盖了redis的开发和运维工作中大部分的知识点,从redis的原理到redis的使用,再到redis的常见使用场景,再到redis的集群故障处理。期望通过本套教程,可以帮助正在redis...
  • Redis开发与运维》,非常不错。 这里对书中的知识整理一下,方便自己回顾一下Redis的整个体系,来对相关知识点查漏补缺。 按照五点把书中的内容进行一下整理: 为什么要选择Redis:介绍Redis的使用场景使用...
  • ·当Redis阻塞时,线上应用服务应该最先感知到,这时应用方会收到大量Redis超时异常。常规做法是在应用方加入异常统计并通过邮件/微信/短信报警,以便及时发现通知问题。开发人员需要处理如何统计异常以及触发报警的...
  • Redis开发与运维之第五章持久化

    千次阅读 2019-01-06 17:33:21
    1. Redis提供两种持久化方式 : RDB 和AOF bgsave 命令的运作流程 RDB优点: 是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据快照非常实用于备份,全量复制等场景。比如每6小时执行bgsave备份,并...
  • Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。 3.2.1 redis-cli详解 第1章曾介绍过redis-cli,包括-h、-p参数,但是...
  • Redis开发与运维读书笔记》 数据结构模型 HyperLogLog本身不是新的一种数据结构,实际类型为字符串。而是一种 基数算法 。 通过HyperLogLog可以用极小的内存空间完成独立总数的计算,数据集可以是IP、Email、ID等...

空空如也

1 2 3 4 5 ... 20
收藏数 32,640
精华内容 13,056
关键字:

redis开发与运维

redis 订阅