Redis 相关功能和实用命令

Posted sanri1993

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 相关功能和实用命令相关的知识,希望对你有一定的参考价值。

慢查询原因分析

由于 Redis 是单线程的,它内部维护了一个命令队列,所以当有耗时的命令出现时,比如 keys *,后面的命令会被阻塞,通查查出慢查询可以对服务进一步优化。

  1. 设置慢查询阀值:默认10 毫秒,以微秒为单位

    6379>config set slowlog-log-slower-than 10000

    可直接修改 redis.conf 加上 slowlog-log-slower-than 10000

    slow-max-len 用来设置慢查询条数

  2. 执行 slowlog get 获取慢查询,格式如下

    img

一般会定期将慢查询进行导出到 mysql 或其它存储,用于业务人员查看哪里出现了慢查询

管道 pipeline

上篇文章展示了在控制台中如何使用管道来导入 mysql 数据 ,但管道一般在应用程序中使用

 Object execute = redisTemplate.execute(new RedisCallback<Object>() {
     @Override
     public Object doInRedis(RedisConnection connection) throws DataAccessException {
         connection.openPipeline();
         for (int i = 0; i < 1000000; i++) {
             String key = "123" + i;
             connection.set(key.getBytes(), key.getBytes());
         }
         List<Object> result = connection.closePipeline();
         return result;
     }
 });

发布订阅 (publish/subscribe)

Redis 的发布订阅比较简单,不适合于专业的场景,会有消息丢失,无法回溯等问题,这个发布订阅一般是用在 Redis 内部使用,比如哨兵的监控

专业的发布订阅建议还是使用 kafka 或者 rabbitmq

rabbitmq 可参考我的另一篇文章 Rabbitmq

一些实用命令

  • 查询连接的占用情况,哪台主机占用多少连接,用于排查连接耗光问题

    redis-cli -a <密码> client list  | awk \'{print $1}\' | cut -d "=" -f2 | cut -d: -f 1 | sort  -n | uniq -c 
    
  • 查询当前内存使用情况

    6379> info Memory

  • 在所有 key 里面返回随机一个 key ,可以用于抽奖

    randomkey
    

一点小推广

创作不易,希望可以支持下我的开源软件,及我的小工具,欢迎来 gitee 点星,fork ,提 bug 。

Excel 通用导入导出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi

使用模板代码 ,从数据库生成代码 ,及一些项目中经常可以用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven

以上是关于Redis 相关功能和实用命令的主要内容,如果未能解决你的问题,请参考以下文章

Redis:set/sadd/sismember/sinter/sdiffstore 命令源码解析

Sublime text3最全快捷键清单

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

超实用的php代码片段

Android 实用代码片段

Android 实用代码片段