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

Redis核心数据结构操作指南:字符串、哈希、列表详解

注:此为苍穹外卖学习笔记

Redis作为高性能的键值数据库,其核心价值来自于丰富的数据结构支持。本文将深入解析字符串(String)哈希(Hash)、**列表(List)**三大基础结构的操作命令,通过大量实用案例展现其应用场景。

一、字符串(String)操作命令

字符串是 Redis 中最基础的数据类型,常用于存储文本、数字或二进制数据。

常用命令及示例
  1. set key value 设置键值对,支持过期时间(EX)、不存在时设置(NX)等选项。 示例:

     
    set name "john"         # 设置 name=john
    set counter 10 EX 60    # 设置 counter=10,60秒后过期

  2. get key 获取键对应的值。 示例:

     
    get name  # 返回 "john"

  3. incr key 将键的值加 1(仅限整数)。 示例:

     
    incr counter  # 若原值为 10,操作后变为 11

  4. append key value 向字符串尾部追加内容。 示例:

     
    append greeting "hello"   # 若原值为空,操作后变为 "hello"
    append greeting " world"  # 结果变为 "hello world"

  5. mset / mget 批量设置/获取多个键值对。 示例:

     
    mset key1 "a" key2 "b"  
    mget key1 key2  # 返回 ["a", "b"]

二、哈希(Hash)操作命令

哈希用于存储对象,适合保存字段-值对(如用户信息)。

常用命令及示例
  1. hset key field value 设置哈希中单个或多个字段的值。 示例:

     
    hset user:1000 name "john" age 30  # 设置 name=john 和 age=30

  2. hget key field 获取哈希中指定字段的值。 示例:

     
    hget user:1000 name  # 返回 "john"

  3. hgetall key 获取哈希所有字段和值。 示例:

     
    hgetall user:1000  # 返回 ["name", "john", "age", "30"]

  4. hincrby key field increment 对哈希中的数值字段进行增减。 示例:

     
    hincrby user:1000 age 1  # 将 age 从 30 增加到 31

  5. hdel key field 删除哈希中的字段。 示例:

     
    hdel user:1000 age  # 删除 age 字段

三、列表(List)操作命令

列表是双向链表结构,支持在头部或尾部操作元素,常用于队列、栈等场景。

常用命令及示例
  1. lpush key element 将元素插入列表头部(左侧)。 示例:

     
    lpush mylist "a"       # 列表变为 ["a"]
    lpush mylist "b" "c"  # 列表变为 ["c", "b", "a"]

  2. rpush key element 将元素插入列表尾部(右侧)。 示例:

     
    rpush mylist "d"  # 列表变为 ["c", "b", "a", "d"]

  3. lrange key start stop 获取列表中指定范围的元素(索引从 0 开始,-1 表示末尾)。 示例:

     
    lrange mylist 0 -1  # 返回 ["c", "b", "a", "d"]

  4. lpop key / rpop key 移除并返回列表头部(左侧)或尾部(右侧)的元素。 示例:

     
    lpop mylist  # 返回 "c",列表变为 ["b", "a", "d"]
    rpop mylist  # 返回 "d",列表变为 ["b", "a"]

  5. blpop key timeout 阻塞式弹出列表头部元素,若列表为空则等待(超时单位为秒)。 示例:

     
    blpop tasks 10  # 等待 tasks 列表中的元素,最多等 10 秒

四、应用场景总结

  • 字符串:缓存、计数器、分布式锁。
  • 哈希:对象存储(用户信息、商品详情)。
  • 列表:消息队列、最新消息排行、栈结构。

通过合理选择数据结构,可以高效解决各类实际问题。

http://www.lryc.cn/news/2387808.html

相关文章:

  • 微服务(SpringCloud)的简单介绍
  • Python 爬虫开发
  • 第十一周作业
  • 猿大师办公助手网页编辑Office/wps支持服务器文件多线程下载吗?
  • 英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展
  • 各个链接集合
  • 【R语言科研绘图】
  • Linux Shell 切换
  • ProfiNet转Ethernet/IP网关选型策略适配西门子S7-1500与罗克韦尔ControlLogix5580的关键指标对比
  • AWS WebRTC:获取信令服务节点和ICE服务节点
  • [图文]图6.3会计事项-Fowler分析模式的剖析和实现
  • [Linux] 利用systemd实现周期性执行任务(DDNS设置案例)
  • maven 3.0多线程编译提高编译速度
  • Dalvik虚拟机、ART虚拟机与JVM的核心区别
  • Unity 3D AssetBundle加密解密教程
  • 【Linux】shell脚本的常用命令
  • Netty应用:从零搭建Java游戏服务器网络框架
  • Pycharm and Flask 的学习心得(9)
  • Linux初始-环境安装(2)
  • Nginx 安全防护与 HTTPS 部署实战笔记
  • Python Day34 学习
  • 【ASR】基于分块非自回归模型的流式端到端语音识别
  • 国芯思辰|国产FRAM SF25C128助力监控系统高效低功耗解决方案,对标MB85RS128/FM25V01
  • 攻防世界逆向刷题笔记(新手模式9-1?)
  • 【golang】能否在遍历map的同时删除元素
  • 制作一款打飞机游戏58:子弹模式组合
  • 使用新一代达梦管理工具SQLark,高效处理 JSON/XML 数据!
  • Qt基础:数据容器类
  • Vue3监听对象数组属性变化方法
  • 深入了解PyTorch:起源、优势、发展与安装指南