当前位置: 首页 > article >正文

Rdis速通

Rdis速通

  • liunx下安装
安装
sudo apt-get update
sudo apt install redis-server

启动服务器
redis-server
开启客户端(这里默认是使用本地redis服务)
redis-cli

在这里插入图片描述- CRUD
上面客户端连接到服务器之后我们可以开始进行操作了,因为redis的存储方式是基于内存的,所以速度很快,存储方式是Key-Vaule类型的,所以语法也比较简单。而且在客户端下可以还有有语法提示,非常的银杏

  • 初级操作
    注意,如果想显示中文的话,则进入客户端时的命令为redis-cli --raw
set key vaule   #创建数据,redis的key默认是字符串形式,<br/>
get key		    #查找
del key           #删除
exists key      #判断是否存在
keys *  /   keys  *me  #查找全部key值/查找以me结尾的key值

flushall			#删库跑路
expire key  秒数  /  setex key 秒数 value  #设置过期时间
TTL key                #查看过期时间 
quit                       #退出
clear					#清屏

  • 进阶操作(数据结构)
- 列表
lpush key value  #向列表左边插入元素,可以同时插入多个(列表名字就是key)
lrange key start end  #从左到右遍历列表元素
rpop key    #删除列表左边第一个元素
llen key     #查看列表长度
ltrim key start end    #删除start-end以外的所有元素


- 集合(s开头,不可以重复)
sadd key value			#向集合中插入元素
smembers key               #查看集合的元素
sismember key value     #value是否在集合key中
srem key  value           #删除集合key中的value元素
sinter/sunion/sdiff    #两个集合之间的运算

- 有序集合(z开头,不可重复,但是每个值会对隐蔽搞一个浮点数,从而进行排序,这个浮点数是可以重复的)
zadd key 数值 value 数值 value   #向集合中插入元素
zrange key start end  withscore                 #显示集合起始元素 (包括分数)
zscore key value						#显示value的值
zrank  key  value						#显示value的排名(默认从小到大)
zrevrank  key  value						#显示value的排名(默认从大到小)
zrem key value                            #删除元素

- 哈希(你可以理解成在redis这个大字典里嵌套小字典)
HSET hash_name key value   #在hash_name这个字典里设置{name:value}的键值对
HGET hash_name  key           #查值
HGETALL hash_name                #查所有键值对
HDEL hash_name key            #删除
HEXISTS hash_name key      #是否存在

-消息队列的实现

- 基于队列(无法实现消费者组,每次只能唤醒一个消费者)
#配合lpush和rpop可以实现简易的消息队列,但是rpop没有元素会返回nil,链接又断开了,不断轮训的话cpu会有压力,所以用brpop key 0 表示阻塞到来新的信息为止

-基于订阅(所有消费者都会收到信息,但是不支持可持久化(没有人订阅,消息会丢失),和历史信息)
subscribe 频道名						#订阅频道信息
publish 频道名 信息					#发布频道信息,这个信息不是键值对的形式

- 消息队列stream(X开头,redis5.0中引入,重点是可靠)
首先要创建消费者组,客户端加入到消费者组中,组间是共享的,组内的客户端是竞争关系
XGROUP CREATE mystream mygroup $   #mystream: 是你的流的名称。mygroup: 是你要创建的消费者组的名称。$: 表示消费者组应该从最新的消息开始消费。 
XGROUP SETID mystream mygroup consumer1 $     #这将在消费者组 mygroup 中添加一个消费者 consumer1。
XREADGROUP GROUP mygroup consumer1 COUNT 1 STREAMS mystream >		#GROUP mygroup consumer1: 指定消费者组和消费者。COUNT 1: 指定一次性从流中获取的消息数量(也可以换成BLOCK 0 阻塞的接受信息)。STREAMS mystream >: 指定要读取的流和读取的起始位置。

stream的可靠机制:支持确认机制和密等处理
每条消息ID右时间戳-序列号构成
消费者组维护两个:
last delivered ID,代表最后一个读过的ID
pennding list,表示正在处理的消息ID,它可以支持消息重试
(确认的消息会从这个list上消除,补偿服务会检查list有无长时间没有确认的,有则会处理改数据强制要求redis确认该信息,处理完之后,就消除,但如果原先卡主的进程恢复了,需要这个信息但list没有了,则会进行密等处理)


  • 事务
和关系型数据库的事务有点不太一样,区别主要是它不能保证全部成功或者全部失败,它取决于里面的命令
MULTI		#开启事务
命令
EXEC         #提交事务

  • 持久化
    因为redis是基于内存的,不持久化的话电脑一关机数据就没有了,所以持久化是redis的一个很重要的特性
- RDB(Redis Database)
指定时间内把内存的的数据快照复制到硬盘上,方法有两个:
1.使用配置文件自动触发
2.用save命令,手动触发,或者bgsave,可以创建新的进程,主机程继续可以处理新的请求,但是也无法做到秒级的快照


- AOF(Append Only File)
直接追加文件,会把命令写入到一个日志文件,到时候可以直接执行日志文件,从而重建整个数据库
只需要在配置文件里加入: appendonly yes 即可

  • redis集群
  1. 主从复制(主节点宕机了,需要手动提升从节点为主节点)
    主节点负责写,从节点负责读(1对多的关系),主节点异步的把数据变化传输给从节点进行更新,从而实现数据一致
    默认配置就是主节点,从节点的配置有两种方式一个就是执行命令,另一个就是修改配置文件(修改redis.conf更常用)
    在这里插入图片描述
  2. 哨兵模式(自动故障转移)
    监控(检查各节点是否正常),通知(哪个挂了,就通过发布订阅的方法通知其他节点),故障转移(主动升级从节点为主节点,并且把其他从节点连在这个上面)
    哨兵自己也是一个进程,也会挂,所以一版生产环境会选三个哨兵,他们会自己推选出领导者,领导者挂了就重新推选

http://www.kler.cn/a/465064.html

相关文章:

  • 以往博客的复习补充——part1
  • Cursor连接腾讯云Cloud Studio开发环境
  • SCAU期末笔记 - 数据库系统概念往年试卷解析
  • C语言带参数的宏定义的相关知识汇总(最常用的形式、带标记分隔符##的形式...)
  • 实战设计模式之建造者模式
  • 聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载
  • 本地部署Whisper Web结合内网穿透实现远程访问本地语音转文本模型
  • 大模型在自动驾驶领域的应用和存在的问题
  • vuepress 项目支持ie运行
  • Flutter入门,Flutter基础知识总结。
  • 跨语言数据格式标准化在 HarmonyOS 开发中的实践
  • 详细教程:SQL2008数据库备份与还原全流程!
  • 【SQL server】教材数据库(7)
  • JAVA-制作小游戏期末实训
  • Python PySide + SQLite3 开发的 《️ POS点销管理系统》可用初型
  • Postman[8] 断言
  • edeg插件/扩展推荐:助力生活工作
  • 【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】
  • CM3/CM4时钟系统
  • STM32-笔记28-蓝牙模块
  • SQL 总结
  • 125个Docker的常用命令
  • 数据库-MySQL-limit优化(全面 易理解)
  • 小米15震撼发布:手机吊起一人一椅,创新极限测试
  • 基于微信小程序的面部动作检测
  • 百度二面,MySQL 怎么做权重搜索?