Redis探险 -《Redis开发与运维》笔记,精华分享。

最近看完了《Redis开发与运维》分享给你们。redis

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


用心之做。惟一我的认为能够再优化的是,监控软件的安装,不少配置都默认写在一些文件,致使自定义安装目录时带来部分不变,,,可是依然不能妨碍书自己的精品。大力推荐 ,不论是 redis 新手 老手,都能学到不少。缓存


Redis相关书籍里面内容属于特别上乘的。书中有好多之前没有发现和注意的细节点,并且内容的连贯性,深度等各个点都写的很是的好,书中也会说起不少开发人员对redis认知的盲区,该书能更好的让你作好redis相关的工做,在授之以鱼之时也授之以渔。最近也做为我强力推荐的一本redis好书在推荐给身边的朋友看。bash


初识Redis服务器

单线程面向快速执行场景的内纯数据库网络

特性

  1. 数据结构:string字符串(位图bitmaps,hyperloglog),hash哈希表,list列表,set集合,zset有序集合数据结构

  2. 单线程模型架构

  3. 持久化方式:RDB,AOF并发

  4. 主从复制运维


5种数据类型


String

字符串类型是Redis最基础的数据结构。首先键都是字符串类型的, 并且其余几种数据结构都是在字符串的基础上构建的。字符串类型的值实际能够是字符串(简单的字符串、复杂的字符串(JSON/XML等))、数字(整数、浮点数)、甚至是二进制、可是值最大不能超过512M。

List

相似 Java 中的 List ,按照插入顺序排序的字符串链表,在插入时,若是该键并不存在,Redis将为该键建立一个新的链表。与此相反,若是链表中全部的元素均被移除,那么该键也将会被从数据库中删除


Set
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,能够存储一些集合性的数据。好比在微博应用中,能够将一个用户全部的关注人存在一个集合中,将其全部粉丝存在一个集合。由于 Redis 很是人性化的为集合提供了求交集、并集、差集等操做,那么就能够很是方便的实现如共同关注、共同喜爱、二度好友等功能,对上面的全部集合操做,你还可使用不一样的命令选择将结果返回给客户端仍是存集到一个新的集合中。


Sorted Set

和Sets相比,Sorted Sets是将 Set 中的元素增长了一个权重参数 score,使得集合中的元素可以按 score 进行有序排列,好比一个存储全班同窗成绩的 Sorted Sets,其集合 value 能够是同窗的学号,而 score 就能够是其考试得分,这样在数据插入集合的时候,就已经进行了自然的排序。另外还能够用 Sorted Sets 来作带权重的队列,好比普通消息的 score 为1,重要消息的 score 为2,而后工做线程能够选择按 score 的倒序来获取工做任务。让重要的任务优先执行。


Hash
在 Memcached 中,咱们常常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(通常是 JSON 格式),好比用户的昵称、年龄、性别、积分等。这时候在须要修改其中某一项时,一般须要将字符串(JSON)取出来,而后进行反序列化,修改某一项的值,再序列化成字符串(JSON)存储回去。简单修改一个属性就干这么多事情,消耗一定是很大的,也不适用于一些可能并发操做的场合(好比两个并发的操做都须要修改积分)。而 Redis 的 Hash 结构可使你像在数据库中 Update 一个属性同样只修改某一项属性值


全局命令


  • keys *:查看全部键

  • dbsize:键的总数

  • exists key:查看键是否存在

  • del key:删除键

  • expire key seconds:键过时

  • type key::查看键的数据类型


单线程架构

命令到达服务端后,按队列依次单线程执行

纯内存存储、 IO多路复用技术、单线程架构是造就 Redis高性能的三个因素。

epoll I/O多路复用提高IO性能

redis快的缘由:

  1. 纯内存访问

  2. I/O多路复用:epoll

  3. 单线程避免线程竞争

keys全量遍历键可能致使redis阻塞,能够在从节点上执行,或者使用渐进式的scan代替(可能漏掉期间进行的更新)


应用场景

  • 缓存。

  • 排行榜系统。redis提供了列表和有序集合支持。

  • 计数器应用。

  • 社交网络。

  • 消息队列系统。redis提供了订阅发布和阻塞队列功能,虽然和专业的消息队列软件比不够强大,可是能够知足通常的消息队列需求

Pipeline概念


edis客户端执行一条命令分为以下四个过程:1)发送命令2)命令排队3)命令执行4)返回结果其中1到4称为 Round Trip Time( RTT,往返时间)。Pipeline(流水线)机制能将一组 Redis命令进行组装,经过一次 RTT传输给 Redis,再将这组 Redis命令的执行结果按顺序返回给客户端。Redis命令真正执行的时间一般在微秒级别,因此才会有 Redis性能瓶颈是网络这样的说法。复制代码

Re

  1. RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。


  2. AOF持久化方式则会记录每个服务器收到的写操做。在服务启动时,这些记录的操做会逐条执行从而重建出原来的数据。写操做命令记录的格式跟Redis协议一致,以追加的方式进行保存。


相关文章
相关标签/搜索