1. Redis 简介

Redis(Remote Dictionary Server)是一个开源的、高性能的键值对存储系统,通常作为数据库、缓存、消息中间件等使用。它支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等。

Redis 特点:

  • 性能:Redis 支持每秒百万级别的操作。
  • 持久化:支持数据持久化,可以选择 AOF 或 RDB 持久化方式。
  • 数据类型丰富:支持字符串、哈希、列表、集合、有序集合等数据类型。
  • 高可用:支持主从复制、哨兵模式和集群模式。

2. Redis 数据类型

2.1 字符串(String)

字符串是 Redis 中最基本的数据类型,一个键对应一个值,值可以是字符串、整数、浮点数等。

常用命令:
  • SET key value:设置字符串值

    SET mykey "Hello Redis"
    
  • GET key:获取字符串值

    GET mykey
    
  • INCR key:对键值进行加 1 操作(整数)

    INCR mykey
    
  • DECR key:对键值进行减 1 操作(整数)

    DECR mykey
    
  • APPEND key value:在现有字符串值后追加字符串

    APPEND mykey " World"
    

2.2 哈希(Hash)

哈希是键值对的集合,每个哈希可以包含多个字段和值。适合存储对象类型的数据。

常用命令:
  • HSET key field value:设置哈希表字段的值

    HSET user:1000 name "Alice" age 30
    
  • HGET key field:获取哈希表字段的值

    HGET user:1000 name
    
  • HGETALL key:获取哈希表所有字段和值

    HGETALL user:1000
    
  • HDEL key field:删除哈希表中的字段

    HDEL user:1000 age
    

2.3 列表(List)

列表是简单的字符串列表,按插入顺序排序。你可以在列表的两端插入、删除元素。

常用命令:
  • LPUSH key value:将一个或多个值插入到列表的左侧

    LPUSH mylist "apple"
    
  • RPUSH key value:将一个或多个值插入到列表的右侧

    RPUSH mylist "banana"
    
  • LPOP key:从列表的左侧弹出元素

    LPOP mylist
    
  • RPOP key:从列表的右侧弹出元素

    RPOP mylist
    
  • LRANGE key start stop:获取列表中指定范围的元素

    LRANGE mylist 0 2
    

2.4 集合(Set)

集合是无序的字符串集合,不允许重复元素。

常用命令:
  • SADD key member:将一个或多个元素添加到集合中

    SADD myset "apple" "banana"
    
  • SREM key member:从集合中移除一个或多个元素

    SREM myset "banana"
    
  • SMEMBERS key:获取集合中的所有成员

    SMEMBERS myset
    
  • SISMEMBER key member:检查元素是否是集合的成员

    SISMEMBER myset "apple"
    

2.5 有序集合(Sorted Set)

有序集合与集合类似,但每个元素都会关联一个分数,Redis 会根据分数进行排序。

常用命令:
  • ZADD key score member:将一个或多个成员及其分数添加到有序集合

    ZADD myzset 1 "apple" 2 "banana"
    
  • ZREM key member:从有序集合中移除一个或多个成员

    ZREM myzset "banana"
    
  • ZRANGE key start stop:获取指定范围内的有序集合成员(按分数排序)

    ZRANGE myzset 0 -1
    
  • ZREVRANGE key start stop:获取指定范围内的有序集合成员(按分数降序排列)

    ZREVRANGE myzset 0 -1
    

3. Redis 常用命令

3.1 键操作(Key Operations)

  • DEL key:删除一个键

    DEL mykey
    
  • EXISTS key:检查一个键是否存在

    EXISTS mykey
    
  • KEYS pattern:获取所有匹配的键

    KEYS "user:*"
    
  • TTL key:查看键的剩余过期时间

    TTL mykey
    
  • EXPIRE key seconds:设置键的过期时间

    EXPIRE mykey 60
    
  • PERSIST key:移除键的过期时间

    PERSIST mykey
    

3.2 事务(Transaction)

Redis 提供了多条命令的原子性操作,通过 MULTIEXECDISCARDWATCH 实现。

  • MULTI:开始一个事务

    MULTI
    
  • EXEC:执行事务

    EXEC
    
  • DISCARD:放弃事务

    DISCARD
    
  • WATCH key:监视一个键

    WATCH mykey
    

3.3 持久化(Persistence)

Redis 提供了两种持久化方式:RDB(快照)和 AOF(追加文件)。

  • BGSAVE:异步保存快照

    BGSAVE
    
  • SAVE:同步保存快照

    SAVE
    
  • BGREWRITEAOF:异步重写 AOF 文件

    BGREWRITEAOF
    

4. Redis 高级特性

4.1 发布/订阅(Pub/Sub)

Redis 支持发布/订阅模式,可以通过频道进行消息传递。

  • PUBLISH channel message:向频道发送消息

    PUBLISH mychannel "Hello Redis"
    
  • SUBSCRIBE channel:订阅频道

    SUBSCRIBE mychannel
    
  • UNSUBSCRIBE channel:取消订阅频道

    UNSUBSCRIBE mychannel
    

4.2 脚本(Lua)

Redis 支持通过 Lua 脚本执行多条命令,可以实现原子化操作。

  • EVAL script numkeys key [key …] arg [arg …]:执行 Lua 脚本

    EVAL "return redis.call('GET', KEYS[1])" 1 mykey
    

5. Redis 性能调优

  • 内存管理:合理设置最大内存,启用合适的内存淘汰策略。
  • 持久化优化:根据应用需求选择合适的持久化方式(RDB、AOF),并设置合理的保存频率。
  • 集群模式:使用 Redis 集群来分散负载,提供更好的可扩展性。

6. 结语

Redis 是一个非常高效的内存数据库,广泛应用于缓存、消息队列等场景。掌握 Redis 的基本操作和高级特性,有助于提升应用性能和扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88681.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88681.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88681.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker从环境配置到应用上云的极简路径

Docker从环境配置到应用上云的极简路径主要包括环境配置、应用容器化、选择云平台及部署应用等步骤,具体如下: - 配置Docker环境: - 安装Docker:根据操作系统下载对应版本的Docker安装包。如在Linux系统中,可使用命令…

Slicer渲染Dicom到nrrd

Slicer渲染Dicom到nrrd 工作中遇到一些处理Dicom数据的需求,个人通过网络上的一些教程 对于原始数据尝试转换到nrrd时,发现部分的窗体数据的渲染方向不一致 进一步发现这些很多定义的方向是跟设备厂家强相关的,不同厂家对于同一段的Dicom参…

QT中设计qss字体样式但是没有用【已解决】

检查一下stylesheet里面是不是有不能被QT读取的CSS语言,可能会跟字体颜色冲突错误示范:/* 错误示例:QSS 中使用 box-shadow */ QPushButton {box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); /* Qt 不支持此属性 */ }删掉就行了如果后续想用阴影…

uniapp获取状态栏高度,胶囊按钮的高度,底部安全区域的高度,自定义导航栏

相关API uni.getSystemInfoSync() uni.getMenuButtonBoundingClientRect() 创建一个utils文件夹,该文件下封装一个systemInfo.js /*** 系统信息工具类* 封装获取系统状态栏、导航栏和安全区域等相关信息的方法*/// 获取系统信息并缓存 const systemInfo uni.get…

jQuery 文本属性值

一、前言在网页开发中,我们经常需要对页面上的文本内容进行操作,例如动态修改段落文字、读取用户输入框的内容、更新按钮文本等。jQuery 提供了简洁而强大的方法来处理这些常见的文本操作需求。本文将带你全面了解 jQuery 中用于操作文本内容的三个核心方…

JAVA并发——为什么Java中的ThreadLocal对key的引用为弱引用

1、ThreadLocal 的用途 给每个线程提供自己独立的变量副本,实现线程间隔离。 常用于: 数据库连接、Session 缓存、用户上下文(如 userId)线程池中的线程复用时避免共享污染;实现线程封闭的设计模式 2、内存泄漏 使用弱…

【C++】多线程同步三剑客介绍

目录 条件变量 头文件 主要操作函数 1、等待操作 2、唤醒操作 使用示例 信号量 头文件 主要操作函数 1、信号量初始化 2、等待操作(P操作) 3、信号操作(V操作) 4、获取信号量值 5、销毁信号量 使用示例 互斥锁 …

《Java Web程序设计》实验报告八 JSP+Servlet+JDBC+MySQL实现课程管理

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工(共计4人) 2、实验方案 3、实验结果与分析 4、项目任务评价 四、遇到的问题和解决方法 五、实验总结 一、实验目的 1、掌握mysql的安装、数据库表单创建 2、掌握JDBC的链接…

基于数据挖掘的课程推荐系统研究

摘要本研究设计并开发了一套基于先进数据挖掘技术的智能化课程推荐系统。该系统创新性地采用了协同过滤算法与内容推荐算法相结合的混合推荐策略,通过深度分析学生在学习平台上的历史行为数据(包括选课记录、学习时长、测试成绩等)以及课程的…

【SCI 4区推荐】《Journal of Visual Communication and Image Representation》

期刊简介:《视觉传达与图像表示杂志》(Journal of Visual Communication and Image Representation)致力于发表视觉传达与图像表示领域的最前沿研究,特别强调多学科交叉领域中的新技术和理论应用。这本期刊涵盖的研究范围广泛&…

20250711_Sudo 靶机复盘

target:192.168.43.20 外部打点 (文件上传) nmap扫一下,80,22 开放 扫目录,发现 README.md [17:04:30] 200 - 664B - /Dockerfile [17:04:38] 200 - 34KB - /LICENSE …

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南 在工业自动化控制领域,编程软件是连接工程师与 PLC 的桥梁,而 STEP 7-Micro/WIN SMART 作为 S7-200 SMART PLC 的专用编程工具,以其友好的界面和高效的编程能力备受青睐。…

模型训练与部署注意事项篇---resize

图像大小的影响在 YOLOv 系列模型的训练和推理部署过程中,图像大小的选择是影响模型性能(精度、速度、泛化能力)的关键因素之一。两者的关系既相互关联,又存在一定的灵活性,具体可从以下几个方面详细分析:一…

【Python】venv:配置独立镜像源

为某个特定的 venv 虚拟环境设置 pip 镜像源,使得该环境下的 pip 安装始终使用自定义镜像源,不影响系统 pip,也不依赖用户级配置文件。环境准备 1. 创建虚拟环境 python -m venv venv2. 激活虚拟环境Windows: .\venv\Scripts\activateLinux/m…

日本语言学校:签证制度类 Prompt 的结构整理路径与策略

日本语言学校:签证制度类 Prompt 的结构整理路径与策略 我们在构建语言留学语义系统的过程中,尝试以“签证风险”为例,探索如何让结构信息被更好地保留下来。本文不介绍 Prompt 本身,也不夸大其作用,而是希望借此与更…

RFCOMM协议详解:串口仿真与TCP/IP协议栈移植技术——面试高频考点与真题解析

一、RFCOMM 协议核心考点与高频面试问题1.1 协议基础与核心功能考点解析:RFCOMM(Radio Frequency Communication)是蓝牙协议栈中实现串口仿真的核心协议,基于 L2CAP 协议提供类似 RS-232 的可靠数据流传输。其核心功能包括&#x…

【编程实践】利用open3d生成物体的最长边方向并可视化

1 利用3d软件生成一个长方体 边长随意,长度随意 2 导出为模型文件并采样为点云数据 从mesh表面进行采样,点数根据自己需求进行设置,此处设置为100000。采样结果:3 识别OBB外接框并可视化长边方向import numpy as np import open3d…

1. 好的设计原则

目录一、应该具备的性质二、面向对象设计原则三、详解3.1 开闭原则3.2 单一职责原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特原则一、应该具备的性质 可扩展性灵活性可插入性 二、面向对象设计原则 以下设计原则的重要性从高到低排列 …

深度学习图像分类数据集—猫七种表情识别分类

该数据集为图像分类数据集,适用于ResNet、VGG等卷积神经网络,SENet、CBAM等注意力机制相关算法,Vision Transformer等Transformer相关算法。 数据集信息介绍:猫七种表情识别分类:[Angry, Disgusted, Happy, Normal, Sa…

002_Claude模型与定价

Claude模型与定价 目录 Claude 4 模型系列模型功能对比定价策略计费说明企业定价使用建议 Claude 4 模型系列 Anthropic 推出了最新的 Claude 4 系列模型,提供不同性能等级以满足各种需求: Claude Opus 4 定位:最强大、最智能的模型特点…