3 mytt_10566

尚未进行身份认证

暂无相关描述

等级
博文 166
排名 1w+

Redis学习笔记 - 过期键删除策略

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异一、过期键删除策略一个键过期了,什么时候它会被删除?可能有以下三种策略:定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作惰性删除:放任键过期不管,每次从键空间获取键时,检查取得的键是否过期,如...

2019-07-21 23:07:32

Redis学习笔记 - 内存回收、对象共享、对象的空转时长

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异一、内存回收C语言不具备自动内存回收功能,所以Redis在自己的对象系统中构建了一个引用计数(referencecounting)计数实现的内存回收机制。通过这一机制,程序可以通过跟踪对象的引用计数信息,在适当时候自动释放对象并进行内存回收。每个对象的引用计数信...

2019-07-21 23:06:41

Redis学习笔记 - 类型检查与命令多态

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异Redis中用于操作键的命令可以分为2种类型:对任何类型的键执行,如del、expire、rname、type、object等命令对特定类型的键执行,如set、get、append、strlen等命令只能对字符串(string)执行注:如果对字符串键执行lle...

2019-07-21 23:05:47

Redis学习笔记 - 有序集合对象zset

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异有序集合对象的编码是:ziplistskiplist一、有序集合对象的编码1.1ziplist编码ziplist编码的有序集合对象使用压缩列表作为底层实现,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员(member),第...

2019-07-08 23:52:13

Redis学习笔记 - 集合对象set

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异集合对象的编码是:intsethashtable一、集合对象的编码1.1intset编码intset编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合里面。创建一个使用intset编码的集合对象:redis>s...

2019-07-08 23:51:45

Redis学习笔记 - 哈希对象hash

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异哈希对象的编码是:ziplisthashtable一、哈希对象的编码1.1ziplist编码ziplist编码的哈希对象使用压缩列表作为底层实现,当有新的键值对要加入哈希对象时,程序会先将保存了键的压缩列表推入到压缩列表表尾,然后再将保存了值的压缩列表...

2019-07-08 23:51:17

Redis学习笔记 - 列表对象list

参考:<<Redis设计与实现>>注:这本书是基于Redis3.0版本写的,和后面的版本有点差异列表对象的编码是:ziplistlinkedlist一、列表对象的编码1.1ziplist编码ziplist编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点(entry)保存了一个列表元素。示例:插入三个元素:redis>rpus...

2019-07-08 23:50:47

Redis学习笔记 - 字符串对象

参考:<<Redis设计与实现>>字符串对象的编码可以是int、embstr或raw。如果一个字符串对象保存的是整数值,并且可以用long类型来表示,那么就会将整数值赋值给字符串对象结构里的ptr属性,以及将字符串对象的编码设置为int。如果保存的是字符串,并且这个字符串值的长度大于44字节,那么字符串对象将使用SDS(简单动态字符串)保存,并将编码设置为ra...

2019-07-03 23:40:09

spring - AOP(6)- 记录后台管理员操作日志

一、需求1.1问题后台一些涉及到新增、编辑、删除等敏感操作的需要记录下操作日志,包含操作人、操作内容、请求参数等等信息。1.2思路统一在Controller层进行拦截,记录下请求信息通过自定义注解,包含操作内容通过SpringAOP+AspectJ来实现,利用AspectJ里的相关注解可以方便的定义切面、切点等二、实现2.1环境准备Maven引入spring-b...

2019-07-02 23:51:40

RabbitMQ学习笔记 - 消息传输保障

参考:<<RabbitMQ实战指南>>消息可靠传输一般是业务系统接入消息中间件时首要考虑的问题,一般消息中间件的消息传输保障分为三个层级:Atmostonce:最多一次。消息可能会丢失,但绝不会重复传输。Atleastonce:最少一次。消息绝不会丢失,但可能会重复传输。Exactlyonce:恰好一次。每条消息肯定会被传输一次且仅传输一次。Rab...

2019-06-25 22:40:07

RabbitMQ学习笔记 - 消费端注意点

参考:<<RabbitMQ实战指南>>消费者客户端通过推模式或拉模式来获取并消费消息,这里RabbitMQ消费端来说,还有3点需要注意:消息分发消息顺序性弃用QueueingConsumer一、消息分发当RabbitMQ拥有多个消费者时,队列收到消息将以轮循(round-robin)的方式发送给消费者。每条消息只会发送给订阅列表里的一个消费者。默认情况下,...

2019-06-25 22:39:25

RabbitMQ学习笔记 - 发送方确认机制

参考:<<RabbitMQ实战指南>>RabbitMQ发送消息可能会遇到一个问题,发送方不知道消息是否真正到达了RabbitMQ。在上篇博客中介绍了在AMQP协议层面提供了事务机制解决,但是使用事务机制后性能下降严重,这里还可以使用一种轻量级的方式------发送方确认机制(publisherconfirm)。生产者将信道设置成confirm(确认)模式,一旦信...

2019-06-21 00:02:02

RabbitMQ学习笔记 - 事务机制

参考:<<RabbitMQ实战指南>>通过消息持久化可以解决因为服务器的异常崩溃而导致的消息丢失。但是,当消息的生产者将消息发送出去之后,并不能知道消息有没有正确到达服务器。如果不进行特殊配置,默认情况下发送消息的操作是不会返回任何信息给生产者的。如果消息在到达服务器之前丢失,持久化操作解决不了这个问题,针对这个问题,有两种解决方式:事务机制发送方确认机制(pub...

2019-06-21 00:01:20

RabbitMQ学习笔记 - 持久化

参考:<<RabbitMQ实战指南>>持久化可以提高RabbitMQ的可靠性,以防在异常情况(重启、关闭、宕机等)下的数据丢失。RabbitMQ的持久化主要分为三个部分:交换器的持久化、队列的持久化和消息的持久化。交换器的持久化:通过在声明交换器时将durable参数设置为true实现的。如果交换器不设置持久化,那么在RabbitMQ服务重启之后,相关的交换...

2019-06-09 22:59:39

RabbitMQ学习笔记 - 优先级队列

参考:<<RabbitMQ实战指南>>优先级队列,也就是具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权。注:优先级默认最低为0,最高为队列设置的最大优先级对于单条消息来谈优先级是没有什么意义的。假如消费者的消费速度大于生产者的速度且Broker中没有消息堆积的情况下,对发送的消息设置优先级就没有什么意义,因为生产者刚发完一个消息就被消费者消费...

2019-06-09 22:54:50

RabbitMQ学习笔记 - 延迟队列

参考:<<RabbitMQ实战指南>>延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后,并不让消费者立即拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。在AMQP协议中,或者RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过TTL和DLX(死信交换器)模拟延迟队列的功能。在RabbitMQ-死信队列这篇博客中说明...

2019-06-09 22:23:10

RabbitMQ学习笔记 - 死信队列

参考:<<RabbitMQ实战指南>>Dead-Letter-Exchange,简称DLX,可称为死信交换器、死信邮箱等等。当消息在一个队列中变成死信(deadmessage)之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信的几种情况:消息被拒绝(Basic.Reject/Basic.Nack),并且设置...

2019-06-09 19:17:35

RabbitMQ学习笔记 - 过期时间(TTL)

参考:<<RabbitMQ实战指南>>TTL(TimeToLive),过期时间。RabbitMQ可以对消息和队列设置TTL。一、设置消息的TTL设置消息TTL的两种方式:方式一:通过队列属性设置,队列中所有消息都有相同的过期时间方式二:对消息本身进行单独设置,每条消息的TTL可以不同注:如果两种方式一起使用,则消息的TTL以两者之间较小的那个数值为准...

2019-06-08 23:02:51

RabbitMQ学习笔记 - 备份交换器

参考:<<RabbitMQ实战指南>>备份交换器(AlternateExchange,简称AE),实际上和普通交换器没有多大区别,同样可以用来处理未被路由的消息。上一篇文章使用mandatory参数来解决,但是生产者代码逻辑变得复杂,所以我们可以使用备份交换器将这些未被路由的消息存储起来,之后有需要的时候再去处理。实现方法:在声明交换器的时候添加alternate-e...

2019-06-03 09:27:08

RabbitMQ学习笔记 - mandatory参数

参考:<<RabbitMQ实战指南>>mandatory和immediate是channel.basicPublish方法中的两个参数,它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ3.0版本开始去掉了对immediate参数的支持,这里就不在讨论该参数。1.发送消息api:voidbasicPublish(Stringex...

2019-06-03 09:26:00
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。