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

Redis 基本操作笔记

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.dtcms.com/a/275441.html

相关文章:

  • 关于wpf的自适应
  • 基于 Redisson 实现分布式系统下的接口限流
  • [特殊字符] 深入掌握 dsquery:Active Directory 高效查询与安全运维指南
  • sqli-labs靶场通关笔记:第7-8关 布尔盲注
  • Gemini CLI 代理问题解决[API Error: exception TypeError: fetch failed sending request]
  • 【Linux-云原生-笔记】数据库操作基础
  • 【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法
  • 系统分析师-计算机系统-计算机系统概述存储系统
  • 内网穿透系列九:开源的网络穿透与组网工具 EasyTier,支持多种数据传输通道,去中心化,兼具高效与安全
  • 【Java八股文总结 — 包学会】(二)计算机网络
  • PyTorch的计算图是什么?为什么绘图前要detach?
  • 【设计模式】单例模式 饿汉式单例与懒汉式单例
  • 人工智能自动化编程:传统软件开发vs AI驱动开发对比分析
  • 云原生技术与应用-生产环境构建高可用Harbor私有镜像仓库
  • ​BRPC核心架构解析:高并发RPC框架的设计哲学
  • Whistle抓包
  • 【设计模式】桥接模式(柄体模式,接口模式)
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Oxygen XML Editor 26.0编辑器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十课——图像gamma矫正的FPGA实现
  • 定长子串中元音的最大数目
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销直播质量提升策略研究
  • 【世纪龙科技】新能源汽车结构原理体感教学软件-比亚迪E5
  • HTTP 状态码详解
  • Apache HTTP Server 从安装到配置
  • 使用python 实现一个http server
  • 搭建云手机教程
  • 力扣面试150题--括号生成
  • S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法