下载APP 编程狮,随时随地学编程
返回 首页

Redis开发运维实践指南

开始阅读
手册说明:


Redis简介

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis为一个运行在内存中的数据结构服务器(data structures server)。Redis使用的是单进程(除持久化时),所以在配置时,一个实例只会用到一个CPU。

Redis支持的语言

Redis支持的语言有很多,包括:

版权信息

本手册是作者在一家中国大陆的中型商业银行做大数据系统工程师中进行的总结归纳,包含开发和运维的各方面的使用、应用场景和最佳实践,以及各个高可用架构的搭建和测试。

下载和线上阅读最新版请访问:https://www.gitbook.com/book/gnuhpc/redis-all-about/details

本手册符合共同创作协议, 协议文本见 http://creativecommons.net.cn/licenses/meet-the-licenses/

其中会有引用的各种文献和图片,我会尽可能的标注引用,如果您发现您的文字或者图片未标注引用,请fork本手册的github并pull request: https://github.com/gnuhpc/All-About-Redis

有不正确的地方,请通过gnuhpc@weibo或者huangpengcheng#cmbc.com.cn (:s/#/@)联系我,或者联系W3Cschool进行修改!

除了学习本手册外,您还可以学习:

《Redis教程》

《Redis 基础教程》

《Redis 设计与实现(第二版)》

目录
Redis简述

Redis 数据操作

Redis key操作

Redis 列出key
Redis 测试指定key是否存在
Redis 删除给定key
Redis 返回给定key的value类型
Redis 返回从当前数据库中随机选择的一个key
Redis 原子的重命名一个key
Redis Key的超时设置处理

Redis 字符串操作

Redis 设置key对应的值为string类型的value
Redis 获取key对应的string值
Redis 增减操作
Redis 追加字符串
Redis 截取字符串
Redis 改写字符串
Redis 返回子字符串
Redis 中文字符串处理
Redis 取指定key的value值的长度
Redis 位操作

Redis 列表操作

Redis 添加元素
Redis 查看列表长度
Redis 查看元素
Redis 查看一段列表
Redis 截取list
Redis 删除元素
Redis 设置list中指定下标的元素值
Redis 阻塞队列

Redis 集合操作

Redis 添加元素
Redis 移除元素
Redis 删除并返回元素
Redis 随机返回一个元素
Redis 集合间移动元素
Redis 查看集合大小
Redis 判断member是否在set中
Redis 集合交集
Redis 集合并集
Redis 集合差集
Redis 获取所有元素

Redis 有序集合操作

Redis 删除元素
Redis 增加score
Redis 获取排名
Redis 获取排行榜
Redis 返回给定分数区间的元素
Redis 返回集合中score在给定区间的数量
Redis 返回集合中元素个数
Redis 返回给定元素对应的score
Redis 评分的聚合

Redis 哈希操作

Redis 设置hash值
Redis 获取hash值
Redis 递增某一个域的值
Redis 判断某一个域是否存在
Redis 删除域
Redis 获取域的数量
Redis 获取所有的域名
Redis 获取所有域的值
Redis 获取所有域名和值

Redis HyperLogLog操作

Redis 返回给定 HyperLogLog 的基数估算值
Redis 将元素添加至 HyperLogLog
Redis 合并多个 HyperLogLog

Redis 专题功能

Redis 排序
Redis 事务
Redis 流水线
Redis 发布订阅

Redis 开发设计规范

Redis 超时设置
Redis 内存考虑
Redis 延迟考虑
Redis 典型使用场景参考
Redis 客户端推荐

Redis 上线部署规划

Redis 内存、CPU规划
Redis 网卡RPS设置
Redis 服务器部署位置
Redis 持久化设置
Redis 多实例配置
Redis 具体设置参数
Redis 其他好用的配置技巧

Redis 常见运维操作

Redis 停止
Redis 查看和修改配置
Redis 批量执行操作
Redis 选择数据库
Redis 清空数据库
Redis 重命名命令
Redis 执行lua脚本
Redis 设置密码
Redis 验证密码
Redis-cli命令行其他操作

Redis 持久化与备份恢复

RDB相关操作
AOF相关操作
Redis 备份
Redis 恢复

Redis 数据迁移

Redis 将key从当前数据库移动到指定数据库

Redis 问题处理

Redis 一般处理流程

Redis 探测服务是否可用
Redis 探测服务延迟
Redis 查看统计信息
Redis 获取慢查询
Redis 查看客户端
Redis 查看日志

Redis 并发延迟检查

Redis 检查CPU情况
Redis 检查网络情况
Redis 检查系统情况
Redis 检查连接数
Redis 检查持久化
Redis 检查命令执行情况

Redis 内存检查

Redis 系统swap内存查看
Redis 系统内存查看
Redis info查看内存
Redis dump.rdb文件成生内存报告(rdb-tool)
Redis query在线分析
Redis 内存抽样分析
Redis 统计生产上比较大的key
Redis 查看key内部结构和编码等信息
Redis Rss增加,内存碎片增加

Redis 测试方法

Redis 模拟oom
Redis 模拟宕机
Redis 模拟hang
Redis 快速产生测试数据
Redis 模拟RDB load情形
Redis 模拟AOF加载情形

Redis安全问题

Redis Shell提权问题

Redis 高可用和集群简述

Redis 高可用与分片的概念
Redis 高可用主要场景和对应思路
Redis 分片主要场景和对应思路
Redis 适用场景对比列表

Redis 高可用和集群架构与实践

Redis 主从复制-sentinel架构

Redis 高可用原理

Redis 发现原理
Redis 基本切换原理

Redis 环境搭建

Redis 部署架构
Redis 网络规划
Redis 用户规划
Redis 持久化规划
Redis 目录规划
Redis 部署步骤
Redis 配置文件

Redis 维护操作

Redis 完整启动
启停redis
Redis 手动启动
Redis 启停sentinel
Redis 查看sentinel状态
Redis 查看master地址和端口
Redis 查看master配置
Redis 重置该sentinel
Redis 动态修改sentinel配置
Redis 主动切换
Redis 判断主从是否完全一致
Redis 接收所有事件信息

Redis 高可用和异常测试

Redis 测试环境介绍
Redis 手动切换测试
Redis 主实例宕测试
Redis 单从实例宕测试
Redis 双从实例宕测试
Redis 单sentinel宕测试
Redis 双sentinel宕测试
Redis master所在主机整体宕测试
Redis slave所在主机整体宕测试
Redis 脑裂测试
Redis quorum测试
Redis Master hang死测试
附:Redis sentinel.conf被修改后的含义
附:Redis sentinel事件含义

Redis 其他问题

Redis 只读性
Redis 事件通知
Redis 虚拟IP切换
Redis 持久化动态修改
Redis Sentinel最大连接数

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }