目录
Redis简介
安装配置(Windows)
GUI工具RedisInsight的使用
十大数据类型(5基本5高级)
字符串String
列表List
集合Set(S)
有序集合SortedSet(Z)
哈希Hash(H)
发布订阅模式
消息队列Stream(X)
地理空间Geospatial(GEO)
HyperLogLog(PF)
位图Bitmap(BIT)
位域BitField
事务
数据持久化
主从复制
哨兵模式
Redis简介
-  官网:Redis 教程_redis教程 
-  Remote DIctionary server是一个开源的基于内存的数据存储系统 
-  作用 -  数据库DB缓存Cache 
-  消息队列MQ 
-  ...... 
-  最热门NoSQL数据库之一 
 
-  
-  Mysql -  基于磁盘IO,读写操作速度与内存相比非常慢 
-  Redis:基于内存的数据存储系统 
 
-  
-  使用方式 -  命令行界面CLI(Command Line Interface) 
-  应用程序接口API(Application Programming Interface) 
-  图 形用户界面GUI(Graphical User Interface) 
 
-  
安装配置(Windows)
-  WSL-安装Linux系统-安装Redis 
-  Docker-下载Redis镜像-运行Redis 
-  安装文件-简单(but比较老的5.0版本) -  MAC/Linux启动服务:redis-server 
-  Windows:redis-server.exe 
-  启动客户端:redis-cli 
 
-  
GUI工具RedisInsight的使用
-  优点 -  更方便操作redis 
-  直观看到redis的内存使用情况 
-  自带所有命令的说明文档 
-  本地连接到远程的redis服务 
 
-  
十大数据类型(5基本5高级)
-  redis中的数据以键值对key-value存储 
-  默认使用字符串存储数据,二进制安全 
字符串String
-  设置:set key value 
-  取值:get key(区分大小写) 
-  删除:del key -  flushall:把数据库里面的键都删除掉(慎用) 
 
-  
-  判断是否存在:exists key 
-  查找:keys+ -  *:所有 
-  *me:以me结尾的键 
 
-  
-  登录:redis-cli --raw -  以原始的形式显示内容 
-  如果设置键值对用了中文,会以二进制的形式输出,所以要--raw 
 
-  
-  清空页面:clear 
-  设置一个带有过期时间(释放内存,用户校对)的键值对 -  TTL key(Time to live):查看过期时间 
-  expire key 10:设置过期时间10s 
-  setex key 10 value:设置一个带有过期时间的键值对 
-  setnx key value:只有当键不存在时才设置键的值,键存在则不做任何动作 
 
-  
列表List
-  一般用来存储和操作一组有顺序的数据 
-  LPUSH key value1 [value2] :将一个或多个值插入到列表头部 
-  LRANGE key start stop:获取列表指定范围内的元素 -  start:0|stop:-1则可获取从第一个到最后一个 
 
-  
-  RPOP key:移除并获取列表最后一个元素 -  后面加个n:表示要删除的列表头部元素个数 
 
-  
-  LLEN key:获取列表长度 
-  RPOPLPUSH source destination: 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 -  实现了一个最简单的先进先出队列 
 
-  
-  LTRIM key start stop:列表只保留指定区间内的元素 
集合Set(S)
-  列表中的元素可以重复 
-  set中的元素不可重复,不具有顺序 
-  SADD key member1 [member2]: 向集合添加一个或多个成员 
-  SISMEMBER key member:判断元素是否在集合中 
-  SREM key member1 [member2]:删除集合中一个或多个成员 
-  集合运算:交集 并集 差集 
有序集合SortedSet(Z)
-  每个元素都会关联一个浮点类型的分数,从而对元素进行从小到大的排序 
-  元素唯一,但分数可重复 
-  ZADD key score1 member1 [score2 member2]: 向有序集合添加一个或多个成员,或者更新已存在成员的分数 
-  ZRANGE key start stop: 通过索引区间返回有序集合成指定区间内的成员 -  0 -1:所有 
-  后+ [WITHSCORES] :同时显示分数 
 
-  
-  ZSCORE key member:返回成员的分数值 
-  ZREVRANK key member:反转,有序集成员按分数值递减(从大到小)排序 
-  ZRANK key member:指定成员的索引 
-  ZREM key member :删除成员 
哈希Hash(H)
-  一个string类型的field和value的映射表(键值对集合) 
-  适合存储对象 
-  HSET key field value:将哈希表 key 中的字段 field 的值设为 value HSET person name lisi HSET person age 100 
-  HGET key field:获取指定字段的值 
-  HGETALL key:获取在哈希表中指定 key 的所有字段和值 
-  HDEL key field1 [field2]: 删除一个或多个哈希表字段 
-  HEXISTS key field:判断某个键值对是否存在 
-  HKEYS key:获取所有哈希表中的字段 
-  HLEN key:获取哈希表中字段的数量 
发布订阅模式
-  发送者(pub)发送消息,订阅者(sub)接收消息 
-  局限性: -  消息无法持久化 
-  无法记录历史信息 
 
-  
-  SUBSCRIBE channel [channel]: 订阅一个或多个频道的信息 
-  PUBLISH channel message: 将信息发送到指定的频道 
消息队列Stream(X)
-  轻量级:解决发布订阅功能的局限性 
-  XADD key id field value:添加一条消息 -  id:*自动生成一个消息的id 
 
-  
-  XLEN key:查看Stream中消息的数量 
-  XRANGE key start end [COUNT count]:查看消息中的详细内容 -  start-;end+:所有消息 
 
-  
-  XDEL key id[id...]:删除消息 
-  XTRIM key MAXLEN | MINID [ = | ~ ] threshold [LIMIT count] -  MAXLEN 0:删除所有消息 
 
-  
-  XREAD COUNT count BLOCK milliseconds STREAMS key [key...] id [id...]:读取消息 -  COUNT 2:一次读取两条消息 
-  BLOCK 1000:没有消息的话就阻塞1000ms(1s) 
-  id -  0:表示从头开始读取 
-  $|>:读取最新消息 
 
-  
 
-  
-  XGROUP CREATE key id | $ [MKSTREAM] [ENTRIESREAD entries-read]:创建消费者组 
-  XINFO GOURPS key:查看消费者组的信息 
-  XGROUP CREATECONSUMER key group consumer:添加消费者 
-  XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key id:读取消息(被消费) 
地理空间Geospatial(GEO)
-  存储地理位置信息的数据结构 
-  支持对地理位置进行各种计算操作 
-  GEOADD key [NX|XX] [CH] longitude latitude member:添加一个地理位置信息 GEOADD city 116.405285 39.904989 beijing //经度纬度 
-  GEOPOS key member:获取某个位置的经纬度 
-  GEODIST key member1 member2:计算两个地理位置之间的距离 -  默认单位为m 
-  想换算成km,则在后面加上km 
 
-  
-  GEOSEARCH key frommember member | FROMLONGLAT longitude latitude :搜索指定范围内的成员 -  FROMLONGLAT -  BYRADIUS 300km:圆形范围,半径 
-  BYBOX:矩形范围 
 
-  
 
-  
HyperLogLog(PF)
-  一种用来做基数(一个集合中不计算重复元素的个数)统计的算法 
-  适合用来做一些对精确度要求不高,而且数据量非常大的统计工作 -  统计网站的UV 
-  统计某个词的搜索次数 
 
-  
-  PFADD key element [element ...]:添加指定元素到 HyperLogLog 中 
-  PFCOUNT key [key ...]:查看基数估算值 
-  PFMERGE key sourcekey [sourcekey ...]:合并 HyperLogLog 
位图Bitmap(BIT)
-  字符串类型的扩展:使用String类型来模拟一个Bit数组 
-  支持位运算:与 或 非 
-  应用场景: -  记录用户的签到情况 
-  在线状态 
-  有没有点赞 
-  等等 
 
-  
-  SETBIT key offset value:设置某个偏移量的值 SETBIT dianzan 0 1 SETBIT dianzan 1 0  
-  SET key value SET dianzan "\xF0"   -  16进制可以一次性设置多个位的值 
 
-  
-  GETBIT key offset:获取点赞的每一位值 
-  BITCOUNT key [start end[BYTE|BIT]]:统计数量 
-  BITPOS key bit [start end[BYTE|BIT]]:用来获取某个key里面第一个出现0或者1的位置 
位域BitField
-  将很多小的整数存储到一个较大的位图中 -  更加高效地使用内存 
 
-  
-  例子 -  开发了一个游戏,可以利用位域来记录每个玩家在游戏中的一些关键信息(金钱、等级、是否在线等) 
 
-  
-  BITFIELD key [GET encoding offset | [OVERFLOW WRAP | SATLEATL]:设置 -  将get改成set:获取 
 
-  
-  GET key:查看内存中现在的情况 
事务
-  可以一次执行多个任务 -  某一个命令执行失败,后面的命令依然执行 
 
-  
-  MULTI:用于开启一个事务 -  事务开启后,所有的命令都会被放入到一个队列中 
 
-  
-  EXEC:执行事务中的所有命令 
-  MULTI:事务块开始 
-  EXEC 
数据持久化
-  redis是一个基于内存的数据库,没有持久化:服务器重启or断电,所有数据都会丢失 
-  两种持久化 -  RDB(Redis Database)方式 -  适合备份 
-  在指定时间间隔内,将内存中的数据快照写入磁盘。是某一个时间点上数据的完整副本 
-  可通过配置文件中的save参数来配置 
 
-  
-  AOF(Append Only File)方式 -  追加文件 
-  执行写命令的时候,不仅会将命令写入到内存中,同时将命令写入到一个追加的AOF文件中 
-  以日志的形式记录每一个写操作 
-  开启AOF方式:在配置文件中将append only这个参数的值改为yes 
 
-  
 
-  
主从复制
-  将一台redis服务器(主节点)的数据复制到其他的redis服务器(从节点) -  一对多 
-  单向复制 
-  主节点:写操作,异步发送 
-  从节点:读操作,主动更新 
 
-  
-  配置主从复制 -  只需要修改从节点的配置(2种) 
 -  通过命令行执行命令 
-  通过配置文件来修改 
 
-  
















![[Lc(2)滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数](https://i-blog.csdnimg.cn/img_convert/117ec50d3d53ea3e2357938b1eb87222.png)


