Redis 基本操作笔记

1. Redis 简介

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

Redis 特点:

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

2. Redis 数据类型

2.1 字符串(String)

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

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

    bash 复制代码
    SET mykey "Hello Redis"
  • GET key:获取字符串值

    bash 复制代码
    GET mykey
  • INCR key:对键值进行加 1 操作(整数)

    bash 复制代码
    INCR mykey
  • DECR key:对键值进行减 1 操作(整数)

    bash 复制代码
    DECR mykey
  • APPEND key value:在现有字符串值后追加字符串

    bash 复制代码
    APPEND mykey " World"

2.2 哈希(Hash)

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

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

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

    bash 复制代码
    HGET user:1000 name
  • HGETALL key:获取哈希表所有字段和值

    bash 复制代码
    HGETALL user:1000
  • HDEL key field:删除哈希表中的字段

    bash 复制代码
    HDEL user:1000 age

2.3 列表(List)

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

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

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

    bash 复制代码
    RPUSH mylist "banana"
  • LPOP key:从列表的左侧弹出元素

    bash 复制代码
    LPOP mylist
  • RPOP key:从列表的右侧弹出元素

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

    bash 复制代码
    LRANGE mylist 0 2

2.4 集合(Set)

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

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

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

    bash 复制代码
    SREM myset "banana"
  • SMEMBERS key:获取集合中的所有成员

    bash 复制代码
    SMEMBERS myset
  • SISMEMBER key member:检查元素是否是集合的成员

    bash 复制代码
    SISMEMBER myset "apple"

2.5 有序集合(Sorted Set)

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

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

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

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

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

    bash 复制代码
    ZREVRANGE myzset 0 -1

3. Redis 常用命令

3.1 键操作(Key Operations)

  • DEL key:删除一个键

    bash 复制代码
    DEL mykey
  • EXISTS key:检查一个键是否存在

    bash 复制代码
    EXISTS mykey
  • KEYS pattern:获取所有匹配的键

    bash 复制代码
    KEYS "user:*"
  • TTL key:查看键的剩余过期时间

    bash 复制代码
    TTL mykey
  • EXPIRE key seconds:设置键的过期时间

    bash 复制代码
    EXPIRE mykey 60
  • PERSIST key:移除键的过期时间

    bash 复制代码
    PERSIST mykey

3.2 事务(Transaction)

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

  • MULTI:开始一个事务

    bash 复制代码
    MULTI
  • EXEC:执行事务

    bash 复制代码
    EXEC
  • DISCARD:放弃事务

    bash 复制代码
    DISCARD
  • WATCH key:监视一个键

    bash 复制代码
    WATCH mykey

3.3 持久化(Persistence)

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

  • BGSAVE:异步保存快照

    bash 复制代码
    BGSAVE
  • SAVE:同步保存快照

    bash 复制代码
    SAVE
  • BGREWRITEAOF:异步重写 AOF 文件

    bash 复制代码
    BGREWRITEAOF

4. Redis 高级特性

4.1 发布/订阅(Pub/Sub)

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

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

    bash 复制代码
    PUBLISH mychannel "Hello Redis"
  • SUBSCRIBE channel:订阅频道

    bash 复制代码
    SUBSCRIBE mychannel
  • UNSUBSCRIBE channel:取消订阅频道

    bash 复制代码
    UNSUBSCRIBE mychannel

4.2 脚本(Lua)

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

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

    bash 复制代码
    EVAL "return redis.call('GET', KEYS[1])" 1 mykey

5. Redis 性能调优

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

6. 结语

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

相关推荐
傻小胖19 小时前
22.ETH-智能合约-北大肖臻老师客堂笔记
笔记·区块链·智能合约
浅念-19 小时前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
玄同76519 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码19 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean20 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
小Tomkk20 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_124987075320 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
张人玉20 小时前
VisionPro 定位与卡尺测量学习笔记
笔记·学习·计算机视觉·vsionprp
songyuc20 小时前
【BiFormer】BiFormer: Vision Transformer with Bi-Level Routing Attention 译读笔记
笔记·transformer
倒流时光三十年21 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch