Redis 6.0学习指南
文章目录
- Redis 6.0学习指南
- 第一章 引言
- Redis简介
- Redis高性能因素
- 使用Redis可能遇到的问题
- Redis下载
- 基本配置
- 启动redis
- 第二章 数据库与键
- Key
- 重命名
- 随机返回一个键
- 键过期
- 查看过期时间
- 清除过期时间
- 遍历键
- 全量遍历键
- 渐进式遍历
- Database
- 相关配置
- 常用命令
- 第三章 通讯协议RESP
- 举个例子
- 返回结果格式
- 附录
- 附录a. 网站资料
- 网站收录
- 官方网站
- 国内社区
- Github
- [antirez 博客](http://antirez.com/latest/0)
- [Redis 扩展模块](https://redis.io/modules)
- 附录b. 书籍推荐
- 使用类
- 源码类
Redis 6.0学习指南
第一章 引言
Redis简介
Redis 是一个开源(BSD许可)、基于内存、高性能的数据结构,可以作为K-V数据库、缓存、消息代理(message broker)和流引擎。
Redis提供了许多数据结构,诸如String、Hash、List、Set、Sorted Set、BitMap、Hyperloglog、Geospatial index和Stream。
Redis高性能因素
- 纯内存存储
- 单线程操作,避免了频繁的上下文切换
- 采用了非阻塞I/O多路复用机制
使用Redis可能遇到的问题
- 缓存和数据库双写一致性问题
- 缓存雪崩问题
- 缓存击穿问题
- 缓存的并发竞争问题
Redis下载
Redis 使用标准版本标记进行版本控制:major.minor.patchlevel。偶数的版本号表示稳定的版本, 例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的版本号用来表示非标准版本。
Redis官方下载地址:https://redis.io/download/
基本配置
redis启动这一块不会出啥问题,这边就直接复制老博客内容了。
修改redis.windows.conf文件,设置maxmemory 大小
#maxmemorty <bytes>
maxmemorty 1024000000
设置redis密码
#requirepass foobared
requirepass 123456
启动redis
redis-server.exe redis.windows.conf
将redis加入到windows的服务中(service和loglevel前都是两个-)
redis-server –service-install redis.windows.conf –loglevel verbose
第二章 数据库与键
Key
重命名
rename key newKey
如果在rename之前,键java已经存在,那么它的值也将被覆盖。
为了防止被rename覆盖,Redis提供了renamenx命令,确保只有newKey不存在时候才被覆盖。
随机返回一个键
randomkey
键过期
//键在seconds秒后过期
expire key seconds
//键在秒级时间timestamp后过期
expireat key timestamp//键在milliseconds毫秒后过期
pexpire key milliseconds
//键在毫秒级时间戳timestamp后过期
pexpireat key milliseconds-timestamp
但无论是使用过期时间还是时间戳,秒级还是毫秒级,在Redis内部最终使用的都是pexpireat。
查看过期时间
//查询键的剩余过期时间 秒级
ttl key
//查询键的剩余过期时间 毫秒级
pttl key
有3种返回值:
- 大于等于0的整数:键剩余的过期时间(ttl是秒,pttl是毫秒)。
- -1:键没有设置过期时间。
- -2:键不存在。
清除过期时间
persist key
遍历键
当数据量较小时,可以使用Keys命令返回所有满足条件的Key集合。但是当数据量较大时,由于此命令通过遍历匹配key所以很容易阻塞Redis服务;另外由于不能使用limit命令,Keys命令会返回所有匹配数据,导致输出过多,所以生产环境一般不使用此命令。
全量遍历键
keys pattern
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
渐进式遍历
scan cursor [match pattern] [count number]
cursor是必需参数,实际上cursor是一个游标,第一次遍历从0开始,每次scan遍历完都会返回当前游标的值,直到游标值为0表示遍历结束。
match pattern是可选参数,它的作用的是做模式的匹配,这点和keys的模式匹配很像。
count number是可选参数,它的作用是表明每次要遍历的键个数,默认值是10,此参数可以适当增大。
Database
Redis中默认有16个相互空间独立的数据库(Database)。每个数据库都有一个整数类型id,新客户端默认选择的数据库是id为0的数据库。
typedef struct redisDb {dict *dict; /* The keyspace for this DB */dict *expires; /* Timeout of keys with a timeout set */dict *blocking_keys; /* Keys with clients waiting for data (BLPOP)*/dict *ready_keys; /* Blocked keys that received a PUSH */dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */int id; /* Database ID */long long avg_ttl; /* Average TTL, just for stats */unsigned long expires_cursor; /* Cursor of the active expire cycle. */list *defrag_later; /* List of key names to attempt to defrag one by one, gradually. */
} redisDb;
相关配置
数据库的数量可以在配件文件中,通过databases参数进行配置。
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16
常用命令
切换数据库
可以通过调用select [id]的命令来改变当前客户端所选数据库,如下所示。随后,所有的命令将使用DB2,直到再次切换到另一个数据库下。每个数据库都有属于自己的空间,不必担心之间的key冲突。不同的数据库下,相同的key取到各自的值。
select 2
清除当前数据库
flushdb
清除所有数据库
flushall
第三章 通讯协议RESP
Redis制定了RESP(REdis Serialization Protocol, Redis序列化协议) 实现客户端与服务端的正常交互,这种协议简单高效,既能够被机器解析,又容易被人类识别。
举个例子
"set hell world"基于RESP格式化之后的结果是:
*3\r\n$3\r\nSET\r\n$5\r\nhello\r\n$5\r\nworld\r\n
格式化之后:
$3
SET
$5
hello
$5
world
换行符 \r\n 用于区分命令请求的若干参数,*3表示该命令请求有3个参数,$3、$5 和 $5 表示该参数字符串长度。
返回结果格式
Redis的返回结果类型分为以下五种,
- 状态回复 在RESP中第一个字符为“+”。
- 错误回复 在RESP中第一个字符为“-”。
- 整数回复 在RESP中第一个字符为“:”。
- 字符串回复 在RESP中第一个字符为“$”。
- 多条字符串回复 在RESP中第一个字符为“*”。
附录
附录a. 网站资料
网站收录
官方网站
Redis 官网文档非常丰富,它的文档非常值得啃。Redis官网的精华文章都在顶部导航Documentation连接中。
国内社区
Github
antirez 博客
Redis 作者 antirez 大佬的博客有很多关于 Redis 的最新消息,除此之外还会有一些作者新发现的、好玩的技术知识点。
Redis 扩展模块
附录b. 书籍推荐
使用类
《Redis开发与运维》 付磊
源码类
《Redis设计与实现》 黄健宏
《Redis5设计与源码分析》 陈雷
Redis 6.0学习指南相关推荐
- redis 3.0 cluster 集群 学习之路篇 [3]
周氏一族,整理技术文档,给下一代留点教程...... redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 ...
- 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...
- 《果壳中的C# C# 5.0 权威指南》 (01-08章) - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahar ...
- c语言学习指南app,C语言学习指南下载-C语言学习指南 v1.0.0_手机乐园
软件简介 C语言学习指南是一款好用的编程语言学习工具,界面无任何的广告,而且开发者保证绝对的免费,里面全部都是网友在网上收集的C语言教程和文章,资源很丰富,而且分类也超级的详细,除了教程外还有面试题以 ...
- 下载!微软出品的最新 Kubernetes 学习指南 3.0
点击上方"逆锋起笔",关注领取视频教程 ☞ 程序员进阶必备资源免费送「各种技术!」 ☜ Kubernetes 正在席卷应用开发世界,正在塑造应用程序开发和管理的未来,这是一个不争的 ...
- python从零开始到精通_「Python 入门学习指南」0基础小白助你从入门到精通!
Python比较简单,非常适合初学者入门,内置了各种库,还有丰富的大约13万第三方库,掌握了语法和编程思维后,可以直接使用这些库做出自己的产品.这篇 Python 入门学习指南,针对没有任何编程经验. ...
- 阿里p8软测专家耗时一个月整理出,从0基础自学到功能测试再到自动化测试超全学习指南
从事测试工作已8年有余了,今天想聊一下自己刚入门时和现在的今昔对比,虽然现在也没什么大成就,只能说笑谈一下自己的测试生涯. 技术栈的变化 刚开始是做的开发,也是做了好几年的开发,后面软件测试的风潮开始 ...
- 广工工作室各方向学习指南
广工工作室各方向学习指南 新的学期即将开始,计算机学院各大工作室也陆续会在本学期开始招新.但是想要加入工作室,我们需要一定的知识储备,并顺利通过所有的考核.此刻的你也许还很迷茫,对工作室的各大方向和和 ...
- Java工程师学习指南(2019最新版)
写过一个Java工程师学习指南,我把它分为了四个部分,第一步是打好Java基础,掌握Java核心技术,第二步是掌握Java Web技术栈,能够做一些项目,第三步是掌握Java方面的进阶技术,包括网络编 ...
- 超硬核Java工程师学习指南,真正的从入门到精通,众多粉丝亲测已拿offer!
最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思 ...
最新文章
- 梦心日记本V2.0完工
- 软件测试用例文档模板 简书,如何写出高质量的测试用例
- esp8266驱动oled屏幕_为什么“更好的OLED电视”在海信?
- 理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别
- BAT大神推荐:看懂英文文档,每天只需要10分钟做这件事……
- 关于Web面试的基础知识点--Html+Css(三)
- 数据库和缓存一致性分析
- print (re.findall((?:abc)+,abcabcabc))
- wordpress中直接执行mysql查询语句的常用方法
- HTML实现页面注册
- linux离线安装系统工具arping
- 如何把图片上的文字转换成word的文字。
- 直流有刷电机与无刷电机的区别
- 未来发展人工智能的意义是什么?
- 计算机与打印机脱机后怎么共享,打印机脱机工作怎么恢复(连接的共享打印机脱机)...
- 高小英和张东健1998年合作出演过爱情片《恋风恋歌
- 剑指Offer-22反转链表
- 已知函数func的C语言代码框架,第三章习题-ddg
- python利用datetime模块计算时间差
- MDK解决方案:Warning L6989W
热门文章
- asp php 一句话,ASP_asp一句话木马原理分析,通过HTTP协议来访问 一句话木 - phpStudy...
- 基于Packet Tracer 的校园网络设计方案(计算机网络与课程实验)(一)——子网划分方案规划
- php函数find的用法,fleaphp fleaphp crud操作之find函数的使用方法
- Flutter videoplayer
- Nvidia 的新显卡架构 Maxwell 性能相比开普勒提升了多少?
- 怎么在html中加入网上的图片,css中如何插入图片?
- ISO27001风险评估实施流程(详细版)
- QT5.14.1安装教程
- 学习中科院杨力祥c++
- 手机屏幕坏了____怎么把里面的资料导出(18种方法)