自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Redis之事务

一.事务的实现1.事务流程(1)事务开始MULTI命令标识事务的开始.此命令主要是修改客户端状态的flags属性值为REDIS_MULTI来实现.(2)命令入队事务队列信息被保存在客户端状态的mstate属性里面,mstate结构如下:(3)事务执行EXEC命令会让服务器开始遍历这个客户端的事务队列,获取所有待执行命令,然后将所有命令的执行结果返回给客户端.2.WATCH命令(1)WATCH命令是一个乐观锁,它可以在EXEC命令执行前,监视任意数量的数据库键,并在执行EXEC命令时,

2021-05-31 16:35:44 75

原创 Redis之发布订阅功能

一.基础命令和实现1.SUBSCRIBE命令(1)当一个客户端执行SUBSCRIBE命令订阅某个频道或者某些频道时,这个客户端与被订阅频道之间就建立起一种订阅关系.客户端以字典的形式维护这种关系,字典的键是订阅频道,而键的值是一个链表,链表记录着所有订阅频道的客户端. 结果如下所示:(2)命令实现的伪代码如下:2.UNSUBSCRIBE命令(1)但一个客户端退订某个或某些频道是,服务端将把客户端从保存订阅关系的链表中删除.如果删除后链表值为空,那么也会此频道的键.(2)实现功能伪代码:3

2021-05-31 15:30:14 104

原创 Redis之事件和命令

一.文件事件1.文件事件处理器使用I/O多路复用程序来同时监听多个套接字,并根据套接字目前执行的任务来为套接字关联不同的事件处理器.2.当被监听的的套接字准备好执行连接应答,读取,写入,关闭等操作时,与操作相对应的文件事件就会产生,这时文件事件处理器就会调用套接字之前关联好的事件处理器来处理这些事件.3.文件事件处理器:(1)Redis的I/O多路复用程序的功能都是通过包装常见的select,epoll,evport和kqueue这些I/O多路复用函数库来实现的.(2)I/O多路复用程序负责监听

2021-05-27 14:30:35 119 1

原创 Redis之RDB和AOF

一.持久化对含有过期时间key的处理RDB1.当生成RDB文件时,已经过期的key会被忽略.2.当载入RDB文件时,如果是主机模式则忽略已经过期的key,如果是从机模式则载入所有key(因为从机在启动后会自动同步主机,多余的key会在后续同步过程中删除).AOF1.当生成AOF文件时,在删除过期key时会自动生成一条DEL命令到AOF文件中,显示说明key失效.二.RDB相关操作1.生成RDB文件有两个命令,save是阻塞的,bgsave是非阻塞的,通常都会使用bgsave命令防止阻塞主线程.

2021-05-26 16:15:28 136

原创 Redis之List列表和字典

一.队列实现1.普通队列:如果有时候只需要实现简单的系统间信息交换,便可以使用Redis实现队列,而不必引入消息队列中间件.而Redis实现队列功能主要是通过List这种数据接口.实现的简介:通常一个客户端通过LPUSH命令将消息放入队列中,而另一个客户端通过RPOP或者阻塞式的BRPOP命令取出队列中等待时间最长的消息。但如果在客户端取出数据之后,还没来得及处理数据时就系统奔溃了,此时就会丢失消息.2.安全队列:为了解决上述问题,可以使用RPOPLPUSH命令或者阻塞式的BRPOPLPUSH命令.R

2021-05-12 11:43:22 256

原创 Redis之String字符串

一.基础知识:1.字符串在Redis中都是以二进制的形式存储;2.Redis字符串是动态字符串SDS, 因此可以直接使用append命令添加新值;APPEND key value:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。二.Bitmapbitmap通过对位进行0/1设置来表示数据或者状态;1.优点:

2021-05-11 12:38:24 127

原创 Redis之Key遍历

Redis Key遍历一.Keys命令:当数据量较小时,可以使用Keys命令返回所有满足条件的Key集合.但是当数据量较大时,由于此命令通过遍历匹配key所以很容易阻塞Redis服务;另外由于不能使用limit命令,Keys命令会返回所有匹配数据,导致输出过多,所以生产环境一般不使用此命令.二.Scan命令:1.优点:scan命令的时间复杂度虽然也是O(N),但它是分次进行的,不会阻塞线程.scan命令提供了limit参数,可以控制每次返回结果的最大条数.2.缺点:scan返回的数据可能重复

2021-05-07 11:40:03 2876

原创 Redis之内存优化

Redis内存优化Redis 手动清理Key可以通过手动清理长时间不用的Key来减少Redis内存占用, 通过命令object idletime获取从上一次使用到现在间隔的时间. 但是如果很多Key共用同一个对象(如很多时候为了标识数据是否存在就会把value设置为1,实际上底层都是指向同一个对象),这时候多对key-value就会相互影响导致idletime返回时间不准确....

2021-05-06 14:21:16 555

原创 arthas使用(学习中,持续更新)

arthas使用arthas介绍arthas是alibaba开源的用于服务故障排查的工具.arthas能解决的问题:1.项目上线后,感觉自己的包并没有更新.以前的做法就是通过linux命令下载项目jar包,然后反编译查看类的内容,非常麻烦.使用arthas后,jad命令就可以轻松解决此问题.2.排查项目cpu,内存等资源消耗过大或者接口请求缓慢等问题.使用thread命令获取使用资源靠前的线程id,然后通过thread pid查看线程执行详情,也可以通过trace查看方法调用详情.官方文档地址:

2021-04-06 18:15:17 79

原创 Nacos分析之动态配置

Nacos结合@RefreshScope实现动态配置原理Nacos动态刷新源码分析通过Nacos源码分析,Nacos采用客户端通过无状态http请求主动向服务端发送请求,拉取配置的方式实现动态配置.下面将具体分析。通过ConfigFactory创建ConfigService(实际类型为NacosConfigService)// An highlighted blockpublic static ConfigService createConfigService(String serverAddr)

2021-03-05 17:56:06 741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除