跳至主要內容

Redis常用命令

Java突击队大约 5 分钟

Redis常用命令

Redis作为一款高性能的NoSQL数据库,已经成为现代开发中不可或缺的一部分。

无论是在缓存、消息队列、排行榜,还是会话存储等场景中,Redis都发挥着巨大的作用。

今天我们来深度剖析一下Redis中最常用的30个命令,深入了解它们的应用场景以及一些常见的使用技巧。

1. SET / GET

这两个命令是Redis中最基本的命令之一,几乎在所有使用Redis的场景中都能见到它们。

  • SET:用于将一个键值对存入Redis数据库。

    SET username "jack"
    

    这个命令会将键username的值设置为jack。如果该键已经存在,它会覆盖原有值。

  • GET:用于获取指定键的值。

    GET username
    

    这个命令会返回username键的值jack

应用场景

在日常开发中,最常见的应用就是缓存机制。例如,用户登录后,我们会将用户信息存入Redis进行缓存,下次再访问时直接从Redis中获取,避免每次都去数据库查询。

2. MSET / MGET

  • MSET:一次性设置多个键值对。

    MSET user:1 "tom" user:2 "jerry"
    

    这个命令会将user:1设置为tomuser:2设置为jerry

  • MGET:一次性获取多个键的值。

    MGET user:1 user:2
    

    返回值是["tom", "jerry"]

应用场景

在需要批量操作时,MSETMGET能够显著提高效率,尤其是在批量缓存数据时,减少了多次与Redis的交互。

3. DEL

  • DEL:删除指定的键。
    DEL username
    
    这个命令会删除username键。如果该键不存在,它返回0;如果存在,它返回1。

应用场景

通常用于清除过期或不再需要的缓存。例如,用户登出时可能需要清除缓存中的用户信息。

4. EXPIRE / TTL

  • EXPIRE:设置键的过期时间(单位:秒)。

    EXPIRE session:123 3600
    

    这个命令会将session:123键的过期时间设置为1小时。

  • TTL:查看键的剩余生存时间。

    TTL session:123
    

    这个命令会返回键session:123的剩余过期时间。如果返回-1,说明该键没有过期时间;如果返回-2,说明该键不存在。

应用场景

设置缓存的有效期是Redis中的常见操作。比如,你可以将用户的会话信息存入Redis,并为其设置过期时间,这样可以在一定时间后自动清理过期数据。

5. INCR / DECR

  • INCR:将指定键的值加1。如果键不存在,初始值为0。

    INCR page_views
    

    这个命令会将page_views的值增加1,返回增加后的值。

  • DECR:将指定键的值减1。

    DECR page_views
    

    这个命令会将page_views的值减少1,返回减少后的值。

应用场景

这些命令通常用于计数器、排行榜等场景。例如,统计某篇文章的浏览量、点赞数等。

6. HSET / HGET

  • HSET:向哈希表中添加或更新字段。

    HSET user:1 name "jack" age 25
    

    这个命令会将哈希表user:1中的name字段设置为jackage字段设置为25

  • HGET:获取哈希表中指定字段的值。

    HGET user:1 name
    

    返回jack

应用场景

哈希表适合存储对象数据。例如,用户的基本信息(如nameageemail等)可以存储在哈希表中。

7. LPUSH / RPUSH / LPOP / RPOP

  • LPUSH:将元素推入列表的左侧。

    LPUSH todo_list "Buy milk"
    

    这个命令会将"Buy milk"推入todo_list列表的左端。

  • RPUSH:将元素推入列表的右侧。

    RPUSH todo_list "Go to gym"
    

    这个命令会将"Go to gym"推入todo_list列表的右端。

  • LPOP:移除并返回列表的左侧元素。

    LPOP todo_list
    

    这个命令会移除并返回todo_list列表的左侧第一个元素。

  • RPOP:移除并返回列表的右侧元素。

    RPOP todo_list
    

    这个命令会移除并返回todo_list列表的右侧第一个元素。

应用场景

这些命令常用于实现队列和栈的功能。比如任务调度、消息队列等,使用Redis的列表数据结构来存储和处理待办事项。

8. SADD / SREM

  • SADD:向集合中添加一个或多个成员。

    SADD users "jack" "jane" "tom"
    

    这个命令会将jackjanetom添加到集合users中。

  • SREM:从集合中移除一个或多个成员。

    SREM users "tom"
    

    这个命令会将tom从集合users中移除。

应用场景

集合是Redis中非常有用的数据结构,它支持高效的去重和集合操作。例如,你可以使用集合来存储用户标签、好友关系等。

9. ZADD / ZREM

  • ZADD:向有序集合中添加一个或多个成员,并为其指定分数。

    ZADD leaderboard 100 "jack" 200 "jane"
    

    这个命令会将jack的分数设置为100,将jane的分数设置为200。

  • ZREM:从有序集合中移除一个或多个成员。

    ZREM leaderboard "jack"
    

    这个命令会将jackleaderboard中移除。

应用场景

有序集合广泛应用于排行榜、评分系统等场景。比如游戏中的排名,商场中商品的销量排行等。

10. KEYS / SCAN

  • KEYS:查找所有匹配的键。

    KEYS user:*
    

    这个命令会返回所有以user:开头的键。

  • SCAN:增量迭代键空间,适合替代KEYS命令。

    SCAN 0 MATCH user:*
    

    SCAN命令可以避免一次性加载所有键导致的性能问题,尤其在键空间非常大的时候。

应用场景

KEYS命令用于调试时查找键,但在生产环境中最好使用SCAN,以避免全量扫描带来的性能问题。

总结

Redis的命令非常丰富,适用于各种不同的场景。从最基本的键值存取,到更复杂的集合、哈希、排序等数据结构,Redis都能够高效地处理。

掌握这些常用命令,不仅能帮助你更好地理解Redis的工作原理,还能在日常开发中提高系统性能,优化缓存机制,构建高效的后台服务。

无论是处理高并发、实时数据,还是管理复杂的数据结构,Redis都是一个值得深入学习和使用的工具。