第3章 小功能大用处

3.1 慢查询分析

两个参数

  1. slowlog-log-slower-than:单位是微秒,默认是10000
  2. slowlog-max-lan:列表最大长度

3.2 Redis Shell

3.2.1 redis-cli

  1. redis-cli -r(repeat):执行多次。
  2. redis-cli -i(interval):每隔几秒执行一次命令。
  3. redis-cli -x:从标准输入读取数据作为 redis-cli 最后一个参数。
  4. redis-cli -c(cluster):连接 Redis Cluster 时使用。
  5. redis-cli -a(auth):配置了密码时使用。
  6. redis-cli --scan,–pattern:用于扫描指定模式的键,相当于使用 scan 命令。
  7. redis-cli --slave:把当前客户端拟做当前 Redis 节点的从节点。
  8. redis-cli --rdb:生成 RDB 持久化文件,保存在本地。
  9. redis-cli --pipe:用于将命令封装成 Redis 通信协议定义的数据格式。
  10. redis-cli --bigkeys:使用 scan 命令对 Redis 的键进行采样,从中找到内存占用比较大的键。
  11. redis-cli -eval:用于执行指定脚本。
  12. redis-cli -latency:检测网络延迟
  13. redis-cli -stat:实时获取 Redis 重要的统计信息。
  14. redis-cli --raw,–no-row:要求命令返回的结果必须是(不是)原始格式。

3.2.2 redis-server

3.2.3 redis-benchmark

3.3 Pipeline

原生批量命令与Pipeline对比:

原生批量命令 Pipeline
原子性 非原子的
一个命令对应多个key 支持多个命令
Redis 服务端实现 Redis 服务端,客户端共同实现

不能滥用Pipeline

3.4 事务与Lua

3.4.1 事务

multi
~
~
~
exec #执行事务
discard #取消事务
watch #监听

Redis 不支持回滚功能

3.4.2 Lua 语法

3.4.3 Redis 与 Lua

eval

evalsha

Lua 脚本功能的三个好处:

  1. 原子执行
  2. 定制命令
  3. 减少网络开销

脚本管理操作:

  1. script load script
  2. script exists shal
  3. script flush
  4. scropt kill

3.5 Bitmaps

  • Bitmaps 本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的进行操作。
  • 可以把 Bitmaps 想象成以位为单位的数组,数组的下标在 Bitmaps 称为偏移量。

命令:

  1. 设置值
setbit key offset value
  1. 获取值
getbit key offset
  1. 获取 Bitmaps 指定范围为1的个数
bitcount key [start end]
  1. Bitmaps 之间的运算
bitop op destkey key [key...]
  1. 计算 Bitmaps 中第一个值的偏移量
bitpos key targetBit [start] [end]

3.6 HyperLogLog

不是一种数据结构,而是一种基数算法

集合操作。

三个命令:

pfadd
pfcount
pfmerge

HyperLogLog 内存占用很少,但是存在一定的误差,官方说法是0.81%。

3.7 发布订阅

命令:

  1. 发布消息
publish channel message
  1. 订阅消息
subscribe channel [channel...]
  • 客户端在执行订阅命令后进入订阅状态,只能接收 subscribe,psubscribe,unsubscribe,punsubscribe。的四个命令

  • Redis 不会对发布的消息进行持久化。

  1. 取消订阅
unsubscribe [channel [channel...]]
  1. 按照模式订阅和取消订阅
psubscribe pattern [pattern...]
punsubscribe pattern [pattern [pattern...]]
  1. 查询订阅
pubsub channels [pattern]

3.8 GEO

地理信息定位

命令:

  1. 添加地理位置信息
geoadd key longitude latitude member [longitude latitude member...]
  1. 获取地理位置信息
geopos key member [member...]
  1. 计算两个位置之间的距离
geodist key member1 member2 [unit]

unit 代表返回加过的单位

  • m:米
  • km:千米
  • mi:英里
  • ft:尺
  1. 获取指定位置范围内的地理位置信息集合
georadius key longitude latitude georadiusbymember key member radiusm [unit]
  1. 获取 geohash
geohash key member [member...]
  1. 删除地理位置信息
zrem key member

GEO 没有提供删除成员的命令,因为 GEO 底层实现是zset,所以可以借用 zrem 命令实现地理位置信息的删除操作。

【 Redis开发与运维】第3章 读书笔记相关推荐

  1. <Redis开发与运维>一书阅读笔记记录

    文章目录 前言 第1章:初始redis 盛赞redis redis特性 redis使用场景 第2章:API的理解和使用 预备知识 全局命令 数据结构和内部编码 单线程架构 字符串 命令 内部编码 典型 ...

  2. 《Redis开发与运维》各章重点回顾

    第 1 章 初识 Redis Redis 8个特性:速度快.基于键值对的数据结构服务器.功能丰富.简单稳定.客户端语言多.持久化.主从复制.支持高可用和分布式. Redis 不是万金油,有些场景不适合 ...

  3. Redis开发与运维 必备-电子书

    Redis开发与运维电子书 fulei出版 链接: https://pan.baidu.com/s/12rlHhOKP7_72GE8a74lN1g 密码: eep2 复制这段内容后打开百度网盘手机Ap ...

  4. 「Redis开发与运维」读书笔记

    第一章 初识Redis Redis的8个重要特性 速度快 内存存储数据 C语言实现 单线程架构,避免多线程竞争问题 Redis源码优化好 基于键值对的数据结构服务器 Redis 值可支持多种数据结构, ...

  5. Redis开发与运维笔记_1 初识2 API

    目录 概述 第1章 初识Redis 1.1 盛赞Redis 1.2 Redis特性 1.3 配置.启动.操作.关闭Redis 第2章 API的理解和使用 2.1 预备 2.1.1 全局命令 2.1.2 ...

  6. 《Redis开发与运维》读书笔记--初识Redis(一)

    目录 盛赞Redis Redis特性 redis使用场景 redis可以做什么? redis不可以做什么? 关于用好redis的两点建议 本章重点回顾 写在前面: 想必在写项目的过程中,我们很多时候都 ...

  7. 读书笔记:redis开发与运维 基础篇

     redis特性    1>速度快:redis所有数据都是存放在内存中,是redis速度快的主要原因,是有c编写,一般来说用c编写的程序距离操作系统近,执行速度更快,非阻塞I/O,使用epoll ...

  8. 【Redis】《Redis 开发与运维》笔记-Chapter12-开发运维的“ 陷阱”

    十二.开发运维的" 陷阱" 1.Linux配置优化之内存分配控制 1)vm.overcommit_memory Linux操作系统对大部分申请内存的请求都回复yes,以便能运行更多 ...

  9. Redis 开发与运维

    Getting Start 高性能 性能优势的体现 C语言实现的内存管理 epoll的I/O多路复用技术+IO连接/关闭/读写通过事件实现异步的非阻塞IO TCP协议 单线程架构,不会因为高并发对服务 ...

  10. Redis理解内存《Redis开发与运维读书笔记》

    文章目录 内存的消耗 内存划分 内存管理 内存优化 内存的消耗 可以使用info memory 查看内存消耗. 内存划分 对象内存 = sizeof(key) + sizeof(value) 应避免使 ...

最新文章

  1. Get了!用Python制作数据预测集成工具 | 附代码
  2. 你需要知道的20个常用的Python技巧
  3. ExclusiveTouch
  4. Java中设计模式之生产者消费者模式-3
  5. POJ 2411 Mondriaan's Dream(状态压缩DP)
  6. 用VS.NET2003制作WEB应用程序的安装包
  7. Linux实现MYSQl数据库的定时备份
  8. Andoid自动判断输入是电话,网址或者Email的方法----Linkify的应用!
  9. 【Java】java测试--词频统计 ----IO流操作
  10. OkHttp RouteSelector代理解析
  11. 基于Struts实现用户登录和注册模块
  12. adb查看某个文件是否存在_android – 使用ADB检查目录是否存在,如果存在则推送文件...
  13. 181205每日一句
  14. 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
  15. hello world! 这是我在博客园的第一个博客!
  16. Linux命令大全.pdf
  17. ADC和DAC中常见技术术语
  18. DCM4CHEE 中worklist 乱码问题 dcmchee 中文乱码
  19. Nat. Med. :婴儿生命早期肠道病毒组和细菌组的动态
  20. 计算机简史:你想不通去脉,是因为不了解来龙

热门文章

  1. linux ipv4文件,Linux IPV4 IPV6地址批量Ping脚本(工具)
  2. html msn 消息,msn在线通玩法介绍 如何创建自己的msn在线通HTML代码
  3. 【Python】基于Python的百度迁徙3——城内出行强度(附代码)
  4. 最全面的PLC学习网站
  5. dnf修改服务器时间限制,DNF历史性革新,团本刷新时间改为周六,为黑鸦让路
  6. jsp简单多人在线聊天系统(非常容易理解的公聊、私聊)
  7. Unity3d资源包的使用心得
  8. Algorithm:数学建模大赛(CUMCM/NPMCM)之建模历年题目类型、数据分析及官方评阅要点之详细攻略
  9. 全国各地市统计年鉴汇总2021
  10. 顾樵数学物理方法_圣彼得堡国立大学硕士研究生:物理与天文学