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 的基本操作和高级特性,有助于提升应用性能和扩展性。

相关推荐
煎饼皮皮侠9 分钟前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_6 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家8 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_962066499 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext10 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
sakiko_12 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
数字新视界12 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..12 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
自小吃多12 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
小白勇闯网安圈12 小时前
String、Hash、List、Set 四大数据结构与通用命令
redis