当前位置:首页 > 问答 > 正文

Redis快速入门那些必须知道的基础操作和小技巧分享

Redis这东西,说白了就是一个速度超快的“大本子”,数据都放在内存里,所以读写起来飞快,它不像我们平时用的MySQL那种表格一样的数据库,它更像是一个存放各种数据结构的仓库,用起来非常灵活,想快速上手,你只要记住几个最常用的命令和一点小窍门就行了。

第一部分:必须知道的五种数据类型和基础操作

Redis之所以强大,是因为它支持不同的数据结构,你把它想象成家里的储物柜:有的格子专门放单个物品(字符串),有的放清单(列表),有的放名片夹(哈希)等等,最常用的有五种:

  1. 字符串(String):这是最简单、最常用的类型,就是一个键对应一个值,这个值可以是数字、文字,甚至是一张图片的二进制数据。

    • 存数据SET mykey "hello world" (就像在本子上写下:mykey = hello world)
    • 取数据GET mykey (查一下mykey对应的是什么,会返回"hello world")
    • 数字增减INCR num (如果num是数字,就给它加1,这个在统计点击量、库存时特别有用)
  2. 列表(List):就是一个按顺序排列的字符串列表,你可以从左边或者右边往里加东西,很像一个队列。

    • 从左边插入LPUSH mylist "world" (往mylist这个列表的最前面塞入"world")
    • 从右边插入RPUSH mylist "hello" (往mylist这个列表的最后面塞入"hello")
    • 弹出元素LPOP mylist (把列表最左边的那个元素拿出来,并且从列表里删除它)
    • 查看一段范围LRANGE mylist 0 -1 (查看mylist里从第0个到最后一个的所有元素,可以用来实现最新消息列表)
  3. 集合(Set):一个不允许重复的无序集合,它的主要特性就是自动去重。

    • 添加元素SADD myset "apple" (往myset里加一个"apple")
    • 再添加一次SADD myset "apple" (因为集合不能重复,所以这次操作无效)
    • 查看所有成员SMEMBERS myset (看看myset里到底有哪些不重复的东西)
    • 判断是否存在SISMEMBER myset "apple" (看看"apple"在不在集合里,返回1表示在,0表示不在)
  4. 有序集合(Sorted Set):这是Set的升级版,每个成员都有一个分数(score),Redis会根据这个分数从小到大排序,这个功能非常强大。

    • 添加带分数的成员ZADD myzset 100 "Alice" 90 "Bob" (给myzset添加两个成员,Alice分数100,Bob分数90)
    • 按分数范围查询ZRANGE myzset 0 -1 WITHSCORES (从小到大列出所有成员和分数,可以用来做排行榜)
  5. 哈希(Hash):用来存储一个对象的信息特别合适,比如一个用户有姓名、年龄、城市等多个属性,就可以用一个哈希结构来存。

    • 设置字段值HSET user:1000 name "张三" age 30 (给键为user:1000的哈希对象设置name和age字段)
    • 获取字段值HGET user:1000 name (获取user:1000的name字段,返回"张三")
    • 获取所有字段和值HGETALL user:1000 (一次性把user:1000这个对象的所有信息都拿出来)

第二部分:几个让你用起来更顺手的小技巧

光会存取数据还不够,用对方法才能让Redis真正发挥威力。

  1. 一定要设置过期时间:Redis的数据是放在内存里的,内存很宝贵,不能无限期存放数据,对于缓存这类临时数据,一定要设置一个存活时间。

    • 命令:SET mykey "somevalue" EX 3600 (这条命令在存数据的同时,设置3600秒后自动过期)或者用 EXPIRE mykey 3600 (给已经存在的key设置过期时间)。
    • 这个小技巧能帮你自动清理不再需要的数据,防止内存被撑爆。
  2. 键的命名要有规律:Redis没有像数据库那样的表格概念,所有数据都通过键来区分,所以起个好名字非常重要。

    • 建议用冒号来组织层次,user:1000:profile 表示ID为1000的用户资料,order:20231001:total 表示2023年10月1日的订单总数,这样看起来清晰,也便于管理。
  3. 管道(Pipeline)功能:如果你需要一口气给Redis发送很多条命令,比如要初始化一万个数据,如果一条一条发,网络来回的时间会很长,这时候可以用管道。

    管道的意思就是把多条命令打包,一次性发送给Redis,Redis处理完后再一次性把结果返回给你,这能极大提升批量操作的效率,这个功能通常在编程时使用。

  4. 谨慎使用KEYS *命令*:在你刚学习的时候,可能会用 `KEYS ` 来查看数据库里所有的键,但在实际项目中,尤其是在数据量很大的生产环境里,千万不要用**!因为这个命令会遍历整个数据库,会导致Redis暂时卡住,其他请求都处理不了,如果真想查看键的模式,可以用 SCAN 命令,它是渐进式的,不会阻塞服务。

  5. 理解持久化:虽然Redis数据在内存,但它也支持把数据写到硬盘上,防止重启后数据全部丢失,这个机制叫持久化,你不需要马上深入理解,但要知道有RDB(快照)和AOF(日志)两种方式,默认是开启RDB的,这样即使Redis重启,也能从硬盘恢复数据。

记住以上这些点,你就已经掌握了Redis最核心、最常用的部分了,剩下的就是多练习,根据你的实际场景去选择合适的数据类型和命令。 总结自Redis官方文档常见命令介绍、以及《Redis设计与实现》等入门资料中关于基础数据类型和最佳实践的核心观点)

Redis快速入门那些必须知道的基础操作和小技巧分享