From 89175a56bcb7bba8049b52f72e3da6743b84b31f Mon Sep 17 00:00:00 2001 From: guide Date: Mon, 27 Jul 2020 16:06:41 +0800 Subject: [PATCH] =?UTF-8?q?[refractor]=20redis=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Redis/images/redis/redis-list.drawio | 1 + .../Redis/images/redis/redis-list.png | Bin 0 -> 18052 bytes docs/database/Redis/redis-all.md | 292 +++++++++++++----- 3 files changed, 215 insertions(+), 78 deletions(-) create mode 100644 docs/database/Redis/images/redis/redis-list.drawio create mode 100644 docs/database/Redis/images/redis/redis-list.png diff --git a/docs/database/Redis/images/redis/redis-list.drawio b/docs/database/Redis/images/redis/redis-list.drawio new file mode 100644 index 00000000..afa76715 --- /dev/null +++ b/docs/database/Redis/images/redis/redis-list.drawio @@ -0,0 +1 @@ +7VlNc5swFPw1PiaDENjmmNjpx6Gdjt1J2lNHAzKoEYgRcmzn11cYyRgJT1w3DnScU3grIaHd5b2HM4CTdP2Rozz5wiJMB64TrQdwOnBdEEAo/5TIpkICx6mAmJNITaqBOXnGCtTTliTCRWOiYIwKkjfBkGUZDkUDQ5yzVXPagtHmrjmKsQXMQ0Rt9IFEIqnQsTuq8U+YxIneGQyDaiRFerI6SZGgiK32IHg3gBPOmKiu0vUE05I8zUt134cDo7sH4zgTx9wwu/+V/H4g/myezsD35/vZ56/ulVrlCdGlOrB6WLHRDHC2zCJcLgIG8HaVEIHnOQrL0ZXUXGKJSKkaLh6xCBMVLFgmlKJgJGO1F+YCrw8eAuyokZ7CLMWCb+QUdcOVp9hUdnKhile1OL62WLInzEhhSPkh3i1dUyYvFGt/waBrMbi9BD3lUfPm2bwFLbT556INttPWc/sB035d0+i10wj7TaM77hmNw5fTIM6im7KeyCikqChI2ORMHp1vfsjA0cHPMrh2fR1P1/uj042KjiAbR1aRMqiWVRHxGIuXUr0tSSNxHqacY4oEeWo+RpsOaodvjMgHrPM2gKbk4+YaBVvyEKvb9suYuZLpHdcwRUWEtdDWF7tzn26V0f9ula4s4A0N4cbOtX+aB3zfWupNPaCb01cxAXjPF0cofGq68AJjIT8wXXdusxzRY/fbLJ0VDbPbOj1j2PXnrVOG/Z3A82WRWFaQXZUwujHB2SOeMMq4RDKW4VJLQqkBIUrirHSQVA9L/Lbs0Yj8lL1RAymJonKb1vavbhCP9M0/dYA+OFDF95zltTjLLPav1gECu5PmOcvf5aloD7qWx7fkoRf8+siiYggEuhbI/oSil/v+2Pp0/gLZ3y18u20/BTqDJp5O8VoSp2tJxvYrgxcXpIjV351PERnWv7RXPV39/wp49wc= \ No newline at end of file diff --git a/docs/database/Redis/images/redis/redis-list.png b/docs/database/Redis/images/redis/redis-list.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb4e36cb494ee9554a156f2bd295d6f2f983864 GIT binary patch literal 18052 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 QPS(Query Per Second):服务器每秒可以执行的查询次数; +> QPS(Query Per Second):服务器每秒可以执行的查询次数; 所以,直接操作缓存能够承受的数据库请求数量是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。进而,我们也就提高的系统整体的并发。 @@ -169,63 +147,220 @@ Redis 内部使用文件事件处理器 `file event handler`,这个文件事 ### Redis 常见数据结构以及使用场景分析 -#### 1.String +#### String -> **常用命令:** set,get,decr,incr,mget 等。 +1. **介绍** :String 数据结构是简单的 key-value 类型。虽然Redis是用C语言写的,但是Redis并没有使用C的字符串表示,而是自己构建了一种 **简单动态字符串**(simple dynamic string,**SDS**)。相比于C的原生字符串,Redis的SDS不光可以保存文本数据还可以保存二进制数据,并且获取字符串长度复杂度为O(1)(C字符串为O(N)),除此之外,Redis的SDS API是安全的,不会造成缓冲区溢出。 +2. **常用命令:** `set,get,strlen,exists,dect,incr,setex` 等等。 +3. **应用场景** :一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。 -String 数据结构是简单的 key-value 类型,value 其实不仅可以是 String,也可以是数字。 -常规 key-value 缓存应用; -常规计数:微博数,粉丝数等。 +下面我们简单看看它的使用! -#### 2.Hash - -> **常用命令:** hget,hset,hgetall 等。 - -hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。比如下面我就用 hash 类型存放了我本人的一些信息: - -``` -key=JavaUser293847 -value={ - “id”: 1, - “name”: “SnailClimb”, - “age”: 22, - “location”: “Wuhan, Hubei” -} +**普通字符串的基本操作:** +```bash +127.0.0.1:6379> set key value #设置 key-value 类型的值 +OK +127.0.0.1:6379> get key # 根据 key 获得对应的 value +"value" +127.0.0.1:6379> exists key # 判断某个 key 是否存在 +(integer) 1 +127.0.0.1:6379> strlen key # 返回 key 所储存的字符串值的长度。 +(integer) 5 +127.0.0.1:6379> del key # 删除某个 key 对应的值 +(integer) 1 +127.0.0.1:6379> get key +(nil) ``` -#### 3.List +**批量设置** : -> **常用命令:** lpush,rpush,lpop,rpop,lrange 等 - -list 就是链表,Redis list 的应用场景非常多,也是 Redis 最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 list 结构来实现。 - -Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。 - -另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 Redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。 - -#### 4.Set - -> **常用命令:** -> sadd,spop,smembers,sunion 等 - -Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。 - -当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。 - -比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程,具体命令如下: - -``` -sinterstore key1 key2 key3 将交集存在key1内 +```bash +127.0.0.1:6379> mest key1 value1 key2 value2 # 批量设置 key-value 类型的值 +OK +127.0.0.1:6379> mget key1 key2 # 批量获取多个 key 对应的 value +1) "value1" +2) "value2" ``` -#### 5.Sorted Set +**计数器(字符串的内容为整数的时候可以使用):** -> **常用命令:** zadd,zrange,zrem,zcard 等 +```bash -和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。 +127.0.0.1:6379> set number 1 +OK +127.0.0.1:6379> incr number # 将 key 中储存的数字值增一 +(integer) 2 +127.0.0.1:6379> get number +"2" +127.0.0.1:6379> decr number # 将 key 中储存的数字值减一 +(integer) 1 +127.0.0.1:6379> get number +"1" +``` -**举例:** 在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。 +**过期**: + +```bash +127.0.0.1:6379> exp key 60 # 数据在 60s 后过期 +(integer) 1 +127.0.0.1:6379> setex key 60 value # 数据在 60s 后过期 (setex:[set] + [ex]pire) +OK +127.0.0.1:6379> ttl key # 查看数据还有多久过期 +(integer) 56 +``` + +#### List + +1. **介绍** :**List** 即是 **链表**。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除并且且可以灵活调整链表长度,但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 **LinkedList**,但是C语言并没有实现链表,所以Redis实现了自己的链表数据结构。Redis 的 List 的实现为一个 **双向链表**,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。 +2. **常用命令:** `rpush,lpop,lpush,rpop,lrange、llen` 等。 +3. **应用场景:** 发布与订阅或者说消息队列、慢查询 + +下面我们简单看看它的使用! + +**通过 `rpush/lpop` 实现队列:** + +```bash +127.0.0.1:6379> rpush myList value1 # 向 list 的头部(右边)添加元素 +(integer) 1 +127.0.0.1:6379> rpush myList value2 value3 # 向list的头部(最右边)添加多个元素 +(integer) 3 +127.0.0.1:6379> lpop myList # 将 list的尾部(最左边)元素取出 +"value1" +127.0.0.1:6379> lrange myList 0 1 # 查看对应下标的List列表, 0 为 start,1为 end +1) "value2" +2) "value3" +127.0.0.1:6379> lrange myList 0 -1 # 查看列表中的所有元素,-1表示倒数第一 +1) "value2" +2) "value3" +``` + +**通过 `rpush/rpop` 实现栈:** + +```bash +127.0.0.1:6379> rpush myList2 value1 value2 value3 +(integer) 3 +127.0.0.1:6379> rpop myList2 # 将 list的头部(最右边)元素取出 +"value3" +``` + +我专门花了一个图方便小伙伴们来理解: + +![redis list](./images/redis/redis-list.png) + +**通过`lrange`查看对应下标范围的列表元素:** + +```bash +127.0.0.1:6379> rpush myList value1 value2 value3 +(integer) 3 +127.0.0.1:6379> lrange myList 0 1 # 查看对应下标的List列表, 0 为 start,1为 end +1) "value1" +2) "value2" +127.0.0.1:6379> lrange myList 0 -1 # 查看列表中的所有元素,-1表示倒数第一 +1) "value1" +2) "value2" +3) "value3" +``` + +通过 `lrange` 命令,你可以基于 list 实现分页查询,性能非常高! + +**通过 `llen` 查看链表长度:** + +```bash +127.0.0.1:6379> llen myList +(integer) 3 +``` + +#### Hash + +1. **介绍** :Hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组 + 链表)。不过,Redis 的 Hash 做了更多优化。另外,Hash 是一个 string 类型的 field 和 value 的映射表,**特别适合用于存储对象**,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。 +2. **常用命令:** `hset,hmset,hexists,hget,hgetall,hkeys,hvals` 等。 +3. **应用场景:** 系统中对象数据的存储。 + +下面我们简单看看它的使用! + +```bash +127.0.0.1:6379> hset userInfoKey name "guide" description "dev" age "24" +OK +127.0.0.1:6379> hexists userInfoKey name # 查看 key 对应的 value中指定的字段是否存在。 +(integer) 1 +127.0.0.1:6379> hget userInfoKey name # 获取存储在哈希表中指定字段的值。 +"guide" +127.0.0.1:6379> hget userInfoKey age +"24" +127.0.0.1:6379> hgetall userInfoKey # 获取在哈希表中指定 key 的所有字段和值 +1) "name" +2) "guide" +3) "description" +4) "dev" +5) "age" +6) "24" +127.0.0.1:6379> hkeys userInfoKey # 获取 key 列表 +1) "name" +2) "description" +3) "age" +127.0.0.1:6379> hvals userInfoKey # 获取 value 列表 +1) "guide" +2) "dev" +3) "24" +127.0.0.1:6379> hset userInfoKey name "GuideGeGe" # 修改某个字段对应的值 +127.0.0.1:6379> hget userInfoKey name +"GuideGeGe" +``` + +#### Set + +1. **介绍 :** Set 类似于 Java 中的 `HashSet`。Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。比如:你可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程。 +2. **常用命令:** `sadd,spop,smembers,sismember,scard,sinterstore,sunion` 等。 +3. **应用场景:** 需要存放的数据不能重复以及需要获取多个数据源交集和并集等场景 + +下面我们简单看看它的使用! + +```bash +127.0.0.1:6379> sadd mySet value1 value2 # 添加元素进去 +(integer) 2 +127.0.0.1:6379> sadd mySet value1 # 不允许有重复元素 +(integer) 0 +127.0.0.1:6379> smembers mySet # 查看 set 中所有的元素 +1) "value1" +2) "value2" +127.0.0.1:6379> scard mySet # 查看 set 的长度 +(integer) 2 +127.0.0.1:6379> sismember mySet value1 # 检查某个元素是否存在set 中,只能接收单个元素 +(integer) 1 +127.0.0.1:6379> sadd mySet2 value2 value3 +(integer) 2 +127.0.0.1:6379> sinterstore mySet3 mySet mySet2 # 获取 mySet 和 mySet2 的交集并存放在 mySet3 中 +(integer) 1 +127.0.0.1:6379> smembers mySet3 +1) "value2" +``` + +#### Sorted Set + +1. **介绍:** 和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过score的范围来获取元素的列表。有点像是Java中 HashMap和 TreeSet 的结合体。 +2. **常用命令:** `zadd,zrange,zrem,zcard` 等 +3. **应用场景:** 需要对数据根据某个权重进行排序的场景。比如在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息。 + +```bash +127.0.0.1:6379> zadd myZset 3.0 value1 # 添加元素到 sorted set 中 3.0 为权重 +(integer) 1 +127.0.0.1:6379> zadd myZset 2.0 value2 1.0 value3 # 一次添加多个元素 +(integer) 2 +127.0.0.1:6379> zcard myZset # 查看 sorted set 中的元素数量 +(integer) 3 +127.0.0.1:6379> zscore myZset value1 # 查看某个 value 的权重 +"3" +127.0.0.1:6379> zrange myZset 0 -1 # 顺序输出某个范围区间的元素,0 -1 表示输出所有元素 +1) "value3" +2) "value2" +3) "value1" +127.0.0.1:6379> zrange myZset 0 1 # 顺序输出某个范围区间的元素,0 为 start 1 为 stop +1) "value3" +2) "value2" +127.0.0.1:6379> zrevrange myZset 0 1 # 逆序输出某个范围区间的元素,0 为 start 1 为 stop +1) "value1" +2) "value2" +``` ### Redis 设置过期时间 @@ -467,6 +602,7 @@ public Object getObjectInclNullById(Integer id) { ### 参考 - 《Redis 开发与运维》 +- 《Redis设计与实现》 - Redis 命令总结:http://Redisdoc.com/string/set.html ## 公众号