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

Redis 菜鸟学习

目录

第1章 Redis入门——五个核心的数据结构

Redis 简介

1. Redis 是什么?

2. Redis 的典型应用场景(它用来干嘛?)

3. 开启命令面板、退出、中文显示

4. 侦探三件套

字符串(String)—— 最基础的存储单元

基本操作(部分)

散列(Hash)—— 专门用来存“对象”

基本操作(部分)


第1章 Redis入门——五个核心的数据结构

Redis 简介

1. Redis 是什么?

简单说,Redis 是一个基于内存的、键值对存储的 NoSQL 数据库。我们拆开理解这几个关键词:

  • 基于内存:数据全放在电脑的内存条(RAM)里,而不是硬盘上。内存的读写速度是硬盘的几百甚至上千倍,所以 Redis非常非常快

  • 键值对(Key-Value):像一本巨大的字典。你想存一个数据,给它起个名字(Key),然后把内容(Value)塞进去。取的时候只要报名字,内容瞬间就出来了。

  • NoSQL:意味着它不是传统的表格型数据库(像 MySQL 那种一行行一列列的),而是更灵活的数据结构存储。

2. Redis 的典型应用场景(它用来干嘛?)

因为它快,所以主要用在需要高性能、低延迟的地方:

  • 缓存(Cache):这是最核心的用法。比如网站的首页有 10 万条商品数据,每次去 MySQL 硬盘查太慢了。可以把数据存一份在 Redis 里,用户访问先看 Redis 有没有,有的话瞬间返回,没有再去 MySQL 查。

  • 计数器:比如文章的阅读量、视频的点赞数。用传统数据库频繁写硬盘扛不住,用 Redis 内存操作毫无压力。

  • 排行榜:比如游戏积分榜、热搜榜。Redis 的数据结构天然支持排序。

  • 分布式锁:多台服务器抢一个任务时,用 Redis 来协调“谁来做”。

  • 消息队列:暂时存放待处理的任务数据。

3. 开启命令面板、退出、中文显示

# 开启命令面板 redis-cli #退出命令面板 exit # Redis CLI 默认用十六进制展示中文 # 正常显示 redis-cli --raw

4. 侦探三件套

# 检查键是否存在 EXISTS user:110 # 存在 1 # 不存在 0 # 检查键的类型 TYPE user:110 # string 普通字符串 # hash 散列 # list 列表 # set 集合 # zset 有序集合 # none undefined # 检查过期时间 TTL user:110 # -2 不存在 # -1 无过期时间 # (正数) 存在,还有(正数)秒过期

字符串(String)—— 最基础的存储单元

什么是 Redis 字符串?

它是Redis里最简单的键值对Value可以是普通文字、数字,甚至是二进制的图片数据。虽然叫字符串,但它对数字操作有特殊优化,可以直接做加减运算

基本操作(部分)

SET 存,GET 取,DEL 删,INCR 整数++,INCRBY 整数+N,EX 设置过期时间/s,PX 设置过期时间/ms,EXPIRE 重置/设置过期时间,NX 非则do,

GETSET 取后改,INCRBYFLOAT 浮点数+0.0,SETEX / PSETEX 存设过期,SETNX 非则设,

STRLEN 取长,APPEND 追加,GETRANGE 取子串


Redis中单引号 ' ' 和双引号 " " 没区别,如果字符串中间不含空格,完全可以不用

key中 ":" 只是命名风格(类似驼峰命名法),可读性

  • SET

# SET key value SET username "单打独斗对弟弟" SET age 22 # 应用场景 : # 缓存 JSON 数据 SET user:1 '{"username ":"单打独斗对弟弟","age":22}' # 把数据库查出来的用户信息转成字符串塞进 Redis,下次直接取,避免频繁查数据库
  • GET、GETSET

# GET key # value GET username # 单打独斗对弟弟 GET age # 22 # GETSET # 设置新值并返回旧值 GETSET username "单打独斗" # 单打独斗对弟弟 GET username # 单打独斗
  • DEL

SET temp "gg" GET temp # gg DEL temp GET temp # (nil)
  • INCR

# incr 是 redis 的原子自增命令 # key 必须数字类型 # 如果 key 不存在,会自动创建,初始化为 0,后 +1 # key = 0; key++; INCR key GET key # 1 # 应用场景: # 计数器 INCR article:readcount # 每刷一次文章,阅读量加一 # 非常安全
  • INCRBY

# key = 1; INCRBY key 69 # 70
  • EX、SETEX、PX、PSETEX

# EX 单位 秒/s # PX 单位 毫秒/ms SET temp "用户UID" EX 60 # # SETEX temp "用户UID" 60 # # SET temp "用户UID" PX 60000 # # PSETEX temp "用户UID" 60000 # 60s 内 GET temp # 用户UID # 超过 60s 过期 GET temp # (nil) # 应用场景 # 分布式 Session 存储 # 把用户的登录 Token 存在 key 里,设置过期时间,多个服务器都能读取,解决分布式登录同步问题
  • EXPIRE

# 重置 temp 过期时间 EXPIRE temp 30 # 应用场景: # 限流 # 限制用户 1 分钟内最多只能请求 5 次短信验证码 # 每次请求,执行 INCR INCR user:api:zhangsan # 第一次,返回值是 1 # 配合 EXPIRE 重置时间窗口。 EXPIRE user:api:zhangsan 60 # 返回值 大于 5,拒绝请求
  • NX、SETNX

# if(!temp){ # String/Integer temp; # } # temp 初始不存在,允许创建 # 两种写法 # SET key value NX # # SETNX key value SET temp "用户Token" NX # SETNX temp "用户Token" # OK SET temp "用户UID" NX # SETNX temp "用户UID" # (nil) DEL temp SET temp "用户UID" NX # SETNX temp "用户UID" # OK # 应用场景: # 分布式锁 SET lock:order:1001 unique_id NX EX 30 # 利用 NX(不存在才设置)和 EX(过期)特性,让多个服务在单位时间内互斥
  • STRLEN

# 获取值的长度 # username = "单打独斗对弟弟"; STRLEN username # 21
  • APPEND

# 给值追加内容 # username = "单打独斗对" APPEND username "弟弟" GET username # 单打独斗对弟弟
  • GETRANGE

# 获取值的子串(索引从 0 开始) # name = "zhangsan" # username = "单打独斗对弟弟" GETRANGE name 4 6 # gsa GETRANGE username 15 20 # 弟弟

散列(Hash)—— 专门用来存“对象”

基本操作(部分)

HSET 存HGET 取、HMGET 批量取、HKEYS 取key、HVALS 取value、HGETALL 取全部key-value、

HINCRBY value++、HDEL 删、HLEN 得key数量、HEXISTS 判存


# 设置多个字段 HSET user:219 name 张3sh age 22 email zh3sh@xx.com # OK # 获取字段 HGET user:219 name # 张3sh # 批量获取 HMGET user:219 name age # 张3sh # 22 # 获取所有字段 HKEYS user:219 # name # age # email # 获取所有值 HVALS user:219 # 张3sh # 22 # zh3sh@xx.com # 获取所有字段和值 HGETALL user:219 # name # 张3sh # age # 22 # email # zh3sh@xx.com # 只修改邮箱 HSET user:219 email new_zh3sh@xx.com # 0 # 数值操作 HINCRBY user:219 age 11 # 33 HINCRBY user:219 age -11 # 22 # 删除一个字段 HDEL user:219 email # 获取字段数量 HLEN user:219 # 2 # 判断字段是否存在 HEXISTS user:219 name # 1 HEXISTS user:219 email # 0

----------------------------------------------------------敬请期待----------------------------------------------------------

http://www.cnnetsun.cn/news/1879389.html

相关文章:

  • 别再死记硬背ESP32 BLE API了!用这个“事件驱动”思维导图,5分钟理清GAP/GATT回调逻辑
  • 44、链表和数组有什么区别?
  • NaViT实战:如何用Patch n‘ Pack技术处理任意分辨率图像(附代码示例)
  • M2LOrder模型实战:赋能AIGC内容创作的情感一致性校验
  • 告别枯燥文本!用像素语言·维度裂变器一键生成10种创意文案
  • Pixel Couplet Gen 从零部署教程:Ubuntu系统环境与依赖项全配置
  • K-Means聚类在图像分割中的优化实践:从理论到代码实现
  • M7iBASE-AC-1GE直流电源路由器
  • Keil5实战:手把手教你制作自定义FLM插件(附完整驱动配置流程)
  • AI超清画质增强问题解决:大图片处理、内存优化等实战技巧
  • Pi0机器人控制实战:多视角图像输入与动作生成案例
  • AIAgent机器人控制如何突破“感知-决策-执行”延迟瓶颈?2026奇点大会实测数据显示端到端时延压降至87ms以下
  • Qwen2.5-VL视频分析案例:长视频关键事件定位与摘要生成
  • 卡内基梅隆大学团队破解“手机语音助手为什么听不懂外国腔“之谜
  • 量子力学的太极效应
  • RVC语音克隆新手教程:3分钟极速训练,AI翻唱轻松上手
  • 快速上手nli-distilroberta-base:开箱即用的自然语言推理工具
  • 别再为接线发愁!手把手教你搞定西门子S7-1200 PTO脉冲轴与台达A2伺服驱动器的24V/5V信号匹配
  • Plan-and-Execute:Agent规划与执行分离模式
  • 海上搜救(SAR)小目标检测打造 海上搜救小目标检测数据集 深度学习YOLOv8 的完整训练代码 无人机航拍+水上漂浮物检测(人、船、冲浪板等)海上搜救检测数据集
  • 交警机器人上岗常州护航苏超揭幕战;管理者敬业度已不再高于普通员工 | 美通社一周热点简体中文稿
  • Qwen3-0.6B-FP8部署教程:vLLM服务健康检查(llm.log)、Chainlit端口映射与CORS配置
  • OpenClaw安装教程:nanobot镜像内建日志系统(llm.log)解读与异常定位方法
  • Alpamayo-R1-10B惊艳效果:多目标(车辆+行人+自行车)交互轨迹联合预测展示
  • 快速上手PP-DocLayoutV3:无需代码,网页点选完成文档版面智能分析
  • Qwen3-14B私有部署镜像Java面试题智能解析与模拟面试
  • RAG系统智能升级:精准识别用户意图,告别无效检索与答非所问!
  • MogFace人脸检测模型数据库集成案例:构建人脸信息管理系统
  • 大模型应用实战:智能问答系统开发
  • Demosaicking算法在ISP中的演进:从线性插值到深度学习