redis命令大全

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"


migrate host port key|"" destination-db timeout [copy] [replace] [auth password] [auth2 username password] [keys key [key ...]]

说明:将key原子性的从当前实例库传送到目标实例的指定数据库上,一旦迁移成功,key会在目标实例上,而当前实例上的key会被删除(默认删除)
    host:设置迁移的IP地址
    port:设置迁移的端口号
    key|"":如果要迁移单个key则可以在这设置key,如果是多个key则在这里只需要设置 "" 在后面设置更多的key
    destination-db:迁移到目标Redis服务器的哪个实例数据库
    timeout:超时时间
    [copy]:设置此属性代表复制迁移,不删除源实例中的key。
    [replace]:强行替换,如果目标数据库存在则更新值,不存在则添加;如果不设置replace则代表对方数据库存在迁移的key则不成功
    [auth password]:请求对方数据库的密码
    [auth2 username password]:请求对方数据库的用户名和密码
    [keys key [key ...]]:如果前面没设置 key为"",则在后面可以设置多个key迁移,如keys aaa bbb ccc

set name zhangsan
    -- 设置一个普通的键值
migrate 127.0.0.1 6380 name 1 2000
    -- 把name键值迁移到指定IP和端口的Redis服务器上,并且放在2号实例数据库上,超时时间2秒(超时关闭)
migrate 127.0.0.1 6380 name 0 2000 copy
    -- 和上面一个命令一样,但是不同的是上一个命令成功则删除原始键值,而当前命令加上copy则只是复制到对方数据库
migrate 127.0.0.1 6380 name 0 2000 copy replace
    -- 加上replace则代表目地数据库存在此键则会强行更新,不存在则添加
migrate 127.0.0.1 6380 name 0 2000 copy replace auth 1234
    -- 加上密码验证
migrate 127.0.0.1 6380 "" 0 2000 copy replace auth 1234 name age address
    -- 一次性迁移多个keys


sort key [by pattern] [limit offset count] [get pattern [get pattern ...]] [asc|desc] [alpha] [store destination]

说明:此命令是用来对list,set或sorted中元素排序;默认是按照数值排序的;并且按照两个元素的双精度浮点数类型值进行比较
    key:排序的key
    [by pattern]:通过引用外部key来排序
    [limit offset count]:分页,limit 2,3 从0开始偏移到第2条数据,并查询3条数据
    [get pattern [get pattern ...]]:获取外部key的值
    [asc|desc]:排序的规则
    [alpha]:当排序的集合中存在字符串则需要使用此属性,按照字典顺序排序;因为默认按照两个元素的双精度浮点数类型值进行比较
    [store destination]:把处理好的结果存放到指定的key容器中

创建两个集合:(后面会说list集合命令)
lpush listNumber 8.4 13 14 10.5 4 19.6 10 14 5.2 10 3 2.5 7 4.7 10 11.2 8 2.2 15.7 20.9
lpush listString  remini Momen Pledg Memo Tende Biode Revie silen Romanti AusL Simpl Promis Romanti Bautifu smil Initiall sunse lemo firs Chaffere
查看添加的命令:
lrange listNumber 0 -1
lrange listString 0 -1

基本使用:
sort listNumber         -- 默认排序是按照双精度浮点数类型从小到大升序
sort listNumber desc    -- 按照从降序排列
sort listString alpha   -- 如果排序中包含字符串类型则必须使用 alpha 修饰;则会使用字节排序
sort listString limit 2 5 alpha     -- 排序并分页,分页从0开始数到2,再从2的位置往后数5个元素
sort listString  alpha limit 2 5 store newliststring    -- 排序分页,并把排序好的数据存放到另外一个集合中

by属性的使用(通过外部key排序):
    lpush mylist 20 15 18
    set n_20 b
    set n_15 a
    set n_18 c
    sort mylist by n_* alpha
    1) "15"
    3) "20"
    5) "18"
    如果使用了by属性,那么sort就会先取出mylist的全部值,也就是20,15,18,然后再去跟by里设置的pattern进行
组合(n_*,里面的*必须要和mylist的值有个一一对应关系,要不无法组合);所以就变为了n_20,n_15,n_18 ,
再按照这些拼装出的键里面的值进行排序(默认升序,从小到大);这些键排完序规则为
n_15 a
n_20 b
n_18 c
对应好之后,程序就会按照键后面的权重值来排序,所以最终排序a,b,c起作用,那么反过来推算
n_15代表mylist的15,n_20代表mylist的20,n_18代表mylist的18,
所以15对应排序的权重a;20对应排序的权重b;18对应排序的权重c;

练习:现在有zhangsan(salary=5200),lisi(salary=3000),wangwu(salary=4500),mazi(salary=3200)四人,
     但是他们想比较谁的工资高,该如何设计排序
    lpush names zhangsan lisi wangwu mazi
    set name_zhangsan 5200
    set name_lisi 3000
    set name_wangwu 4500
    set name_mazi 3200
    sort names by name_* desc

get是使用则是先加载出mylist,并且再拼装到n_*(一一对应)然会直接输出那个键的权重(根据mylist里面排序)
get属性使用(获取外部key):
lpush mylist 20 15 18
set n_20 b
set n_15 a
set n_18 c
1:获取外部key
    127.0.0.1:6379> sort mylist get n_*
    1) "a"
    2) "c"
    3) "b"
2:获取外部key并获取当前结合的集合值
    127.0.0.1:6379> sort mylist get n_* get #
    1) "a"
    2) "15"
    3) "c"
    4) "18"
    5) "b"
    6) "20"
3:如果有多个get也是可以的,会依次匹对返回
    127.0.0.1:6379> sort mylist get n_* get # get nn_* get #

String(字符串)类型命令

语法:set key value [ex seconds|px milliseconds|exat timestamp|pxat milliseconds-timestamp|keepttl] [nx|xx] [get]
说明:设置string类型的键值,如果key已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型
    key:存储的key名称
    value:存储的value数据
    [ex seconds|px milliseconds|exat timestamp|pxat milliseconds-timestamp|keepttl]:
        ex seconds:设置键key的过期时间,单位时秒
        px milliseconds:设置键key的过期时间,单位时毫秒
        exat timestamp:设置键过期的指定Unix时间,以秒为单位
        pxat milliseconds-timestamp:设置键过期的指定Unix时间,以毫秒为单位
        keepttl:获取key的过期时间
    [nx|xx]:
        nx:只有键key不存在的时候才会设置key的值
        xx:只有键key存在的时候才会设置key的值
    [get]:返回 key 存储的值,如果 key 不存在返回空
set name zhangsan   -- 设置一个最基本的键值
set name zhangsan ex 60     -- 设置一个键值,并指定过期时间秒,ttl可以查看过期时间
set name zhangsan nx        -- 设置一个键值,但是加上nx 代表只能更新已经存在的,如不存在name键则无法添加
set name zhangsan xx        -- 生长一个键值,但是xx和nx相反

语法:setnx key value
说明:设置键值,存在此键则返回0不覆盖,否则正常设置
    setnx name zhangsan     -- 设置name为键,并赋值

语法:setrange key offset value
说明:偏移量offset>=0开始, 用value参数覆盖键key储存的字符串值。不存在的键key当作空白字符串处理。
    set name zhangsan   --创建原始键值
    setrange name 5 ' yu xiao'
        -- 把原有的 zhangsan 从第五位之后更改(0下标);最终变为 "zhang yu xiao"
    setrange name 14 out
        -- 超出偏移则使用空格 '\x00' 代替一个空格;最终变为 "zhang yu xiao\x00out"
    setrange address 2 anhui
        -- 如果设置的键不存在则会新建,但是偏移量会以空格代替;最终变为 "\x00\x00anhui"

语法:strlen key
说明:获取指定key所储存的字符串值的长度。当key储存的不是字符串类型时,返回错误。

语法:append key value
说明:用于为指定的key追加值,成功后返回当前键里面的字符串全部长度(如果追加有空格需要使用 '')
    append name 'good good boy'     -- 追加有空格的,并且成功后返回当前key的全部长度

语法:get key
说明:如果键key不存在,那么返回特殊值nil;否则返回键key的值。
    get name -- 获取name键的值

语法:getdel key
说明:先获取到指定的key后,再删除获取的那个key;最终返回被删除的值

语法:getset key value
说明:设置更新key值,设置前先把原有的值返回出来,并设置新的值,如果key不存在时使用getset则返回nil,并设置新值

语法:getrange key start end
说明:获取指定的范围值,start(从0开始)end(从0开始)
    set name zhangsan
    getrange name 2 5  -- 获取范围值,最终返回 'angs'
    getrange name 3 -2 -- 获取范围值,最终返回 'ngsa'
    注:若使用getrange name 0 -1 (其中-1代表从后往前数)

语法:getex key [ex seconds|px milliseconds|exat timestamp|pxat milliseconds-timestamp|persist]
说明:获取指定的key值,并且获取后可以对当前key设置超时时间或者清除超时时间
    [ex seconds|px milliseconds|exat timestamp|pxat milliseconds-timestamp|persist]:
         ex seconds:设置键key的过期时间,单位时秒
         px milliseconds:设置键key的过期时间,单位时毫秒
         exat timestamp:设置键过期的指定Unix时间,以秒为单位
         pxat milliseconds-timestamp:设置键过期的指定Unix时间,以毫秒为单位
         persist:清除超时时间

语法:mset key value [key value ...]
说明:和set命令差不多,但是这个是批量设置,如果设置键存在则覆盖,不存在则添加
    mset name zhangsn age 22 address anhui  -- 批量设置name和age和address

语法:mget key [key ...]
说明:批量获取键的值,如果获取的某个不存在则返回(nil),其它正常返回
    mget name aaa   -- 批量获取name和aaa的值(aaa键不存在则返回nil)

语法:setex key seconds value
说明:将键key的值设置为value ,并将键key的过期时间设置为seconds秒钟,如果key存在则覆盖原有值
    setex name 60 zhangsan  -- 设置key为name,并且设置60秒过期时间

语法:psetex key milliseconds value
说明:将键key的值设置为value ,并将键key的过期时间设置为milliseconds毫秒,如果key存在则覆盖原有值
    psetex name 70000 zhangsan  -- 设置key为name,并且设置70秒过期时间

语法:msetnx key value [key value ...]
说明:当且仅当所有给定键都不存在时,为所有给定键设置值(如果添加的其中键在当前数据库存在则都不成功)
    msetnx是一个原子性(atomic)操作,所有给定键要么就全部都被设置,要么就全部都不设置
    msetnx name zhangsan age 22 -- 设置name和age两个键值

语法:incr key
说明:将key中储存的数字值增一,并返回增加后的值(只能用在整型,字符串啥的会报错)

语法:incrby key increment
说明:将key中储存的数字值增加指定步长increment,并返回增加后的值(只能用在整型,字符串啥的会报错)

语法:incrbyfloat key increment
说明:将key中储存的数字值增加指定步长increment,并返回增加后的值(只能用在浮点型,字符串啥的会报错)
    incrbyfloat salary 333.33   -- 对salary添加步长333.33

语法:decr key
语法:将key中储存的数字值减一,并返回减后的值(只能用在整型,字符串啥的会报错)

语法:decrby key decrement
说明:将key中储存的数字值减指定步长increment,并返回减后的值(只能用在整型,字符串啥的会报错)

Hash(哈希表)类型命令

语法:hset key field value [field value ...]
说明:用于为存储在key中的哈希表的field字段赋值value
    hset student name zhangsan age 22   -- 设置key为student但里面存储着name和age字段

语法:hmset key field value [field value ...]
说明:用于同时将多个field-value(字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段
    注:Redis4.0.0起被废弃,推荐使用hset,它也可以一次性添加多个

语法:hsetnx key field value
说明:用于为存储在key中的哈希表的field字段赋值value;如果当前field存在则添加失败(不可覆盖添加)

语法:hget key field
说明:用于返回哈希表中指定字段field的值
    hget student name  -- 获取哈希表里的field字段

语法:hmget key field [field ...]
说明:用于返回哈希表中指定字段field的值;但是可以一次性返回多个field值
     hmget student name age     --  获取哈希表里的field多个字段

语法:hdel key field [field ...]
说明:用于删除哈希表key中的一个或多个指定字段,不存在的字段将被忽略。如果key不存在,会被当作空哈希表处理并返回0
     hdel student name  -- 删除哈希表中key为student里的name字段

语法:hexists key field
说明:用于查看哈希表的指定字段field是否存在,1存在,0不存在
    hexists student name    -- 查看哈希表中key为student里的name字段是否存在

语法:hgetall key
说明:用于返回存储在key中的哈希表中所有的field和value。

语法:hkeys key
说明:返回存储在key中哈希表的所有field

语法:hvals key
说明:返回存储在key中哈希表的所有value

语法:hincrby key field increment
说明:为哈希表key中的field的值加上指定的增量,并返回增量后的值(增量正数累加,增量负数递减)
    hincrby student age 2       -- 对年龄累加
    hincrby student age -28     -- 对年龄递减
    注:当前命令只可操作整数类型,而字符串,浮点类型啥的会报错

语法:hincrbyfloat key field increment
说明:为哈希表key中的field的值加上指定的增量,并返回增量后的值(增量正数累加,增量负数递减)
    hincrby student salary 300.3       -- 对工资累加
    hincrby student salary -432.84     -- 对工资递减
    注:当前命令只可操作整数类型、浮点类型,而操作字符串会报错

语法:hstrlen key field
说明:返回存储在key中给定field相关联的值的字符串长度(string length)

语法:hlen key
说明:用于获取哈希表中字段(fields)的数量

语法:hrandfield key [count [withvalues]]
说明:随机返回key里的field字段
    count:返回的field个数,如果是正数且超过key里的field总数则全部返回,
                          如果是负数且超过key里的field总数绝对值则返回空,
        整数则返回不重复字段,负数则可能返回重复字段
        注:在传 1-1 它是随机在key里面选择,
        在传 2 则随机返回key里的2个field字段,这两个field不可能存在重复
        在传-2 则随机返回key里的2个field字段,这两个field可能会存在重复
    withvalues:返回field字段时后面还返回当前field的值

    hset student name zhangsan age 22 address anhui salary 3000.30  -- 初始化
    127.0.0.1:6379> hrandfield student -2
    1) "salary"
    2) "salary"
    127.0.0.1:6379> hrandfield student 2
    1) "name"
    2) "age"
    127.0.0.1:6379> hrandfield student 2 withvalues
    1) "salary"
    2) "3000.30"
    3) "name"
    4) "zhangsan"

语法:hscan key cursor [match pattern] [count count]
说明:用于遍历哈希表中的键值对
    cursor:游标(告诉迭代器从哪开始迭代)
    [match pattern]:过滤筛选条件
    [count count]:迭代的个数
    hscan student 0 match * count 2
        -- 迭代student里的field字段,下标0开始,过滤条件*全部,但是每次迭代count为2,但2不起作用(没研究)
        -- 具体可以查看我些的scan命令,全文搜索

List(集合)类型命令

语法:lpush key element [element ...]
说明:将一个或多个值插入到集合key的头部(头插法),如果当前key不存在则创建新的
     lpush listNumber 8.4 13 14 10.5 4 19.6 10 14 5.2 10 3 2.5 7 4.7 10 11.2 8 2.2 15.7 20.9
     lpush listString  remini Momen Pledg Memo Tende Biode Revie silen Romanti AusL Simpl       Promis Romanti Bautifu smil Initiall sunse lemo firs Chaffere
        -- 插入两个案例,后面以这个说明

语法:lpushx key element [element ...]
说明:往集合左边插入一个元素;若集合key不存在无法插入

语法:rpush key element [element ...]
说明:将一个或多个值插入到集合key的尾部(尾插法),如果当前key不存在则创建新的

语法:rpushx key element [element ...]
说明:往集合右边插入一个元素;若集合key不存在无法插入

语法:lpop key [count]
说明:从集合左边(头部)弹出(删除)指定的count个元素删除
    lpop listString 2   -- 从集合左边弹出两个元素删除

语法:rpop key [count]
说明:从集合右边(尾部部)弹出(删除)指定的count个元素删除

语法:blpop key [key ...] timeout
说明:移出并获取集合头部第一个元素,如果集合没有元素会阻塞集合直到等待超时或发现可弹出元素为止,它是lpop的阻塞版
    key:如果当前key不存在或者key内部没元素,则一直阻塞等待,等待其它客户端创建此key和元素,会立马弹出
        但是超出延迟时间的话还没有弹出元素则会在最后弹出(nil)
    [key ...]:设置多个key时,如果第一个key不存在则会考虑弹出第二个key,第三个key....,如果每个key都不存在或没元素
        则当前客户端会进入一个阻塞状态,直到有元素弹出,或者自动超时弹出(nil)
    127.0.0.1:6379> blpop listA mylist 480
    1) "mylist"
    2) "remini"
        -- 设置两个key,其中listString为空,会自动去找mylist集合,发现存在元素,并立刻弹出

语法:brpop key [key ...] timeout
说明:移出并获取集合尾部第一个元素,如果集合没有元素会阻塞集合直到等待超时或发现可弹出元素为止,它是lpop的阻塞版

语法:llen key
说明:获取到集合里元素的总个数

语法:lrange key start stop
说明:查询集合元素,并设置查询区间
    start:起始值,设置正数则从左往右,设置负数则从右往左开始
    stop:终点值,设置正数则从左往右,设置负数则从右往左开始
    注:start(0) stop(-1)代表查询全部
    lrange listString -5 -3
        -- 起点从尾部往前数5个,终点从尾部往前数3个;最终显示 -5,-4,-3这三个元素
    lrange listString -5 -8
        -- 起点从尾部往前数5个,终点从尾部往前数8个;最终显示(empty array)

语法:lindex key index
说明:返回集合key里索引index位置存储的元素,0~n从左往右索引、-1~-n从右往左索引
    lindex listString -1    --  获取集合listString里的最后一个索引的元素

语法:lrem key count element
说明:从集合key中删除前count个值等于element的元素
    count > 0: 从头到尾删除值为 value 的元素
    count < 0: 从尾到头删除值为 value 的元素
    count = 0: 移除所有值为 value 的元素
    lrem listString -2 Romanti
        -- 移除集合listString中的Romanti元素,删除个数-2(代表从尾部查找并删除两个),并返回删除成功个数

语法:lset key index element
说明:设置集合key中index位置的元素值为新的element,index为正数则从头到位索引,为负数从尾到头索引查询
     lset listString 2 yyds  -- 修改集合listString中索引为2的元素为yyds

语法:linsert key before|after pivot element
说明:把element元素插入到指定集合key里,但是还要以pivot内部的一个元素为基准,看是插到这个元素的左边还是右边
    before|after:插入元素的前后位置选项
    pivot:集合里的参考元素
    element:待插入的元素
    注:当集合key不存在时,这个list会被看作是空list,什么都不执行
    注:当集合key存在,值不是列表类型时,返回错误
    注:当给定的参考元素pivot不存在是则返回-1,因为程序不知道往哪插入
    linsert listString after Romanti niubi -- 把niubi插入到listString集合里,插入参考Romanti元素的后面

语法:lpos key element [rank rank] [count num-matches] [maxlen len]
说明:返回集合key中匹配给定element成员的索引
    key:要查询的集合key
    element:要查询索引的元素
    [rank rank]:选择匹配上的第几个元素,若超出集合指定元素的个数则返回(nil)
    [count num-matches]:返回匹配上元素的索引个数,默认返回1个
    [maxlen len]:告知lpos命令查询集合的前len个元素,限制查询个数
    lpos listString Romanti     -- 查询集合listString里的Romanti出现的索引位置(0开始索引)
    lpos listString Romanti rank 2  -- 查询Romanti元素的第二个索引位置
    lpos listString Romanti rank 1 count 3  -- 查询Romanti索引的三条记录
    lpos listString Romanti rank 1 count 3 maxlen 20    -- 限制查询下标为0~20
    1) (integer) 7
    2) (integer) 11

语法:lmove source destination left|right left|right
说明:用于原子地从source集合左边或者右边弹出一个元素,添加到destination新集合里的左边或右边
    source:源集合
    destination:目标集合
    left|right left|right:
        第一个:代表从源集合的左边或者右边弹出元素
        第二个:代表从目标集合的左边或者右边添加
    lmove listString mylist left right
        -- 从listString源集合的左边弹出个元素,添加到mylist目标集合的右边

语法:rpoplpush source destination
说明:原子地从集合source中移除并返回最后一个元素,然后把这个元素插入集合destination的第一个元素
    source:源集合
    destination:目标集合
    注:此方法在Redis6.2.0被废除(使用lmove代替)

语法:blmove source destination left|right left|right timeout
说明:用于原子地从source集合左边或者右边弹出一个元素,添加到destination新集合里的左边或右边,但是它时lmove的阻塞版本
    blmove listString mylist left right 60  -- 从集合listString左边弹出一个元素放到目标集合mylist的尾部
         但是存在60秒的超时时间,超过60秒没有弹出元素则自动失败,返回(nil)

语法:brpoplpush source destination timeout
说明:原子地从集合source中移除并返回最后一个元素,然后把这个元素插入集合destination的第一个元素(已废弃使用blmove代替)
    brpoplpush listString mylist 50 -- 从集合listString尾部弹出一个元素添加到目标mylist集合的头部,超时时间50秒

语法:ltrim key start stop
说明:修订一个已经存在的集合;修订一个指定范围的元素放到当前集合中
    127.0.0.1:6379> ltrim listString -10 -5
    OK
    127.0.0.1:6379> lrange listString 0 -1
    1) "Simpl"
    2) "AusL"
    3) "silen"
    4) "Revie"
    5) "Biode"
    6) "Tende"

补充Redis7.0.0即将提供
语法:lmpop numkeys [key [key ...]] left|right [count count]
语法:blmpop timeout numkeys [key [key ...]] left|right [count count]
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值