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

相关推荐
想摆烂的不会研究的研究生36 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
码熔burning1 小时前
MySQL 8.0 新特性爆笑盘点:从青铜到王者的骚操作都在这儿了!(万字详解,建议收藏)
数据库·mysql
猫头虎1 小时前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
@LetsTGBot搜索引擎机器人3 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐4 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
Tony Bai4 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072015 小时前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风5 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存