2.Redis五种基本数据类型及使用方法

1.String类型

String是Redis里面最简单的一种数据结构。在Redis中,所有的key都是字符串。但是,不同的key对应的value则具备不同的数据结构,我们所说的五种不同的数据类型,主要是指value的数据类型不同。

Redis中的字符串是动态字符串,内部是可以修改的,像java中的StringBuffer,它采用分配冗余空间的方式来减少内存的频繁分配。在redis内部结构中,一般实际分配的内存会大于需要的内存,当字符串小于1M的时候,扩容都是在现有的空间基础上加倍,扩容每次扩1M空间,最大512M。

  • get

用来获取key的value值

127.0.0.1:6379> get name
"bamaw.owowow"
127.0.0.1:6379> get age
"14"
127.0.0.1:6379> get pwd
"123321"
127.0.0.1:6379>
  • set

给一个key赋值操作

127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> set pwd 123321
OK
127.0.0.1:6379> get pwd
"123321"
127.0.0.1:6379>
  • getrange

getrange 可以用来返回key对应的值 的某个片段值(子串),类似java的substring方法。这个命令第二个参数以及第三个参数 就是 截取value中子串的开始(从0开始)和终止位置。其中 -1表示最后一个字符串, -2 表示倒数第二个字符串。

127.0.0.1:6379> get name
"bamaw.owowow.bamae"
127.0.0.1:6379> GETRANGE name 6 -1
"owowow.bamae"
127.0.0.1:6379> GETRANGE name 6 -2
"owowow.bama"
127.0.0.1:6379>
  • setrange
    覆盖一个已经存在的key的value|可以用来覆盖key对应的值的某个片段值(子串)|setrange key offset value
127.0.0.1:6379> get name
"golang"
127.0.0.1:6379> SETRANGE name 0 px
(integer) 6
127.0.0.1:6379> get name
"pxlang"
127.0.0.1:6379> SETRANGE name 2 xpp
(integer) 6
127.0.0.1:6379> get name
"pxxppg"
127.0.0.1:6379> SETRANGE name 10 xooo
(integer) 14
127.0.0.1:6379> get name
"pxxppg\x00\x00\x00\x00xooo"
127.0.0.1:6379>
  • getset
    获取并更新某一个key对应的值
127.0.0.1:6379> get age
"14"
127.0.0.1:6379> getset age 20
"14"
127.0.0.1:6379> get age
"20"
127.0.0.1:6379>
  • append

使用append命令时,如果key已经存在,则直接在对应的value值后追加值,否则就是创建新的键值对

127.0.0.1:6379> append name bamaw
(integer) 5
127.0.0.1:6379> get name
"bamaw"
127.0.0.1:6379> append name .owowow
(integer) 12
127.0.0.1:6379> get name
"bamaw.owowow"
127.0.0.1:6379>
  • decr

可以实现对value值执行减1操作(前提是value是一个数值类型),如果value不是数值,则报错。如果value不存在,则会给一个默认的值为0,在默认值的基础上执行减1操作。

127.0.0.1:6379> decr k1
(integer) -1
127.0.0.1:6379> decr k2
(integer) -1
127.0.0.1:6379> decr k2
(integer) -2
127.0.0.1:6379>
  • decrby
    同上decr类似,自减在此基础上,可以自己设置步长(也就是减多少值),该命令第二个参数就是步长。
127.0.0.1:6379> decrby age 4
(integer) 14
127.0.0.1:6379> get age
"14"
127.0.0.1:6379> decrby k5 20
(integer) -20
127.0.0.1:6379> get k5
"-20"
127.0.0.1:6379>
  • incr

可以实现对value值执行减1操作(前提是value是一个数值类型),如果value不是数值,则报错。如果value不存在,则会给一个默认的值为0,在默认值的基础上执行加1操作。

127.0.0.1:6379> incr k10
(integer) 1
127.0.0.1:6379> incr k11
(integer) 1
127.0.0.1:6379> incr k11
(integer) 2
127.0.0.1:6379>
  • incrby
    同上incr类似,自增在此基础上,可以自己设置步长(也就是加多少值),该命令第二个参数就是步长。
127.0.0.1:6379> incr k12
(integer) 1
127.0.0.1:6379> get k12
"1"
127.0.0.1:6379> incrby k12 9
(integer) 10
127.0.0.1:6379> get k12
"10"
127.0.0.1:6379>
  • incrbyfloat
    同上incrby类似,在自增以及设置步长的基础上,可以将步长设置为浮点数。
127.0.0.1:6379> get k12
"10"
127.0.0.1:6379> INCRBY k12 0.5
(error) ERR value is not an integer or out of range
127.0.0.1:6379> INCRBYFLOAT k12 0.5
"10.5"
127.0.0.1:6379> get k12
"10.5"
127.0.0.1:6379>
  • mget和mset
    批量获取和批量存储
127.0.0.1:6379> mget k1 k2 k12 name
1) "-1"
2) "-2"
3) "10.5"
4) "bamaw.owowow.bamae"
127.0.0.1:6379> mset k1 10 k2 java k12 China name bamaw
OK
127.0.0.1:6379> mget k1 k2 k12 name
1) "10"
2) "java"
3) "China"
4) "bamaw"
127.0.0.1:6379>
  • ttl
    查看key的有效期, -1表示不会过期 -2表示已过期
127.0.0.1:6379> ttl k1
(integer) -1

  • setex
    给key设置value值的同时,并设置过期时间,时间单位
127.0.0.1:6379> SETEX k13 10 oceanone
OK
127.0.0.1:6379> ttl k13
(integer) 4
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> get k13
(nil)
127.0.0.1:6379>
  • psetex
    给key设置value值的同时,并设置过期时间,时间单位毫秒
127.0.0.1:6379> PSETEX k13 10000 oceanone
OK
127.0.0.1:6379> ttl k13
(integer) 7
127.0.0.1:6379> ttl k13
(integer) 6
127.0.0.1:6379> ttl k13
(integer) 5
127.0.0.1:6379> ttl k13
(integer) 4
127.0.0.1:6379> ttl k13
(integer) 3
127.0.0.1:6379> ttl k13
(integer) 2
127.0.0.1:6379> ttl k13
(integer) 2
127.0.0.1:6379> ttl k13
(integer) 1
127.0.0.1:6379> ttl k13
(integer) 0
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> ttl k13
(integer) -2
127.0.0.1:6379> get k13
(nil)
127.0.0.1:6379>
  • setnx
    默认情况下,set命令会覆盖已经存在的key,setnx则不会。
127.0.0.1:6379> get name
"bamaw"
127.0.0.1:6379> set name java
OK
127.0.0.1:6379> get name
"java"
127.0.0.1:6379> set name golang
OK
127.0.0.1:6379> get name
"golang"
127.0.0.1:6379> setnx name python
(integer) 0
127.0.0.1:6379> get name
"golang"
127.0.0.1:6379> setnx name1 js
(integer) 1
127.0.0.1:6379> get name1
"js"
127.0.0.1:6379>
  • msetnx
    批量设置(默认情况下,set命令会覆盖已经存在的key,setnx则不会)。
    注意: name2没有赋值成功
127.0.0.1:6379> get name
"golang"
127.0.0.1:6379> get name2
(nil)
127.0.0.1:6379> get name1
"js"
127.0.0.1:6379> MSETNX name php name1 vue name2 c++
(integer) 0
127.0.0.1:6379> get name
"golang"
127.0.0.1:6379> get name1
"js"
127.0.0.1:6379> get name2
(nil)
127.0.0.1:6379>
  • setlen
    查看字符串长度
127.0.0.1:6379> STRLEN pwd
(integer) 6
127.0.0.1:6379> get pwd
"123321"
127.0.0.1:6379>

2.List类型

  • lpush
    将所有指定的值从左到右一次插入并存于key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。如果 key 对应的值不是一个 list 的话,那么会返回一个错误
127.0.0.1:6379> lpush k2 www.baidu.com www.alibaba.com www.uoma.com
(integer) 3
  • lrange
    返回列表指定区间内的元素
127.0.0.1:6379> lrange k2 0 1
1) "www.uoma.com"
2) "www.alibaba.com"
127.0.0.1:6379>
  • rpush
    将所有指定的值从右到左一次插入并存于key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。如果 key 对应的值不是一个 list 的话,那么会返回一个错误
127.0.0.1:6379> rpush k3 www.baidu.com www.alibaba.com www.uoma.com
(integer) 3
127.0.0.1:6379> lrange k3 0 1
1) "www.baidu.com"
2) "www.alibaba.com"
127.0.0.1:6379>
  • rpop
    移除并返回列表的尾元素
127.0.0.1:6379> lrange k3 0 2
1) "www.baidu.com"
2) "www.alibaba.com"
3) "www.uoma.com"
127.0.0.1:6379> rpop k3
"www.uoma.com"
127.0.0.1:6379> lrange k3 0 2
1) "www.baidu.com"
2) "www.alibaba.com"
127.0.0.1:6379>
  • lpop
    移除并返回列表的头元素
127.0.0.1:6379> lrange k3 0 2
1) "www.baidu.com"
2) "www.alibaba.com"
127.0.0.1:6379> lpop k3
"www.baidu.com"
127.0.0.1:6379> lrange k3 0 2
1) "www.alibaba.com"
127.0.0.1:6379>
  • lindex
    返回列表中,下标为 index 的元素
127.0.0.1:6379> lrange k2 0 2
1) "www.uoma.com"
2) "www.alibaba.com"
3) "www.baidu.com"
127.0.0.1:6379> LINDEX k2 0
"www.uoma.com"
127.0.0.1:6379>
  • ltrim
    ltrim 可以对一个列表进行修剪
127.0.0.1:6379> lrange k2 0 2
1) "www.uoma.com"
2) "www.alibaba.com"
3) "www.baidu.com"
127.0.0.1:6379> LTRIM k2 0 1
OK
127.0.0.1:6379> LRANGE k2 0 2
1) "www.uoma.com"
2) "www.alibaba.com"
127.0.0.1:6379>
  • blpop
    阻塞式的弹出,相当于 lpop 的阻塞版
127.0.0.1:6379> LRANGE k2 0 2
1) "www.uoma.com"
2) "www.alibaba.com"
127.0.0.1:6379> BLPOP k2 3
1) "k2"
2) "www.uoma.com"
127.0.0.1:6379> LRANGE k2 0 2
1) "www.alibaba.com"
127.0.0.1:6379> LRANGE k2 0 2
1) "www.alibaba.com"
127.0.0.1:6379> LRANGE k2 0 2
1) "www.alibaba.com"
127.0.0.1:6379> BLPOP k2 3
1) "k2"
2) "www.alibaba.com"
127.0.0.1:6379> LRANGE k2 0 2
(empty array)
127.0.0.1:6379> LRANGE k2 0 2
(empty array)
127.0.0.1:6379>

3.Hash类型

在 hash 结构中,key 是一个字符串,value 则是一个 key/value 键值对

  • hset
    添加值
127.0.0.1:6379> HSET h1 name bamaw
(integer) 1
127.0.0.1:6379> HSET h1 age 20
(integer) 1
127.0.0.1:6379> HSET h1 gender man
(integer) 1
127.0.0.1:6379>
  • hget
    获取值
127.0.0.1:6379> HGET h1 age
"20"
127.0.0.1:6379> HGET h1 name
"bamaw"
127.0.0.1:6379> HGET h1
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379>
  • hmset
    批量设置
127.0.0.1:6379> HMSET h2 name tyy age 21 gender women
OK
127.0.0.1:6379> HGET h2 name
"tyy"
127.0.0.1:6379>
  • hmget
    批量获取
127.0.0.1:6379> HMGET h2
(error) ERR wrong number of arguments for 'hmget' command
127.0.0.1:6379> HMGET h2 name age gender
1) "tyy"
2) "21"
3) "women"
127.0.0.1:6379>
  • hdel
    删除一个指定的 field
127.0.0.1:6379> HDEL h2 age
(integer) 1
127.0.0.1:6379> HMGET h2 name age gender
1) "tyy"
2) (nil)
3) "women"
127.0.0.1:6379>
  • hsetnx
    默认情况下,如果 key 和 field 相同,会覆盖掉已有的 value,hsetnx 则不会
127.0.0.1:6379> HMGET h1 name age gender
1) (nil)
2) "20"
3) "man"
127.0.0.1:6379> HSET h1 age 28
(integer) 0
127.0.0.1:6379> HGET h1 age
"28"
127.0.0.1:6379> HSETNX h1 age 29
(integer) 0
127.0.0.1:6379> HGET h1 age
"28"
127.0.0.1:6379> HGET h1 name
(nil)
127.0.0.1:6379> HSETNX h1 name lala
(integer) 1
127.0.0.1:6379> HGET h1 name
"lala"
127.0.0.1:6379> HSETNX h1 name lala222
(integer) 0
127.0.0.1:6379> HGET h1 name
"lala"
127.0.0.1:6379> HSET h1 name lalala
(integer) 0
127.0.0.1:6379> HGET h1 name
"lalala"
127.0.0.1:6379>
  • hvals
    获取所有的 value
127.0.0.1:6379> HVALS h1
1) "28"
2) "man"
3) "lalala"
127.0.0.1:6379> HVALS h2
1) "tyy"
2) "women"
127.0.0.1:6379>
  • hkeys
    获取所有的 key
127.0.0.1:6379> HKEYS h1
1) "age"
2) "gender"
3) "name"
127.0.0.1:6379> HKEYS h2
1) "name"
2) "gender"
127.0.0.1:6379>
  • hgetall
    同时获取所有的 key 和 value
127.0.0.1:6379> HGETALL h1
1) "age"
2) "28"
3) "gender"
4) "man"
5) "name"
6) "lalala"
127.0.0.1:6379> HGETALL h2
1) "name"
2) "tyy"
3) "gender"
4) "women"
127.0.0.1:6379>
  • hexists
    返回 field 是否存在,返回0表示不存在|返回1表示存在
127.0.0.1:6379> HEXISTS h1
(error) ERR wrong number of arguments for 'hexists' command
127.0.0.1:6379> HEXISTS h1 name
(integer) 1
127.0.0.1:6379> HEXISTS h1 address
(integer) 0
127.0.0.1:6379>
  • hincrby
    给指定的 value 自增
127.0.0.1:6379> HGET h1 age
"28"
127.0.0.1:6379> HINCRBY h1 age 1
(integer) 29
127.0.0.1:6379> HINCRBY h1 age 2
(integer) 31
127.0.0.1:6379> HINCRBY h1 age 0.5
(error) ERR value is not an integer or out of range
127.0.0.1:6379> HINCRBY h1 age 4
(integer) 35
127.0.0.1:6379>
  • hincrbyfloat
    可以自增一个浮点数
127.0.0.1:6379> HINCRBY h1 age 0.5
(error) ERR value is not an integer or out of range
127.0.0.1:6379> HINCRBY h1 age 4
(integer) 35
127.0.0.1:6379> HINCRBYFLOAT h1 age 0.5
"35.5"
127.0.0.1:6379>
  • hlen
    返回 某一个 key 中 value 的数量
127.0.0.1:6379> HLEN h1
(integer) 3
127.0.0.1:6379> HVALS h1
1) "35.5"
2) "man"
3) "lalala"
127.0.0.1:6379>
  • hstrlen
    返回某一个 key 中的某一个 field 的字符串长度
127.0.0.1:6379> HSTRLEN h1 name
(integer) 6
127.0.0.1:6379> HGET h1 name
"lalala"
127.0.0.1:6379>

4.Set类型

  • sadd
    添加元素到一个 key 中
127.0.0.1:6379> SADD k4 a a a b
(integer) 2
  • smembers
    获取一个 key 下的所有元素
127.0.0.1:6379> SMEMBERS k4
1) "b"
2) "a"
127.0.0.1:6379>
  • srem
    移除指定的元素
127.0.0.1:6379> SMEMBERS k4
1) "b"
2) "a"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> srem k4 a
(integer) 1
127.0.0.1:6379> SMEMBERS k4
1) "b"
127.0.0.1:6379>
  • sismemeber
    返回某一个成员是否在集合中
    返回0表示没有;返回1表示存在
127.0.0.1:6379> SMEMBERS k4
1) "b"
127.0.0.1:6379> SISMEMBER k4 b
(integer) 1
127.0.0.1:6379> SISMEMBER k4 a
(integer) 0
127.0.0.1:6379>
  • scard
    返回集合的数量
127.0.0.1:6379> SMEMBERS k4
1) "b"
127.0.0.1:6379> SCARD k4
(integer) 1
127.0.0.1:6379>
  • srandmember
    随机返回一个元素
127.0.0.1:6379> SADD k5 a b c d e f
(integer) 6
127.0.0.1:6379> SMEMBERS k5
1) "b"
2) "a"
3) "d"
4) "c"
5) "f"
6) "e"
127.0.0.1:6379> SRANDMEMBER k5
"e"
127.0.0.1:6379> SRANDMEMBER k5
"e"
127.0.0.1:6379> SRANDMEMBER k5
"c"
127.0.0.1:6379> SRANDMEMBER k5
"c"
127.0.0.1:6379> SRANDMEMBER k5
"a"
127.0.0.1:6379>
  • spop
    随机返回并且出栈一个元素
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "a"
3) "f"
4) "e"
5) "b"
6) "d"
127.0.0.1:6379> SPOP k5
"a"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "f"
3) "e"
4) "b"
5) "d"
127.0.0.1:6379> SPOP k5
"d"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "f"
3) "e"
4) "b"
127.0.0.1:6379>
  • smove
    把一个元素从一个集合移到另一个集合中去
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "f"
3) "e"
4) "b"
127.0.0.1:6379> SMEMBERS k4
1) "b"
127.0.0.1:6379> SMOVE k5 k4 f
(integer) 1
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379>
  • sdiff
    返回两个集合的差集
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SDIFF k4 k5
1) "f"
127.0.0.1:6379> SDIFF k5 k4
1) "c"
2) "e"
127.0.0.1:6379>
  • sinter
    返回两个集合的交集
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SINTER k4 k5
1) "b"
127.0.0.1:6379>
  • sdiffstore
    这个类似于 sdiff,不同的是,计算出来的结果会保存在一个新的集合中
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SINTER k4 k5
1) "b"
127.0.0.1:6379>
  • sunion
    返回两个集合的并集
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SUNION k4 k5
1) "c"
2) "e"
3) "b"
4) "f"
127.0.0.1:6379>
  • sdiffstore
    类似于 sdiff ,不同的是,计算出来的结果会保存在一个新的集合中
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SDIFFSTORE k6 k4 k5
(integer) 1
127.0.0.1:6379> SMEMBERS k6
1) "f"
127.0.0.1:6379>
  • sinterstore
    类似于 sinter,只是将计算出来的交集保存到一个新的集合中
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SINTERSTORE k7 k4 k5
(integer) 1
127.0.0.1:6379> SMEMBERS k7
1) "b"
127.0.0.1:6379>
  • sunionstore
    类似于 sunion,只是将计算出来的交集保存到一个新的集合中
127.0.0.1:6379> SMEMBERS k4
1) "f"
2) "b"
127.0.0.1:6379> SMEMBERS k5
1) "c"
2) "e"
3) "b"
127.0.0.1:6379> SUNIONSTORE k8 k4 k5
(integer) 4
127.0.0.1:6379> SMEMBERS k8
1) "c"
2) "e"
3) "b"
4) "f"
127.0.0.1:6379>

5.ZSet类型

  • zadd
    将指定的元素添加到有序集合中
127.0.0.1:6379> ZADD z1 60 v1
(integer) 1
  • zscore
    返回 member 的 score 值
127.0.0.1:6379> ZSCORE z1 v1
"60"
127.0.0.1:6379>
  • zrange
    返回集合中的一组元素
127.0.0.1:6379> ZRANGE z1 0 2
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> ZRANGE z1 0 2 withscore
(error) ERR syntax error
127.0.0.1:6379> ZRANGE z1 0 2 sithscores
(error) ERR syntax error
127.0.0.1:6379> ZRANGE z1 0 2 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
127.0.0.1:6379>
  • zrevrange
    返回一组元素,但是是倒序
127.0.0.1:6379> ZREVRANGE z1 0 2
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379>
  • zcard
    返回元素个数
127.0.0.1:6379> ZCARD z1
(integer) 4
127.0.0.1:6379>
  • zcount
    返回 score 在某一个区间内的元素
    默认左右闭区间,要是开区间加(
127.0.0.1:6379> ZCOUNT z1 60 80
(integer) 3
127.0.0.1:6379> ZCOUNT z1 (60 80)
(error) ERR min or max is not a float
127.0.0.1:6379> ZCOUNT z1 (60 (80
(integer) 1
127.0.0.1:6379>
  • zrangebyscore
    按照 score 的范围返回元素
127.0.0.1:6379> ZRANGEBYSCORE z1 60 90
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> ZRANGEBYSCORE z1 60 90 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
127.0.0.1:6379>
  • zrank
    返回元素的排名(从小到大)
127.0.0.1:6379> ZRANK z1 v1
(integer) 0
127.0.0.1:6379> ZRANK z1 v2
(integer) 1
127.0.0.1:6379> ZRANK z1 v4
(integer) 3
127.0.0.1:6379>
  • zrevrank
    返回元素排名(从大到小)
127.0.0.1:6379> ZREVRANK z1 v3
(integer) 1
127.0.0.1:6379> ZREVRANK z1 v2
(integer) 2
127.0.0.1:6379> ZREVRANK z1 v1
(integer) 3
127.0.0.1:6379> ZREVRANK z1 v4
(integer) 0
127.0.0.1:6379>
  • zincrby
    score 自增
127.0.0.1:6379> ZINCRBY z1 20 v4
"110"
127.0.0.1:6379>
  • zinterstore
    给两个集合求交集,并放到新的集合中
127.0.0.1:6379> ZADD z2 50 v1 60 v2 70 v3 80 v4
(integer) 4
127.0.0.1:6379> ZINTERSTORE z3 2 z1 z2
(integer) 4
127.0.0.1:6379> ZRANGE z3 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> ZRANGE z3 0 -1 withscore
(error) ERR syntax error
127.0.0.1:6379> ZRANGE z3 0 -1 withscores
1) "v1"
2) "110"
3) "v2"
4) "130"
5) "v3"
6) "150"
7) "v4"
8) "190"
127.0.0.1:6379>
  • zrem
    弹出一个元素
127.0.0.1:6379> ZRANGE z3 0 -1 withscores
1) "v1"
2) "110"
3) "v2"
4) "130"
5) "v3"
6) "150"
7) "v4"
8) "190"
127.0.0.1:6379> ZREM z3 v1
(integer) 1
127.0.0.1:6379> ZRANGE z3 0 -1 withscores
1) "v2"
2) "130"
3) "v3"
4) "150"
5) "v4"
6) "190"
127.0.0.1:6379>
  • zlexcount
    计算有序集合中成员数量
127.0.0.1:6379> ZCARD z3
(integer) 3
127.0.0.1:6379> ZLEXCOUNT z3 - +
(integer) 3
127.0.0.1:6379> ZLEXCOUNT z3 [v2 [v4
(integer) 3
127.0.0.1:6379>
  • zrangebylex
    返回指定区间内的成员
127.0.0.1:6379> ZRANGEBYLEX z3 - +
1) "v2"
2) "v3"
3) "v4"
127.0.0.1:6379>

Guess you like

Origin blog.csdn.net/weixin_43980975/article/details/112645663