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

相关推荐
czhc114007566311 分钟前
LINUX712 MYSQL;磁盘分区;NFS
数据库·mysql·adb
不太可爱的大白37 分钟前
Mysql:分库分表
数据库·mysql
伊成37 分钟前
docker安装Consul笔记
笔记·docker·consul
zstar-_1 小时前
Claude code在Windows上的配置流程
笔记·算法·leetcode
十五年专注C++开发1 小时前
hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
开发语言·数据库·c++·redis·缓存
hi0_62 小时前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
bianguanyue2 小时前
SQLite密码修改故障排查:RSA加密随机性导致的数据库匹配问题
数据库·sqlite·c#
亚马逊云开发者3 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
张先shen3 小时前
亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战
数据库·redis·缓存
Andy杨4 小时前
20250712-1-Kubernetes 监控与日志管理-K8s日志管理与维护_笔记
笔记·容器·kubernetes