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

数据库——redis

目录

一 安装redis

二 类型

1. string 字符串

2. 列表List

3. 集合set

4. 有序集合 zset

5. 哈希hash

三 事务

1. 基本概念

2. redis事务与MySQL事务区别

四 乐观锁

五 redis的持久化

1. 概念

2. RDB

3. AOF

4. 区别

六 redis发布订阅

订阅端

发送端

七 redis主从复制

1. 概念

2. 测试

3. 哨兵模式

八 redis缓存穿透 击穿 雪崩

1. 缓存穿透——查不到

2. 缓存击穿——量太大,缓存过期

3. 缓存雪崩


缓存,数据库,消息队列

c/s结构 服务器端口6379  

 是一个用 C 语言编写的开源、高性能非关系型(NoSQL)键值对数据库,遵循 BSD 许可协议

redis五种基本数据类型:字符串,列表,集合,有序集合,哈希

一 安装redis

 

  1. ping
    • 作用:检测客户端与 Redis 服务器的连接状态。
    • 原理:客户端向服务器发送ping请求,服务器接收到后返回PONG ,证明连接正常。
  2. select <db>
    • 作用:切换数据库。Redis 默认有 16 个数据库,编号从 0 到 15 。
    • 示例select 1将切换到 1 号数据库;select 15切换到 15 号数据库 ;执行select 16报错(error) ERR DB index is out of range,因为数据库编号最大为 15 ,超出范围。select 0又切换回 0 号数据库。
  3. set <key> <value>
    • 作用:设置键值对。若键不存在则创建,若存在则覆盖旧值。
    • 示例set name xiaobai将键name的值设为xiaobai ;set k1 v1将键k1的值设为v1 ;set k1 vvvk1的值更新为vvv 。
  4. get <key>
    • 作用:获取指定键的值。
    • 示例get name获取键name的值,返回"xiaobai" ;get k1获取键k1的值,先后返回"v1""vvv" ,和set操作结果对应 。

二 类型

1. string 字符串

最简单数据结构,键值对形式,值可包含任何数据,如图片、序列化对象等。采用预分配冗余空间减少内存频繁分配,最大长度 512M。可用于缓存对象、计数器(利用自增自减操作)、分布式锁(借助SETNX命令 )等。

set str hello:在 Redis 中设置键为str ,值为hello的键值对。若键str不存在则创建,若已存在则覆盖原有值。

get str:获取键str对应的值。

expire str 10:为键str设置过期时间,单位是秒。这里设置str键在 10 秒后过期

ttl str:查看键str剩余的过期时间,单位是秒。

key*:查找所有符合给定模式的键,* 是通配符,表示匹配所有键

exists a:检查键a是否存在。

del a:删除键b及其对应的值。

type a:获取键a对应值的数据类型,如string(字符串 )、hash(哈希 )、list(列表 )等。

incr a:将键b对应的值视为整数并自增 1 。若键b不存在,会先初始化为 0 再执行自增操作。

incrby a 5:将键b对应的值增加指定的整数(这里是 5 )。

decr 5:将键b对应的值视为整数并自减 1 

decrby a 5:将键b对应的值减少指定的整数(这里是 3 )。

2. 列表List

双向链表结构,插入和删除操作快(时间复杂度 O (1) ),索引定位慢(时间复杂度 O (n) ) 。列表弹出最后一个元素后自动删除回收内存。常被用作异步队列,将任务序列化成字符串存入,另一线程轮询处理;也可用于存储列表型数据,如粉丝列表、评论列表等。

lpush list1 2lpush list1 3:push 是将一个或多个值从列表左侧(头部)插入到名为list1 的列表中。先执行lpush list1 2 ,将元素2从左侧插入列表;再执行lpush list1 3 ,将元素3从左侧插入列表 。返回插入操作后列表的长度

rpush list1 4rpush list1 5:rpush 是将一个或多个值从列表右侧(尾部)插入到列表list1 中。rpush list1 4 将元素4从右侧插入,rpush list1 5 将元素5从右侧插入。

lrange list1 0 -1:lrange 用于获取列表指定范围内的元素。0 表示起始索引(索引从 0 开始 ),-1 表示结束索引(-1代表最后一个元素 ),即获取列表list1 的所有元素

lpop list1 1:lpop 从列表左侧(头部)移除并返回一个或多个元素,这里移除 1 个元素。

3. 集合set

无序且自动去重的集合数据类型。底层根据元素个数和类型,采用整数集合(intset,元素个数少于默认值 512 且元素为整型 )或字典(dict )存储。可用于存储活动中奖用户 ID(保证同一用户不重复中奖 ),还能进行交集、并集、差集运算,如计算共同好友。

set中的值是不能重复的

添加saddr key member1 [member2 ...] ,往集合key里加元素。

查看smembers key ,获取集合所有元素;scade key ,看元素个数;sismember key member ,判断元素是否在集合中 。

删除spop key 随机删一个;srem key member1 [member2 ...] 删指定元素 。

运算sdiff 算差集,sinter求交集,sunion 得并集 ,对应*STORE 命令可把运算结果存到指定集合 

将指定的元素从一个set中移动到另一个set中,格式:smove set1 set2 value

http://www.xdnf.cn/news/574093.html

相关文章:

  • 测试--自动化测试概念
  • java21
  • BISS0001:高性能热释电红外感应IC的详细介绍
  • 学习STC51单片机10(芯片为STC89C52RC)
  • 近场探头阵列技术解析
  • (eNSP)主备接口备份配置
  • BitsAndBytesConfig参数描述
  • redisson-spring-boot-starter 版本选择
  • MySQL备份恢复:数据安全的终极指南
  • 基于Matlab建立不同信道模型
  • 苍穹外卖05 Redis常用命令在Java中操作Redis_Spring Data Redis使用方式店铺营业状态设置
  • 本特利内华达125768-01 RIM i/o模块规范
  • ESP.wdtFeed();的作用与功能,以及使用方法
  • 「AR智慧应急」新时代:当AR眼镜遇上智能监控,打造立体化应急指挥系统
  • AskTable 集成 Databend:结构化数据的 AI 查询新体验
  • 项目自启动文件配置
  • quickbi实现关联度分析(复刻PowerBI展示)
  • 【深度学习:理论篇】--Pytorch之nn.Module详解
  • 嵌入式开发学习日志(linux系统编程--文件读写函数(2))Day25
  • 算法——数组代码
  • RECCV检测人脸伪造项目尝试与扩展
  • 深度学习实战108-基于通义千问Qwen2.5-Omni的智能数字人实时对话系统实现
  • 免费使用GPU的探索笔记
  • 采用排除法进行EMC问题定位
  • 采用线性优化改进评估配电网的灵活性范围
  • Linux服务器SOS Report完全指南:收集方法、作用解析与最佳实践
  • git checkout HEAD
  • C++11语言级别的多线程
  • 5月21日
  • 云渲染技术解析与渲酷平台深度测评:如何实现高效3D创作?