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

Redis里头那些简单的增删改查操作,怎么快速上手用起来

想快速上手Redis的增删改查,你就把它想象成一个放在内存里的、特别快的大柜子,这个柜子没有抽屉,只有很多很多个“小篮子”,每个“篮子”都有一个独一无二的名字(就是Key),我们要做的,就是把数据(就是Value)用不同的方式放进这些篮子里,或者从里面取出来,下面我们就用最直白的话,说说怎么玩转这几个基本动作。

得连上Redis这个“大柜子”

在你开始往柜子里放东西之前,你得先走到柜子面前,打开它,在编程里,这就是建立连接,比如你用Python,代码大概长这样(来源:基于常见Python Redis客户端示例): import redis r = redis.Redis(host='localhost', port=6379, db=0, password='你的密码(如果有的话)') 这几行代码的意思就是:我要连接一个Redis,它就在我自己的电脑上(localhost),门牌号是6379(默认端口),我用0号柜子(db 0),如果柜子有锁(密码),我就用这个密码开,连上之后,这个r就是你操作柜子的“手”。

最基础的“增”和“查”:键值对(Key-Value)

这是最简单的一种篮子,一个键(Key)对应一个值(Value),就像你把一个文件塞进一个写有名字的文件夹里。

  • 增(存数据):用 set 命令,要把用户名“张三”存到键 “user:1001” 下面。 r.set('user:1001', '张三') 这就相当于你把一张写着“张三”的纸条,放进了标签为“user:1001”的篮子里,如果这个篮子之前有东西,新的纸条会覆盖旧的。

  • 查(取数据):用 get 命令,现在你想看看“user:1001”这个篮子里放着啥。 name = r.get('user:1001') print(name) # 这会输出 b'\xe5\xbc\xa0\xe4\xb8\x89',这是编码后的,通常解码后就是“张三”。 如果这个键不存在,get 命令会返回一个叫 None 的空值。

处理列表(List)数据:像排队一样

列表就像一列排队的队伍,数据一个接一个,你可以在队伍的头或者尾加人,也可以从两头取人。

  • 增(往队伍里加人)

    • 从左边加(队头):lpush,比如记录用户的最新浏览记录。 r.lpush('user:1001:views', '商品A', '商品B') // 队伍现在是 ['商品B', '商品A']
    • 从右边加(队尾):rpush,比如实现一个待办事项列表。 r.rpush('my_todo', '写作业', '打扫卫生') // 队伍现在是 ['写作业', '打扫卫生']
  • 查(看队伍情况)

    • 看整个队伍:lrange,比如看用户所有的浏览记录。 all_views = r.lrange('user:1001:views', 0, -1) // 0代表开始,-1代表到最后,就是全取出来。
    • 只看队头或队尾的元素:lindexfirst_item = r.lindex('my_todo', 0) // 取第一个待办事项(索引为0)。
  • 删(从队伍里请人出去)

    • 从左边弹出(队头):lpop,处理待办事项,做完一个删一个。 todo = r.lpop('my_todo') // 把“写作业”从队伍里拿出来,并且删掉。
    • 从右边弹出(队尾):rpop

处理集合(Set)数据:像一个大箩筐

集合就像一个装东西的大箩筐,里面的东西是无序的,而且每个东西只能出现一次,自动去重,这特别适合存标签、好友列表这类数据。

  • 增(往箩筐里扔东西):用 sadd,给文章打标签。 r.sadd('article:123:tags', '科技', '编程', 'Redis') // 你把“科技”、“编程”、“Redis”这三个标签扔进了文章的标签箩筐里。

  • 查(看箩筐里有啥)

    • 看全部成员:smemberstags = r.smembers('article:123:tags') // 取出所有标签,但顺序不固定。
    • 判断某个成员在不在:sismember,判断文章是否属于“科技”类。 is_tech = r.sismember('article:123:tags', '科技') // 如果在,返回1(True);不在,返回0(False)。
  • 删(从箩筐里捡出东西):用 srem,删除一个标签。 r.srem('article:123:tags', '编程') // 把“编程”这个标签从箩筐里捡出去。

处理哈希(Hash)数据:像一张表格里的行

哈希非常适合存一个对象的多个属性,比如一个用户的信息,有姓名、年龄、邮箱等,它就像一个表格的一行,键(Key)是这行的ID,值(Value)里面又包含了多个字段(Field)和对应的值。

  • 增(设置表格里的字段值):用 hset,设置用户1001的信息。 r.hset('user:1001', 'name', '李四') r.hset('user:1001', 'age', 30) 也可以一次设置多个:r.hset('user:1001', mapping={'name': '李四', 'age': 30})

  • 查(读取表格里的值)

    • 读取一个字段:hgetname = r.hget('user:1001', 'name') // 取用户1001的名字。
    • 读取所有字段和值:hgetalluser_info = r.hgetall('user:1001') // 取回一个字典,包含这个用户的所有信息。
  • 删(删除表格里的某个字段):用 hdelr.hdel('user:1001', 'age') // 把用户1001的年龄字段删掉。

通用的“删”操作

不管数据是哪种类型,如果你想整个篮子都不要了,直接用 delete 命令。 r.delete('user:1001') // 这就把整个“user:1001”篮子,连同里面不管是什么类型的数据,全都扔掉了。

关于数据过期

Redis一个很棒的功能是你可以给篮子设置一个“保质期”,时间一到,数据自动消失,这太有用了,比如存手机验证码。 r.set('sms_code:13800138000', '8899', ex=60) // 这个验证码“8899”存进去,ex=60表示60秒后自动删除。

上手Redis增删改查的核心就是:

  1. 连接:用你的编程语言连上Redis。
  2. 选篮子(Key):想好你的数据用哪个键来存。
  3. 定类型:根据你的数据特点,决定用简单的键值对、列表、集合还是哈希。
  4. 用对命令set/get 用于简单值,lpush/lrange 用于列表,sadd/smembers 用于集合,hset/hgetall 用于哈希,delete 用于删除整个键。

你先不用管那些高级的术语和复杂的原理,就照着这个路子,找个小例子亲手敲一遍代码,马上就能感受到Redis的简单和强大了。

Redis里头那些简单的增删改查操作,怎么快速上手用起来