redis

redis

1.redis入门概述

1.1 redis是什么

(1)Redis:REmote Dictionary Server(远程字典服务器)
在这里插入图片描述
(2)作者
拜拜神,Redis之父安特雷兹
GitHub: 链接
个人博客: 链接

1.2.能干嘛
1.2.1 主流功能与应用

(1)分布式缓存,挡在mysql数据库之前的带刀护卫

(2)内存存储和持久化(RDB + AOF)

    redis支持异步讲内存中的数据写到硬盘上,同时不影响继续服务

(3)高可用架构搭配     1.单机     2.主从     3.哨兵     4.集群 (4) 缓存穿透,击穿,雪崩 (5) 分布式锁 (6) 队列

    Reids提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。  
  我们常通过Reids的队列功能做购买限制。比如到节假日或者推广期间,进行一些活动,    
对用户购买行为进行限制,限制今天只能购买几次商品或者一段时间内只能购买一次。也比较适合适用

(7) 排行版+点赞

在互联网应用中,有各种各样的排行榜,如电商网站的月度销量排行榜、社交APP的礼物排行榜、小程序的投票排行榜等等。Redis提供的zset数据类型能够快速实现这些复杂的排行榜。
比如小说网站对小说进行排名,根据排名,将排名靠前的小说推荐给用户

(8) ......
1.2.2 总体功能概述

请添加图片描述

1.2.3 优势

 (1)性能极高 - Redis能读的速度是 110000 次/秒,写的速度是81000次/秒
 (2)Redis数据类型丰富,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构存储
 (3)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
 (4)Redis支持数据备份,即master-slave模式的数据备份

1.2.4 小总结

在这里插入图片描述

1.3 去哪下
1.3.1 官网地址:

英文:https://redis.io/
中文:http://www.redis.cn/
           https://www.redis.com.cn/documentation.html

1.3.2 去下载安装包

(1) 地址:https://www.redis.cn/
(2) 本次笔记学习Redis7:redis-7.0.0.tar.gz
(3) Redis6:
在这里插入图片描述
(4) 其他文档资料

Redis源码地址:https://github.com/redis/redis 中国大陆打开慢,多刷几次或梯子试试

Redis在线测试:https://try.redis.io Redis命令参考:http://doc.redisfans.com/

1.4 怎么玩

(1)官网 (2)多种数据类型基本操作和配置 (3)持久化和复制,RDB/AOF (4)事务的控制 (5)复制,集群等

1.5 Redis迭代演化和Redis7新特性浅谈
1.5.1 时间推移,版本升级

  Redis之父安特雷兹的发言 http://antirez.com/news/132

1.5.2 Redis版本迭代推演介绍

(1)几个里程碑式的重要版本
在这里插入图片描述

(2)命名规则
基数非稳定版本,偶数为稳定版本
在这里插入图片描述

1.5.3 Redis新特性

(1)新特性

查看地址:https://github.com/redis/redis/redis/releases

在这里插入图片描述
(2) 部分新特性总览

  1. Redis Functions
  2. Client-eviction
  3. Multi-part AOF
  4. ACL V2
  5. 新增命令
  6. listpack代替ziplist
  7. 底层性能提升
  8. 。。。。。 具体下面详细介绍

(3) 本次将对Redis7的一部分新特性做说明(not all)
在这里插入图片描述

2.Redis安装配置

2.1 自己购买云服务器

自己购买阿里云,青牛云,腾讯云或华为云服务器,自带CentoOs或者Ubuntu环境,直接开干

2.2 VMWare本地虚拟机

(1)VMWare虚拟机的安装,不讲解,默认懂 (2)如果查看自己的linux式32位还是64位

getconf LONG_BIT 返回是多少就是几位
2.3 Redis的安装
2.3.1 日常用什么系统安装redis?
由于企业里面做Redis开发,99%都是linux版的运用和安装,几乎不会涉及到window版,上一步的讲解只是为了知识的完整性,windows版不作为重点,企业实战就任一个版:Linux
2.3.2 windows版安装

在这里插入图片描述
在这里插入图片描述

2.3.3 Linux版安装
2.3.3.1 Linux环境安装Redis必须先具备gcc编译环境
  1. 什么是gcc:<br/

gcc是linux下的一个编译程序,是C程序的编译工具。GCC(GNU Compiler Collection) 是 GNU(GNU’s
Not Unix) 计划提供的编译器家族,它能够支持 C, C++, Objective-C, Fortran, Java 和 Ada
等等程序设计语言前端,同时能够运行在 x86, x86-64, IA-64, PowerPC, SPARC和Alpha
等等几乎目前所有的硬件平台上。鉴于这些特征,以及 GCC 编译代码的高效性,使得 GCC
成为绝大多数自由软件开发编译的首选工具。虽然对于程序员们来说,编译器只是一个工具,除了开发和维护人员,很少有人关注编译器的发展,但是 GCC
的影响力是如此之大,它的性能提升甚至有望改善所有的自由软件的运行效率,同时它的内部结构的变化也体现出现代编译器发展的新特征。

  1. 查看gcc:
    gcc-v
  2. 安装
    3.1安装redis之前需要具备c++库环境
    3.2 yum -y install gcc-c++
2.3.3.2 版本选择

(1)查看自己redis版本的命令

redis-server -v

(2) 安全bug按照官网提示,升级成为6.0.8及以上
在这里插入图片描述
(3)目前建议都需要升级到6.0.8版本以上
(4)本次我们用Redis7.0

2.3.3.3 Redis7 按照步骤

(1)下载获得redis-7.0.0.tar.gz后将它放入我们的Linux目录/opt
(2)/opt目录下解压redis

tar -zxvf redis-7.0.0.tar.gz

  (3) 进入目录

cd redis-7.0.0

  (4) 在redis-7.0.0目录下执行make命令
在这里插入图片描述
  (5) 查看默认安装目录:user/local/bin

  5.1 Linux下的/usr/local 类似我们windows系统下的C:\Program Files
  5.2 安装完后查看

redis-benchmark:性能测试工具,服务启动后运行该命令,看看自己本子性能如何
redis-check-aof: 修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump:修复有问题的dump.rdb文件
redis-cli: 客户端,操作入口
redis-sentinel:redis集群使用
redis-server: Redis服务器启动命令

(6)将默认的redis.conf拷贝到自己定义好的一个路径下,比如/myredis
在这里插入图片描述

(7)修改/myredis目录下redis.conf配置文件做初始化设置
在这里插入图片描述
8.启动服务

/usr/local/bin 目录下运行redis-server,启用/myredis目录下的redis.config目录

9.连接服务
(1)redis-cli连接和“乒乓球”
在这里插入图片描述
(2)备注说明:如果你不配置Requirepass 就不用密码这一步麻烦

10.Redis端口为啥是6379
在这里插入图片描述
(11)关闭

单实例关闭: redis-cli -a 111111 shutdown
多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown
2.3.3.4 Redis7 卸载步骤

(1)本机如果已经存在redis,但不是redis7,想卸载安装
(2)停止redis-server 服务
在这里插入图片描述
(3)删除/usr/local/lib目录下与redis相关的文件
在这里插入图片描述

2.3.4 docker版的redis安装配置参考:

目前还没有学docker哈哈哈哈

3.Redis10大数据类型

3.1 which 10

提前声明:这里说的数据类型是value的数据类型,key的类型都是字符串

3.1.1 redis字符串(String)

String 字符串
String是redis最基本的类型,一个key对应一个value
String类型是二进制安全的,意思是redis的String可以包含任何数据,比如jpg图片或者序列化的对象
String类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

3.1.2 redis列表(List)

List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)
它的底层实际是给双端链表,最多可以包含2^32 -1个元素(4294967295,每个列表超过40亿个元素)

3.1.3 redis哈希表(Hash)

Redis hash 是一个string类型的field(字段)和value的(值)的映射表,hash特别适合用于存储对象
Redis中每个hash可以存储2^32-1键值对(40多亿)

3.1.4 redis集合(Set)

Set(集合)
Redis的Set是String类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是intset或hashtable
Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是0(1)
集合中最大的成员数为2^32-1(4294967295,每个集合可存储40多亿成员)

3.1.5 redis有序集合(Zset)

zset(sorted set: 有序集合)
Redis zset和set一样也是string类型元素的集合,且不允许重复的成员
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序的
zset的成员是唯一的,但是分数(score)却可以重复
zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是0(1),集合中最大的成员数为2^32-1

3.1.1 redis地理空间(GEO)

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,包括:
添加地理位置的坐标
获取地理位置的坐标
计算两个位置之间的距离
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

3.1.1 redis基数统计(HyperLogLog)

HyperLogLog 是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且很小的
在Redis里面,每个HyperLogLog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数,这和计算基数时,元素越多越费
但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素

3.1.1 redis位图(bitmap)

由0和1状态表现的二进制位的bit数组

在这里插入图片描述

3.1.1 redis位域(bitfield)

通过bitfield命令可以一次操作多个比特位域(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的响应操作的执行结果
说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作

3.1.1 redis流(Stream)

Redis Stream 是Redis5.0版本新增加的数据结构
Redis Stream 主要用于消息队列(MQ,Message Queue),Redis本身是有一个Redis发布订阅(pub/sub来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开,Redis宕机等,消息就会被丢弃
简单来说发布订阅(pub/sub)可以分发消息,但无法记录历史消息
而Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息丢失

3.2 哪里去获得redis常见数据类型操作命令

官网英文:https://redis.io.commands/
中文:http://www.redis.cn/commands.html

3.3 Redis键(key)
3.3.1 常用

在这里插入图片描述

3.3.2 案例

keys * 查看当前库所有的key
exists key 判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的key数据
unlink key 非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作
ttl key 查看还有多少秒过期,-1标识永不过期,-2表示已过期
expire key 秒钟 为给定的key设置过期时间
move key dbindex【0-15】 将当前数据库中的key移动到给定的数据库db当中
select dbindex 切换数据库【0-15】,默认为0
dbsize 查看当前数据库key的数量
flushdb 清空当前数据库
flushall 清空所有数据库

3.4 数据类型命令及落地运用
3.4.1 官网命令大全网址

英文:https://redis.io/commands/
中文:http://www.redis.cn/commands.html

3.4.2 备注

命令不区分大小写,而key是区分大小写的
永远的帮助命令,help @类型
help @string
help @list
help @hash
help @hyperloglog

3.4.3 Redis字符串(String)
3.4.3.1 常用

在这里插入图片描述

单值单value

3.4.3.2 案例

3.4.3.2.1 get set

set key value
get key
在这里插入图片描述

同时设置/获取多个键值
MSET key value [key value …]
MGET key [key …]
mset/mget/msetnx
在这里插入图片描述

获取指定区间范围内的值
getrange/setrange
在这里插入图片描述

数值增减
一定要是数字才能进行加减
递增数字 INCR key
增加指定的整数 INCRBY key increment
递减数值 DECR key
减少指定的整数 DECRBY key decrement

获取字符串长度和内容追加
STRLEN key
APPEND key value

分布式锁
setnx key value
setex(set with expire)键秒值/setnx(set if not exist)
在这里插入图片描述
这里简单了解即可,后面会深度学习

getset(先get再set)
在这里插入图片描述

应用场景
抖音视频点赞
是否喜欢文章

3.4.4 Redis列表(List)
3.4.4.1 常用

在这里插入图片描述

单key多value

3.4.4.2 简单说明

一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。
left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
在这里插入图片描述

3.4.4.3 案例

(1) lpush/rpush/lrange
(2) lpop/rpop
在这里插入图片描述
(3) lindex,按照索引下标获得元素(从上到下)
在这里插入图片描述

(4) llen 获取列表中元素的个数
(5) lrem key 数字N 给定值v1 解释(删除N个值等于V1的元素)
在这里插入图片描述

(6) ltrim key 开始index 结束index,截取指定范围的值后再赋值给key
在这里插入图片描述

(7) rpoplpush 源列表目的列表
在这里插入图片描述
(8) lset key index value
在这里插入图片描述
(9) linsert key before/after 已有值 插入新的值
在这里插入图片描述
(10)应用场景

微信公众号订阅的消息

3.4.5 Redis哈希(Hash)
3.4.5.1 常用

在这里插入图片描述

KV模式不变,但V是一个键值对

3.4.5.2 案例

(1) hset/hget/hmset/hmget/hgetall/hdel
在这里插入图片描述
(2) hlen 获取某个key内的全部数量
(3) hexists key 在key里面的某个值的key
(4) hkeys/hvals 在所有的key或values
(5) hincrby/hincrbyfloat
在这里插入图片描述

(6) hsetnx
在这里插入图片描述
(7) 应用场景

JD购物车早期 设计目前不再采用,当前小中厂可用

3.4.6 Redis集合(Set)
3.4.6.1 常用

在这里插入图片描述

单值多value,且无重复

3.4.6.2 案例

(1) SADD key member 【member …】 添加元素
(2) SMEMBERS key 遍历集中中的所有元素
(3) SISMEMBER key member 判断元素是否在集合中
(4) SREM key member 【member …】 删除元素
(5) scard,获取集合里面的个数
在这里插入图片描述

(6) SRANDMEMBER key 【数字】

从集合中随机展现设置的数字个数元素,元素不删除
在这里插入图片描述

(7) SPOP key 【数字】

从集合中随机弹出一个元素,出一个删一个
在这里插入图片描述
(8)smove key1 key2 在key1里已存在的某个值
将key1里已存在的某个值赋给key2

(9) 集合运算

A,B A abc123 B 123ax

集合的差集运算 A-B

属于A单不属于B的元素构成集合
SDIFF key 【key …】

集合的并集运算A U B

属于A或者属于B的元素合并后的集合
SUNION key 【key …】

集合的交集运算

属于A 同时也属于B的共同拥有的元素构成的集合
SINTER key 【key …】
SINTERCARD numkeys key【key …】【LIMIT limit】
redis7新命令,它不返回结果集,而只返回结果的基数,
返回由所有给定集合的交集产生的集合的基数
在这里插入图片描述

应用场景

微信抽奖小程序
微信朋友圈点赞查看同赞朋友
QQ内推可能认识的人

3.4.7 Redis有序集合Zset(sorted set)

在set基础上,每个val值前加一个score分数表
之前set是k1 v1 v2 v3
现在zset是k1 score1 v1 score2 v2

3.4.7.1 常用

在这里插入图片描述

3.4.7.2 案例

向有序集合中加入一个元素和该元素的分数

(1)ZADD key score member【score member …】 添加元素
在这里插入图片描述
(2)ZRANGE key start stop 【withscores】

按照元素分数从小到大的顺序
返回索引从start到stop之前的所有元素

(3)zrevrange
在这里插入图片描述
(4)ZRANGEBYSCORE key min max 【WITHSCORES】【LIMIT offset count】

获取指定分数范围的元素
withscores
( 不包含
limit 作用是返回限制 limit 开始下标步 多少步
在这里插入图片描述

(5) ZSCORE key member

获取元素的分数

(6) ZCARD key

获取集合中元素的数量

(7)zrem key 某score下对应的value值,作用是删除元素
在这里插入图片描述
(8) ZINCRBY key increment member

增加某个元素的分数

(9) ZCOUNT key min max

获取指定分数范围内的元素个数

(10)ZMPOP

从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对
在这里插入图片描述

(11) zrank key values值,作用是获得下标值

(12)zrevrank key vlaues值,作用是逆序获得下标值
在这里插入图片描述
(13)应用场景
根据商品销售对商品进行排序显示

3.4.8 Redis位图

由0和1状态表现的二进制的bit数组

3.4.8.1 需求

用户是否登录过Y,N,比如京东每日签到送京豆
电影,广告是否被点击播放过
钉钉打卡上下班,签到统计
。。。。。

3.4.8.2 是什么

在这里插入图片描述

3.4.8.3 能干嘛

用于状态统计
Y,N,类似AtomicBoolean

3.4.8.4 基本命令

(1)setbit

setbit key offset value
在这里插入图片描述
setbit 键 偏移位 只能0或者1
bitmap的偏移量是从0开始算的

(2) getbit

getbit key offset

(3)strlen

统计字节数占用多少
在这里插入图片描述

(4)bitcount

全部键里面含有1的有多少个
在这里插入图片描述

(5) bitop
在这里插入图片描述

(6)setbit和getbit案例说明

按照天
在这里插入图片描述

(7) 应用场景

一年365天,全年天天登录占用多少字节
在这里插入图片描述

按照年
按年去存储一个用户的签到情况,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 44 MB 就足够了。
假如是亿级的系统,
每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高。
此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销。

3.4.9 Redis基数统计(HyperLogLog)
3.4.9.1 需求

统计某个网址的UV,统计某个文章的UV
什么是UV
(1)Unique Visitor,独立访客,一般理解为客户端IP
(2)需要去重考虑
用户搜索网站的关键词的数量
统计用户每天搜索不同词条个数

3.4.9.2 是什么

去重复统计功能的基数估计算法-就是HyperLogLog
基数:是一种数据集,去重后的真实个数
案例CASE:
在这里插入图片描述
基数统计:用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算
去重脱水后的真实数据

3.4.9.3 基本命令

在这里插入图片描述

3.4.9.4 应用场景

编码实战案例见高级篇
天猫网站首页亿级uv的redis统计方案

3.4.10 Redis地理空间(GEO)
3.4.10.1 简介

移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?
地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,y0)附近r公里范围内部的车辆
使用如下SQL即可:
select taxi from position where x0-r < x < x0 + r and y0-r < y < y0+r
但是这样会有什么问题呢?
1.查询性能问题,如果并发高,数据量大这种查询是要搞垮数据库的
2.这个查询的是一个矩形访问,而不是以我为中心r公里为半径的圆形访问。
3.精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差

3.4.10.2 原理

核心思想就是将球体转换为平面,区块转换为一点

在这里插入图片描述

Redis在3.2版本以后增加了地理位置的处理

3.4.10.3 命令

GEOADD 多个经度(longitude),维度(latitude),位置名称(member)添加到指定的可以中
GEOPOS 从键里面返回所有给定位置元素的位置(经度和纬度)
GEODIST 返回两个给定位置之间的距离
GEORADIUS以给定的经纬度为中心,返回与中心的距离不超过给定最大距离的所有位置元素。
GEORADIUSBYMEMBER 跟GEORADIUS类似
GEOHASH返回一个或多个位置的元素的Geohash表示

3.4.10.4 命令实操

(1)如何获得某个地址的经纬度

http://api.map.baidu.com/lbsapi/getpoint/

(2)GEOADD添加经纬度坐标
在这里插入图片描述

中文乱码如何处理
在这里插入图片描述

(3)GEOPOS返回经纬度

在这里插入图片描述

(4)GEOHASH返回坐标的geohash表示
在这里插入图片描述

geohash算法生成的base32编码值
3维变2维变1维
在这里插入图片描述

(5) GEODIST 两个位置之间的距离
在这里插入图片描述

(6)GEORADIUS

以半径为中心,查找附件的XXX

在这里插入图片描述

(7)GEORADIUSBYMEMBER
在这里插入图片描述
(8) 应用场景

美团地图位置附近的酒店推送
高德地图附件的核算检查点

3.4.11 Redis流(Stream)
3.4.11.1 是什么

redis5.0之前的痛点
Redis 消息队列的2种方案
List实现消息队列
list实现方式其实就是点对点的模式

(Pub/sub)
在这里插入图片描述

Redis5.0版本新增加了一个更强大的数据结构 -----Stream
Redis版的MQ消息中间件+阻塞队列

3.4.11.2 能干嘛

实现消息队列,它支持消息的持久化,支持自动生成全局唯一ID,支持ack确认消息的模式,支持消费组模式等,让消息队列更加稳定和可靠

3.4.11.3 底层结构和原理说明

stream结构
在这里插入图片描述

3.4.11.4 基本命令理论简介

####### 3.4.11.4.1 队列相关指令
在这里插入图片描述
(2)消费组相关指令
在这里插入图片描述
(3)四个特殊符号

-+ 最小和最大可能出现的id
$ $表示只消费新的消息,当前流中最大的id,可用于将要到来的信息
> 用于XREADGROUP命令,表示迄今还没有发送给组中使用者的信息,会更新消费者组的最后ID
* 用于XADD命令中,让系统自动生成id

3.4.11.5 基本命令代码实操

####### 3.4.11.5.1 队列相关指令

(1) XADD 添加消息到队列末尾

消息ID必须要比上个ID大
默认用星号表示自动生成规矩
* 用于XADD命令中,让系统自动生成ID

在这里插入图片描述

(2) XRANGE

用于获取消息列表(可以指定范围),忽略删除的消息
start表示开始值,-代表最小值
end表示结束值,+代表最大值
count 表示最多获取多少个值

在这里插入图片描述

(3)XRERANGE

与XRANGE的区别在于,获取消息列表元素的方向是相反的,end在前,start在后

在这里插入图片描述

(4)XDEL
在这里插入图片描述
(5)XLEN

用于获取Stream队列的消息的长度

在这里插入图片描述

(6)XTRIM

用于对Stream的长度进行截取,如超长会进行截取
MAXLEN 允许的最大长度,对流进行修剪限制长度
在这里插入图片描述
MINID 允许最小的id,从某个id值开始比该id值小的将会被抛弃
在这里插入图片描述

(7)XREAD

用于获取消息(阻塞/非阻塞),只会返回大于指定ID的消息
在这里插入图片描述

非阻塞
在这里插入图片描述

阻塞
在这里插入图片描述

小总结(类似java里面的阻塞队列
在这里插入图片描述

####### 3.4.11.5.1 队列相关指令

(1) XGROUP CREATE

用于创建消费者组

在这里插入图片描述
(2)XREADGROUP GROUP

“>” ,表示从第一条尚未被消费的消息开始读取
消费组groupA的消费者consumer1从mystream消息队列中读取所有消息
在这里插入图片描述

但是,不同消费组的消费者可以消费同一条消息
在这里插入图片描述

消费者目的??
在这里插入图片描述

(3)重点问题:
在这里插入图片描述

(4)XPENDING

查询每个消费组内所有消费者 【已读取,但尚未确认】的消息
在这里插入图片描述
查看某个消费者具体读取了哪些数据
在这里插入图片描述

XACK

向消息队列确认消息处理已完成
在这里插入图片描述
####### 3.4.11.5.3 XINFO用于打印Stream\Consumer\Group的详细信息

在这里插入图片描述

3.4.11.6 使用建议

Stream还是不能100%等价于Kafka,RabbitMQ来使用的,生产案例少,慎用

3.4.12 Redis位域(bitfield)

了解即可

3.4.12.1 是什么

官网地址:https://redis.com.cn/commands/bitfield.html
在这里插入图片描述

3.4.12.2 能干嘛

位域修改
溢出控制

将一个Redis字符串看作是一个由二进制位组成的数组
并能对变长位宽和任意没有字节对齐的指定整形位域进行寻址和修改

3.4.12.3 命令基本语法

在这里插入图片描述

3.4.12.4 案例

(1)Ascii码表

https://ascii.org.cn/

(2) 基本命令代码实操
BITFIELD key 【GET type offset】
在这里插入图片描述

BITFIELD key 【SET type offset value】
在这里插入图片描述

BITFIELD key 【INCRBY type offset increment】

默认情况下,INCRBY使用WRAP参数
在这里插入图片描述

在这里插入图片描述

后续更新学习笔记:
Redis持久化
Redis事务
Redis管道
Redis发布订阅
Redis复制(replica)
Redis哨兵(sentinel)
Redis集群(cluster)
Springboot集成Redis

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值