一:序

Redis命令大全(超详细)

  其实本文的命令大家都可以去官网学习,但是我出这篇文章只是以更直观的方式来解读官网上的命令,让大家一眼可以看得懂,看的明白;

  注意:我全文使用的Redis版本为 6.2.x 版本,低版本可能有些命令不存在;还有要想学习更全的Redis命令,推荐官网学习 

  其实写本次文章让我最初模棱两可的一些命令印在我的脑海,后期在查命令也是有印象

本文主要介绍通俗易懂的命令,具体文章会有如下内容(红色字体,其它则会在其它文章指出)
连接命令:连接(connection)
基本key类型:键(key)
基本数据类型:字符串(String)、散列(hash)、列表(list)、集合(set)、有序集合(sorted)
特殊数据类型:位图(bitmaps)、超长日志(hyperloglog)、地理空间(geospatial)
发布订阅命令
事务命令...

二:Redis基本命令及常识

  在真正学习Redis之前,得先了解一下Redis的一些基本命令,这样才可以更快的知道Redis的命令用法和大概的了解

①:连接服务端:
    ./redis-cli -h 127.0.0.1 -p 6379
②:Redis默认是有16个数据库的(0~15)通过select命令来切换数据库
    select 1    -- 连接到第 2 个数据库 0开始计算
③:往数据库设置string类型值
    set name zhangsan
④:查看数据库中key的数量
    dbsize
⑤:查看刚才添加的key的值
    get name
⑥:查看所有key的值
    keys *
⑦:清空全部数据库和清空当前库
    flushall(清空全部库) flushdb(清空当前库)  
⑧:删除添加的name key键
    del name

三:Key值命令

  key值命令可以说是一些类型的公共命令,比如有设置定时时间,排序,数据迁移等等

语法:keys pattern
说明:用来匹配和查看指定的key
    pattern:查询条件
        h?llo       匹配 hello, hallo 和 hxllo
        h*llo       匹配 hllo 和 heeeello
        h[ae]llo    匹配 hello 和 hallo, 不匹配如 hillo
        h[^e]llo    匹配 hallo, hbllo, ... 不匹配如 hello
        h[a-e]llo   匹配 hallo 和 hbllo, [a-e]说明是a~e这个范围 ,如hcllo也可以匹配
        若想匹配如转义字符的如下,就需要使用 \ 转义你想匹配的特殊字符。
        set na\me zhangsan
        keys na[\\]me

语法:del key [key ...]
说明:删除指定的key
    del name age address

语法:unlink key [key ...]
说明:其实这个和删除del命令很像,也是存在key删除,不存在则忽略;删除几个键值,则返回删除的个数
    unlink name1 name2 name3
    注:del和unlink区别
        del:它是线程阻塞的,当执行del命令是,del在没执行完时,其它后续的命令是无法进入的(要安全就使用del)
        unlink:它不是线程阻塞的,当执行unlink命令时,它会将要删除的键移交给另外线程,然后将当前要删除的键与数据库空间断开连接
                后续则由其它线程异步删除这些键(要效率快就使用unlink)

语法:exists key [key ...]
说明:返回要查询的key是否存在,存在则返回1,如果设置四个key都存在则会返回4;返回0则代表没有
    exists name -- 查看是否存在name的key
    exists name name  -- 重复写两次name ,如果name存在则返回2
    exists name address -- 查看当前是否存在name和address键
    注:exists后面不管携带单个,多个或者有重复的,最终是存在一个就累加1

语法:type key
说明:返回当前指定的key的类型。可返回的类型是: string,list,set,zset,hash和stream

语法:rename key newkey
说明:修改key名称,存在原来则覆盖,不存在则抛错;如果修改key1为key2,key2存在,则key1覆盖key2的值
    rename name name1
    
语法:renamenx key newkey
说明:修改key名称存在则覆盖,不存在则抛错;如果修改key1为key2,key2存在,则key1修改不成功

语法:randomkey
说明:随机返回一个key名称

语法:copy source destination [db destination-db] [replace]
说明:拷贝当前某一个key的值,存放到新的key中(可以跨库拷贝)返回 1 成功 0 失败
    copy name1 name2  -- 把 name1 的值 拷贝到 name2 里
    copy name1 name2 db 5 -- 把 name1 的值拷贝到第6号数据库name2里
    copy name1 name2 replace -- 把 name1 的值拷贝到name2里,存在则强行覆盖

语法:expire key seconds [nx|xx|gt|lt]
    为一个存在的key设置过期时间 秒
语法:pexpire key milliseconds [nx|xx|gt|lt]
    为一个存在的key设置过期时间 毫秒
语法:expireat key timestamp [nx|xx|gt|lt]
    为一个存在的key设置过期时间 格式是uinx时间戳并精确到秒
语法:pexpireat key milliseconds-timestamp [nx|xx|gt|lt]
    为一个存在的key设置过期时间 格式是uinx时间戳并精确到毫秒
说明:先设置一个key,并指定过期时间 秒/毫秒/时间戳秒/时间戳毫秒 ;返回 1 成功 0 失败
    expire name 300 -- 把name键设置300秒过期
    pexpire name 3000 -- 把name键设置3000毫秒过期(3秒)
    expireat name 1633190400 -- 把name键设置为2021-10-2 00:00:00到期(精确秒)
    pexpireat name 1633190400000 -- 把name键设置为2021-10-2 00:00:00到期(精确毫秒)
    注:使用del可以删除定时的key
       使用set可以覆盖定时的key;
       使用getset可以返回并设置值,并会删除定时
       如使用rename修改key名称,那么key定时器会被携带不会被删除

语法:persist key
说明:清除当前有定时时间的键值,设置永不过期(和普通键值一样了),关闭后并不会删除已有的键值
    persist name    -- 关闭存在定时的键值

语法:ttl key
说明:查看当前有定时key的剩余时间,返回秒
    
语法:pttl key
说明:查看当前有定时key的剩余时间,返回毫秒
    ttl name
    pttl name
    注:没过期反剩余时间 过期反-2  没设置过期时间的key反-1

语法:move key db
说明:把指定的键值移动到选定的数据库db当中。如果key在目标数据库中已存在,或者key在源数据库中不存,则key不会被移动。
    move name 2 -- 把name移动到三号数据库里

语法:touch key [key ...]
说明:修改指定key的最后访问时间。忽略不存在的 key。(我的理解是这个键被设置/更新成功,并且被放到数据库则是成功,会返回1)
    touch name1 name2 name3     -- 返回被设置成功的键个数

①:scan cursor [match pattern] [count count] [type type]

说明:用于迭代当前数据库中的数据库键
    cursor:游标(告诉迭代器从哪开始迭代)
    [match pattern]:过滤筛选条件
    [count count]:迭代的个数
    [type type]:迭代的类型
127.0.0.1:6379> keys *
1) "name8"
2) "name3"
3) "name5"
4) "name1"
5) "name2"
6) "name9"
7) "name7"
8) "name4"
9) "name6"
127.0.0.1:6379> scan 0 match name* count 2 type string
            -- 迭代开始,从游标0开始(开头),筛选带 name* 并且查2个,还要是string类型
            -- 执行后,会返回两个键,并且还返回游标现在指向的位置 2 ,那我们下次迭代就可以从 2 开始继续
1) "2"
2) 1) "name8"
   2) "name7"
127.0.0.1:6379> scan 2 match name* count 2 type string
            -- 设置游标从 2 开始 并查询 2 个键(具体为什么有查询两个也有三个也没太往后了解)
1) "5"
2) 1) "name3"
   2) "name2"
   3) "name9"
127.0.0.1:6379> scan 5 match name* count 2 type string
1) "3"
2) 1) "name1"
   2) "name4"
127.0.0.1:6379> scan 3 match name* count 2 type string
1) "0"
2) 1) "name5"
   2) "name6"
scan使用说明

相关文章:

  • 2021-06-01
  • 2022-12-23
  • 2021-11-18
  • 2022-02-08
  • 2021-04-02
  • 2021-11-09
猜你喜欢
  • 2021-10-16
  • 2022-03-07
相关资源
相似解决方案