Redis 知识点罗列&速查
2021-07-27 11:49:55 61 举报
基本知识点的罗列和速查
作者其他创作
大纲/内容
Redis管道
SpringBoot中,使用 <font color="#4caf50">redisTemplate.<b>executePipelined</b>(RedisCallback<Object> rc)</font> 实现
Redis事务
开启事务
通过 <b>Multi</b> 开启事务
每一条命令被提交到事务中
命令入队列
Redis将请求放入事务队列中等待执行
服务器返回 <b>QURUD</b> 则表示命令已入队
执行事务
通过 <b>Exec</b> 命令执行事务
<font color="#e65100">Redis 事务中错误执行的命令不会影响其他命令</font>(可以通过 <b>Watch</b> 命令 监控/批量监控)
事务全部执行完,返回给客户端结果
SpringBoot实现
Redis 发布/订阅 Pub/Sub
<b>subscribe</b> 订阅1~n 个 频道(Channel)
<b>psubscribe</b> 订阅 1~n 个 符合给定模式的 频道
<b>unsubscribe</b> 退订指定频道
<b>publish</b> 发布信心到指定频道
<b>pubsub</b> 查看 发布/订阅系统 的状态
高可用
主从模式(Master-Slave)
复制原理
从数据库需加入配置,指明主数据库 / 主数据库无需任何配置
哨兵模式(Sentinel)
核心:检测到 Master 宕机时,自动将 Slave 切换到 Master,完成主备热切
集群模式(Cluster)
遵循规则:
各节点间通过 PING-PONG 机制互联(内部使用二进制协议优化传输速度)
某节点若「被超过半数的节点认为是 Fail 状态」,则该节点被标记为 Fail
客户端与Redis节点直连,只要是可用节点均可操作集群
Redis-Cluster 将<font color="#f68b1f">所有物理节点映射在 0~16383 的 slot(槽)上</font>,Cluster负责维护每个节点上数据槽的分配。(Redis会根据节点数量将槽大致均等地分布在不同节点)
核心:集群中一部分节点 失效/无法通信 时,仍然可以基于副本数据对外提供服务
持久化
<b>RDB</b> - Redis DataBase
<font color="#31a8e0">特点</font>:文件格式紧凑,数据的传输个恢复快速
<font color="#00a650">原理</font>:保存 .rdb 快照文件时,父进程 fork 出一个子进程,由子进程完成具体的持久化工作
<b>AOF</b> - Append Only File
<font color="#31a8e0">特点</font>:可以使用不同的 fsync 策略,且支持重写功能缩小日志文件大小
无 fsync
每秒 fsync
写时 fsync
<font color="#00a650">原理</font>:每次写操作会被保存到日志文件末尾
<b>角色</b>
内存数据库
缓存
消息中间件
<b>数据结构</b>
<font color="#c41230">String </font>- 字符串、整数、浮点数
<b>set</b> 设置、<b>get</b> 获取、<b>getset</b> 给key设置value并返回旧value、<b>append</b> 追加 、<b>mset</b> 设置一个或多个子字符、<b>mget</b> 获取多个值<b></b>
<b>setnx</b> 不存在时设置key的值,否则不响应、<b>msetnx</b> 当且仅当所有key均不存在时设置key的值,否则不响应
<b>setex</b> 将value关联到key,同时设置过期时间(单位 s)
<b>psetex</b> 将value关联到key,同时设置过期时间(单位 ms)
<b>incr</b> 自增、<b>decr</b> 自减、<b>incrby</b> 自定义增、<b>decrby</b> 自定义减
<b>getrange key start end</b> 返回指定区间的值
<b>setrange key start value</b> 在key的start位置插入value
<font color="#c41230">Hash</font> - k-v 映射表
hset、hget、hkeys、hvals...
<font color="#c41230">List</font> - 可重复有序集和
<b>rpush</b>、<b>lpop</b>、<b>lpush</b>、<b>rpop、lindex :</b>获取索引位置的value
<b>blpop</b> :移除列头元素,若没有则阻塞直至超时或等到可移除的元素
<b>lrange</b> :获取列表指定范围内的元素、<b>lset</b> :给索引位置key赋value
<b>linsert </b><i style="">key before/after pivot value</i>:在pivot元素 之前/之后 插入value这个元素
<b>lrem </b><i style="">key count value</i> : 移除count个等于value的元素 <font color="#0076b3">(lrem key 0 value : "删除list0中所有value值")</font><b></b>
<b>ltrim</b> :修剪不在指定区间内的元素
<font color="#c41230">Set</font> - 不可重复无序集合
<b>sadd</b> 增、<b>smembers</b> 查、<b>srem</b> 删、<b>scard</b> 数量
<b>smove</b> <i>set1 set2 key</i> :将set1中的key移至set2
<b>spop</b> :随机移除并返回set中的一个元素
<font color="#c41230">ZSet</font> - 带分数的不可重复有序集合
<b>zadd </b><i>key score1 value1 score2 value2 ...</i>
<b>zrange </b><i style="">key start stop</i> :返回 [start, stop] 间的所有成员
<b>zcard</b> 数量、<b>zrem</b> 删除、<b>zscore</b> <i style="">key member :</i>指定member分值
<b>zcount </b><i>key min max</i> :返回min~max间的存在数量
<b>zrank</b> :升序下的排名、<b>zrevrank</b> :降序下的排名
<font color="#662c90">BitMap</font> - 位图(1bit状态位)
<b>setbit</b>/<b>getbit</b> <i>key offset(0/1)</i>
<b>bitcount</b> <i>key [start end] :</i>统计offset=1的数目
<font color="#662c90">HyperLogLog</font> - 基数统计(计算一个Set中元素数目の概率)
<b>pfadd</b> :添加指定元素进入
<b>pfcount</b>:返回指定键的基数估计值
<b>pfmerge</b>:多合一
<font color="#662c90">Geo</font> - 地理位置信息
<font color="#662c90">Stream</font> - 5.0+ 可持久化消息队列
收藏
0 条评论
下一页