基础知识总结一回顾
- – Map之一个Key存多个Value的MultiValueMap(一个键多个值)
- – java Stream的Collectors.groupingBy分组后的排序问题
- – mysql的group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])使用
- – 大数据报表查询-文章传送们
- – Spring异步方法注解 @Async,@Async标记的方法,可返回AsyncResult结果
- – RabbitMQ中的basicNack、basicReject都是拒绝一条消息,有啥区别?
- – Maven的optional的作用
- – Maven的scope属性
- – left关联的on后面跟条件与where跟条件的区别
- – INSERT-ON-DUPLICATE-KEY-UPDATE有可能锁表慎用
- – ThreadLocal可能引起的内存泄露的一些知识
- – 怎么验数据一致性
- – maven指定setting.xml配置文件
- – mvn设置打特定的包
- – nginx使用reload配置无效(缓存大小)
- – java8两个List集合取交集、并集、差集、去重并集
java基础知识总结二
- [Redis 批量删除Redis的key 正则匹配删除]
- 退出redis
- 匹配CCPAI:开头的所有key*删除
- redis-cli -h host -p 端口号 -n db -a 密码 --scan --pattern ‘CCPAI:*’ | xargs -r -t redis-cli -h host -p 端口号 -n db -a 密码 del
- redis-cli -h host -p 端口号 -n db -a 密码 keys ‘CCPAI:*’ | xargs -r -t redis-cli -h host -p 端口号 -n db -a 密码 del
ps:密码没有请忽略
- redis-cli没有请安装redis客户端
- -hredis的服务器地址
- -predis的端口
- -n->redis的db
- -a->redis的密码
- keys\ --scan --pattern为要匹配的值
- -r -t用于展示删除的详情信息,删一条展示一条- redis会返回删除条数
- 统计个数:
redis中名称含有OMP_OFFLINE的key的个数;
redis-cli keys “OMP_OFFLINE”|wc -l
-
[maven的pom配置详解]
超详细连接 -
redis大key排查
- 客户端直接查询
redis-cli -h r-***************.redis.rds.aliyuncs.com -a XXX --bigkeys -i 0.1
注:
-h指定Redis的连接地址。
-a指定Redis的认证密码。
–bigkeys查找大Key。
–hotkeys用来查询热点Key。
–每扫描100个key休息0.1秒- 通过redis-rdb-tools工具进行redis的rdb内存大key分析
-
环境依赖
centos7.x,python3.8.0,pip -
安装pip:(还可以直接下载python工具直接进行安装)
下载:wget https://bootstrap.pypa.io/get-pip.py
安装:python get-pip.py
下载:wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip -
下载安装redis-rdb-tools工具
解压:unzip master.zip
进入解压目录:cd redis-rdb-tools
安装:python setup.py install
或者直接使用pip安装:pip install rdbtools -
查询redis配置
确保redis的配置文件(redis.conf)开启rdb备份
rdbcompression yes
dbfilename dump.rdb
找到备份文件
/usr/local/java/redis-4.0.10/dump.rdb
阿里云redis服务器的dump.rdb在【备份与恢复】的备份里面 -
利用rdb-tools进行分析
查看分析结果:rdb -c memory -l 5 dump.rdb
-l:使用该操作指定占用空间最大的key个数
eg:rdb -c memory -l 5 dump.rdb:显示占空间最大的前5个key
分析结果导出到文件
rdb -c memory dump.rdb > result.csv -
分析结果插件安装
WARNING: python-lzf package NOT detected. Parsing dump file will be very slow unless you install it. To install, run the following command:pip install python-lzf
- 意思说的是python-lzf这个包没有安装,会导致分析的时候非常慢,你可以运行pip install python-lzf命令进行安装python-lzf
- 安装python-lzf如果提示失败,看看是否需要依赖( error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: https://visualstudio.microsoft.com/downloads/)
- 下载安装->链接:https://pan.baidu.com/s/15mNBy2i6lIX4MiuZkolk4Q 提取码:tyvl
- 安装即可 pip install python-lzf
-
分析结果示例
D:\Program Files\redis-rdb-tools-master>rdb -c memory -l 5 1.rdb
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
8,list,uv_task_touch_cookieday_statis_list:,1628249436,quicklist,64636680,51,
8,list,uv_cookienum_user_task_read_statis_list,185726,quicklist,5840,32,
8,list,user_task_read_statis_list,200722,quicklist,6867,27,
8,hash,touch_screen_num_map,2839972,hashtable,23525,70,
8,list,user_task_touch_cookienum_statis_list:,1017769030,quicklist,41566987,25,
参数说明:
database :key在redis的db
type :key类型
key :key值
size_in_bytes :key的内存大小(byte)
encoding :value的存储编码形式
num_elements :key中的value的个数
len_largest_element :key中的value的长度
expiry :key过期时间 -
rdb分析使用说明
#rdb.exe -help
Usage: rdb [options] /path/to/dump.rdb
Example : rdb --command json -k “user.*” /var/redis/6379/dump.rdbOptions:
-h, --help 显示帮助信息
-c FILE, --command=FILE 要执行的命令json 或 diff
-f FILE, --file=FILE 输出文件名
-n DBS, --db=DBS 数据库ID。可以提供多个数据库。如果没有指定,包含所有数据库。
-k KEYS, --key=KEYS 导出键。可以是正则表达式。- 使用示例:
- 解析dump文件并以JSON格式标准输出
#/usr/local/python/bin/rdb --command json /data/redis_data/6379/dump.rdb - 只解析符合正则的keys
#/usr/local/python/bin/rdb --command json --key “sences_2.*” /data/redis_data/6379/dump.rdb - 只解析以“a”为开头的hash且位于数据库ID为2的
#/usr/local/python/bin/rdb --command json --db 2 --type hash --key “a.*” /data/redis_data/6379/dump.rdb
- 解析dump文件并以JSON格式标准输出
- 使用示例:
-
redis-memory-for-key单key内存分析使用说明
单个key所使用的内存量:
- 使用redis-memory-for-key命令,导出单个key的内存情况
- redis-memory-for-key依赖redis-py包
- 需要安装redis模块当出现ImportError: No module named redis时,需要安装redis模块
#/usr/local/python/bin/pip install redis
或
#/usr/local/python/bin/easy_install redis使用讲解:
#/usr/local/python/bin/redis-memory-for-key --help
Usage: redis-memory-for-key [options] redis-key
Examples :redis-memory-for-key user:13423
redis-memory-for-key -h localhost -p 6379 user:13423Options:
-h, --help show this help message and exit
-s HOST, --server=HOST Redis Server hostname. Defaults to 127.0.0.1
-p PORT, --port=PORT Redis Server port. Defaults to 6379
-a PASSWORD, --password=PASSWORD Password to use when connecting to the server
-d DB, --db=DB Database number, defaults to 0
-
-
eureka的外网注册,访问]
#注册服务到服务注册中心
eureka.client.register-with-eureka=true
#设置健康检查页面
eureka.instance.health-check-url=http://${eureka.instance.ip-address}:${eureka.instance.non-secure-port}/health
#配置状态页面为swagger-bootstrap-ui(封装swagger的开源项目,用户界面比较友好,推荐一个)接口页面,默认为项目的info端点页面
eureka.instance.status-page-url=http://${eureka.instance.ip-address}:${eureka.instance.non-secure-port}/doc.html
#设置实例ID名称
eureka.instance.instance-id=${eureka.instance.ip-address}:${spring.application.name}:${eureka.instance.non-secure-port}
#############主要是下面的配置
#设置使用IP
eureka.instance.prefer-ip-address=true
#设置外网IP号
eureka.instance.ip-address=49.10.22.106
#设置外网端口号
eureka.instance.non-secure-port=5565