字符串类型(String)
Redis 的 String 类型可以是字符串(简单的字符串、复杂的字符串(例如 JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过 512MB。
避免中文显示乱码 --raw
1 2 3 4 5 6 7 8 9 |
[root@redis01 ~]# redis-cli 127.0.0.1:6379> set name 陈立帆 OK 127.0.0.1:6379> get name "\xe9\x99\x88\xe7\xab\x8b\xe5\xb8\x86" #正常获取显示报错(二进制文件) [root@redis01 ~]# redis-cli --raw 127.0.0.1:6379> get name #测试正常获取 陈立帆 |
检查 key 是否存在,返回 true / false(1/0)
1 2 3 4 5 6 |
127.0.0.1:6379> SET name clf OK 127.0.0.1:6379> EXISTS name 1 127.0.0.1:6379> EXISTS age 0 |
设置key的过期时间
1 2 3 4 5 6 7 8 9 10 |
127.0.0.1:6379> SETEX age 50 30 #设置key的过期时间为50秒(默认秒) OK 127.0.0.1:6379> set age 18 EX 50 OK 127.0.0.1:6379> PSETEX age 50000 26 #设置key的过期时间为50秒(默认毫秒) OK 127.0.0.1:6379> set age 18 PX 50000 OK |
查看key过期时间
1 2 3 4 5 6 7 8 |
127.0.0.1:6379> ttl name -1 127.0.0.1:6379> ttl age (integer) 44 #过期时间为44秒 -1 # key永不过期 -2 # key已过期 |
新增键值对 NX XX用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
127.0.0.1:6379> get name "clf" 127.0.0.1:6379> set name lfh NX (nil) 127.0.0.1:6379> get name "clf" # Nx:当 key 不存在时创建,已存在则忽略。 127.0.0.1:6379> get name "clf" 127.0.0.1:6379> set name lfh XX OK 127.0.0.1:6379> get name "lfh" # Xx:当 key 存在则写入,不存在则忽略。 |
批量增加键值对
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
127.0.0.1:6379> mset name clf age 18 height 50 #批量创建键值对,已存在的会更新 OK 127.0.0.1:6379> get name "clf" 127.0.0.1:6379> get age "18" 127.0.0.1:6379> get height "50" 127.0.0.1:6379> MSETNX name lfh weight 50 #批量创建键值对,所有键不存在才会创建 (integer) 0 127.0.0.1:6379> get name "clf" 127.0.0.1:6379> get weight (nil) |
删除数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
127.0.0.1:6379> keys * 1) "b" 2) "c" 3) "age" 4) "name" 5) "height" 6) "a" 127.0.0.1:6379> del a #删除一条数据 (integer) 1 127.0.0.1:6379> keys * 1) "b" 2) "c" 3) "age" 4) "name" 5) "height" 127.0.0.1:6379> del b c age name #删除多条数据 (integer) 4 127.0.0.1:6379> keys * 1) "height" |
修改数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
127.0.0.1:6379> set name clf # 设置key OK 127.0.0.1:6379> get name "clf" 127.0.0.1:6379> set name lfh # 修改key OK 127.0.0.1:6379> get name "lfh" # 等同于 get+set,执行此命令返回 get 的结果,然后将该 key 更新为新的 value,下次再 get 的时候查到的就是新的 value。 127.0.0.1:6379> get name "lfh" 127.0.0.1:6379> GETSET name lhd "lfh" 127.0.0.1:6379> get name "lhd" # 对指定下标的字符串进行更新,下标从 0 开始算起。 127.0.0.1:6379> get name "chenlifan" 127.0.0.1:6379> SETRANGE name 6 o #只修改第6个下标开始修改 (integer) 9 127.0.0.1:6379> get name "chenlioan" 127.0.0.1:6379> SETRANGE name 6 ooo #从第6个下标开始修改 (integer) 9 127.0.0.1:6379> get name "chenliooo" |
查找数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 查看所有的 Key,在数据量大的 Redis 中慎用,容易卡死。 127.0.0.1:6379> keys * 1) "name" 2) "height" -------------------------------------------------------------- # 根据 key 获取数据 127.0.0.1:6379> get name "chenliooo" -------------------------------------------------------------- # 批量获得指定 keys 的 values 127.0.0.1:6379> mget name height 1) "chenliooo" 2) "50" -------------------------------------------------------------- # 从字符串的指定开始结束下标截取字符串 127.0.0.1:6379> set name chenlifan OK 127.0.0.1:6379> GETRANGE name 1 4 #从值的下标为1截取到4 "henl" 127.0.0.1:6379> get name "chenlifan" |
计数 递增 递减
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#如果没有值则设为1 每次增一 127.0.0.1:6379> INCR num (integer) 1 127.0.0.1:6379> get num "1" 127.0.0.1:6379> INCR num (integer) 2 127.0.0.1:6379> get num "2" # 如果value的值不能转为整型,如hello该操作将执行失败并返回相应的错误信息。 127.0.0.1:6379> set num hello OK 127.0.0.1:6379> INCR num (error) ERR value is not an integer or out of range # 递增指定长度 127.0.0.1:6379> set num 0 OK 127.0.0.1:6379> INCRBY num 10 (integer) 10 127.0.0.1:6379> get num "10" ----------------------------------------------------------------- # 对指定的key的value减1,递减步长默认1,如果key不存在,其初始值为0,在decr之后其值为-1 127.0.0.1:6379> DECR num (integer) -1 127.0.0.1:6379> DECR num (integer) -2 127.0.0.1:6379> DECR num (integer) -3 # 如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息 127.0.0.1:6379> set num hello OK 127.0.0.1:6379> DECR num (error) ERR value is not an integer or out of range #递减指定长度 127.0.0.1:6379> set num 0 OK 127.0.0.1:6379> DECRBY num 10 (integer) -10 127.0.0.1:6379> get num "-10" |
在字符串最后面追加
1 2 3 4 5 6 7 8 |
# 在字符串最后面追加 127.0.0.1:6379> set name clf OK 127.0.0.1:6379> APPEND name lll (integer) 6 127.0.0.1:6379> get name "clflll" |
获取返回字符串的长度
1 2 3 4 5 6 |
# 返回字符串的长度 127.0.0.1:6379> get name "clflll" 127.0.0.1:6379> STRLEN name (integer) 6 |
哈希类型(Hash)
查寻数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
127.0.0.1:6379> HSET dev 1 10 2 20 3 30 (integer) 3 127.0.0.1:6379> HGET dev 1 "10" 127.0.0.1:6379> HGET dev 2 "20" 127.0.0.1:6379> HGET dev 3 "30" # 检查1、2、3、4组是否存在 127.0.0.1:6379> HEXISTS dev 1 (integer) 1 127.0.0.1:6379> HEXISTS dev 2 (integer) 1 127.0.0.1:6379> HEXISTS dev 3 (integer) 1 127.0.0.1:6379> HEXISTS dev 4 (integer) 0 --------------------------------------------------------------- #获取多个值 获取所有值 获取所有的field # 获取多个值 127.0.0.1:6379> HMGET yunwei 1 2 3 4 5 1) (nil) 2) "200" 3) "30" 4) (nil) 5) "50" # 获取所有值 127.0.0.1:6379> HGETALL yunwei 1) "2" 2) "200" 3) "3" 4) "30" 5) "5" 6) "50" # 获取所有的field 127.0.0.1:6379> HKEYS yunwei 1) "2" 2) "3" 3) "5" --------------------------------------------------------------- # hash 类型中 field 的数量 127.0.0.1:6379> HLEN yunwei (integer) 4 127.0.0.1:6379> HKEYS yunwei 1) "2" 2) "3" 3) "5" 4) "1" # hash 类型中指定 filed 对应的 value 的字符长度 127.0.0.1:6379> HSTRLEN yunwei 1 (integer) 6 127.0.0.1:6379> HGET yunwei 1 "44.123" |
增加数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
127.0.0.1:6379> HSET dev 1 10 2 20 3 30 #设置开发组1组有10个人 (integer) 3 #2组有20个人 127.0.0.1:6379> HGET dev 1 #3组有30个人 "10" 127.0.0.1:6379> HGET dev 2 "20" 127.0.0.1:6379> HGET dev 3 "30" --------------------------------------------------------------- # 只有key不存在时创建 127.0.0.1:6379> HGET dev 1 "10" 127.0.0.1:6379> HGET dev 2 "20" 127.0.0.1:6379> HGET dev 3 "30" 127.0.0.1:6379> HSETNX dev 1 20 #一组已存在忽略 (integer) 0 127.0.0.1:6379> hget dev 1 "10" 127.0.0.1:6379> HSETNX dev 5 50 #五组没有 创建 (integer) 1 127.0.0.1:6379> hget dev 5 "50" |
删除数据
1 2 3 4 5 |
127.0.0.1:6379> HDEL yunwei 1 #一组有可以删除 (integer) 1 127.0.0.1:6379> HDEL yunwei 10 #10组没有不能删除 (integer) 0 |
更改数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
127.0.0.1:6379> HGET yunwei 2 "20" 127.0.0.1:6379> HSET yunwei 2 200 #更改yunwei 2组为200 (integer) 0 127.0.0.1:6379> HGET yunwei 2 "200" --------------------------------------------------------------- # 指定的 field 的 value 做递增操作 127.0.0.1:6379> HINCRBY yunwei 1 22 (integer) 22 127.0.0.1:6379> HGET yunwei 1 "22" 127.0.0.1:6379> HINCRBY yunwei 1 22 (integer) 44 127.0.0.1:6379> HGET yunwei 1 "44" # 指定的 field 的 value 做递增操作(value可以为小数) 127.0.0.1:6379> HINCRBYFLOAT yunwei 1 0.123 "44.123" --------------------------------------------------------------- #设置key的过期时间 127.0.0.1:6379> set name cld OK 127.0.0.1:6379> EXPIRE name 10 (integer) 1 127.0.0.1:6379> ttl name (integer) 6 127.0.0.1:6379> ttl name (integer) 4 127.0.0.1:6379> ttl name (integer) 3 |
列表类型(List)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部 (右边)一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过 40 亿个元素)。
增加元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
127.0.0.1:6379> LRANGE mylist 0 -1 #查看列表所有元素 1) "90" 2) "18" 3) "jack" 127.0.0.1:6379> LPUSH mylist egon #从左边插入元素 (integer) 4 127.0.0.1:6379> LRANGE mylist 0 -1 #查看 1) "egon" 2) "90" 3) "18" 4) "jack" 127.0.0.1:6379> RPUSH mylist json #从右边插入元素 (integer) 5 127.0.0.1:6379> LRANGE mylist 0 -1 #查看 1) "egon" 2) "90" 3) "18" 4) "jack" 5) "json" --------------------------------------------------------------- 127.0.0.1:6379> LPUSHX list shanghai #当list存在才会从左边依次追加元素 (integer) 0 127.0.0.1:6379> LRANGE list 0 -1 (empty array) --------------------------------------------------------------- 127.0.0.1:6379> RPUSHX list shanghai #当list存在才会从右边依次追加元素 (integer) 0 127.0.0.1:6379> LRANGE list 0 -1 (empty array) --------------------------------------------------------------- 127.0.0.1:6379> LINSERT mylist before jack 50 # 在list的某一个元素之前插入一个元素 (integer) 6 127.0.0.1:6379> LRANGE mylist 0 -1 1) "egon" 2) "90" 3) "18" 4) "50" 5) "jack" 6) "json" --------------------------------------------------------------- 127.0.0.1:6379> LINSERT mylist after jack 20 # 在list的某一个元素之前插入一个元素 (integer) 7 127.0.0.1:6379> LRANGE mylist 0 -1 1) "egon" 2) "90" 3) "18" 4) "50" 5) "jack" 6) "20" 7) "json" |
修改元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
127.0.0.1:6379> LRANGE mylist 0 -1 #查看元素 1) "egon" 2) "90" 3) "18" 4) "50" 5) "jack" 6) "20" 7) "json" 127.0.0.1:6379> LSET mylist 2 19 #修改列表指定下标的元素 OK 127.0.0.1:6379> LRANGE mylist 0 -1 1) "egon" 2) "90" 3) "19" 4) "50" 5) "jack" 6) "20" 7) "json" --------------------------------------------------------------- 127.0.0.1:6379> LRANGE A 0 -1 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> LRANGE B 0 -1 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> RPOPLPUSH A B # 将列表A的最右边的元素返回,然后追加到列表B的最左边。 "3" 127.0.0.1:6379> LRANGE A 0 -1 1) "1" 2) "2" 127.0.0.1:6379> LRANGE B 0 -1 1) "3" 2) "a" 3) "b" 4) "c" |
查看元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
127.0.0.1:6379> LRANGE mylist 0 -1 # 查看列表里的所有元素 1) "egon" 2) "90" 3) "19" 4) "50" 5) "jack" 6) "20" 7) "json" 127.0.0.1:6379> LRANGE mylist 2 4 # 查看指定下标元素 1) "19" 2) "50" 3) "jack" --------------------------------------------------------------- 127.0.0.1:6379> LLEN mylist # 查看列表里元素的个数 (integer) 7 --------------------------------------------------------------- 127.0.0.1:6379> LRANGE mylist 0 -1 1) "egon" 2) "90" 3) "19" 4) "50" 5) "jack" 6) "20" 7) "json" 127.0.0.1:6379> LINDEX mylist 1 # 指定下标查看列表中的元素 "90" --------------------------------------------------------------- # 从列表中左侧查询元素,返回列表的 key 和左侧第一个元素,若所有查询的列表中都没有元素,则会阻塞等待至设置的 timeout 秒之后返回空,若在这期间,这些列表新增了元素,则会立刻消费并返回该元素。 127.0.0.1:6379> LRANGE mylist 0 -1 1) "25" 2) "24" 3) "23" 4) "22" 5) "21" 6) "20" 7) "19" 8) "18" 9) "17" 127.0.0.1:6379> BLPOP mylist 10 # 从列表中左侧查询元素 1) "mylist" 2) "25" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "24" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "23" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "22" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "21" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "20" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "19" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "18" 127.0.0.1:6379> BLPOP mylist 10 1) "mylist" 2) "17" 127.0.0.1:6379> BLPOP mylist 10 #光标会等待10秒返回 (nil) (10.04s) |
删除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
127.0.0.1:6379> LRANGE mylist 0 -1 #查看列表 1) "egon" 2) "90" 3) "19" 4) "50" 5) "jack" 6) "20" 7) "json" 127.0.0.1:6379> LPOP mylist #从左边消费列表中的元素,消费完之后从列表中删除。 "egon" 127.0.0.1:6379> LRANGE mylist 0 -1 #再次查看 1) "90" 2) "19" 3) "50" 4) "jack" 5) "20" 6) "json" --------------------------------------------------------------- 127.0.0.1:6379> LRANGE mylist 0 -1 # 查看 1) "90" 2) "19" 3) "50" 4) "jack" 5) "20" 6) "json" 127.0.0.1:6379> RPOP mylist # 从右边消费列表中的元素,消费完之后从列表中删除。 "json" 127.0.0.1:6379> LRANGE mylist 0 -1 #再次查看 1) "90" 2) "19" 3) "50" 4) "jack" 5) "20" |
集合类型(Set)
Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储 40 多亿个成员)。
增加数据
1 2 3 4 5 6 7 8 9 10 11 |
# 给集合内新增成员,若集合不存在则创建集合并新增成员。 127.0.0.1:6379> SADD myset 1 (integer) 1 127.0.0.1:6379> SADD myset 2 (integer) 1 127.0.0.1:6379> SADD myset 3 (integer) 1 127.0.0.1:6379> SMEMBERS myset 1) "1" 2) "2" 3) "3" |
修改数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 移动数据 127.0.0.1:6379> SADD myset1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> sadd myset2 one two three (integer) 3 127.0.0.1:6379> SMOVE myset1 myset2 4 (integer) 1 127.0.0.1:6379> SMEMBERS myset1 1) "1" 2) "2" 3) "3" 4) "5" 127.0.0.1:6379> SMEMBERS myset2 1) "three" 2) "two" 3) "one" 4) "4" |
查询数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
127.0.0.1:6379> SMEMBERS myset2 # 查看集合中所有的成员 1) "three" 2) "two" 3) "one" 4) "4" 127.0.0.1:6379> SCARD myset2 # 返回集合中成员的个数 (integer) 4 127.0.0.1:6379> SRANDMEMBER myset2 2 # 从集合中随机返回指定个数的成员 1) "one" 2) "two" 127.0.0.1:6379> SRANDMEMBER myset2 2 1) "three" 2) "two" 127.0.0.1:6379> SISMEMBER myset2 one # 判断对象是否是集合中的成员 (integer) 1 # 0表示否 1表示是 127.0.0.1:6379> SISMEMBER myset2 1 (integer) 0 127.0.0.1:6379> SPOP myset2 # 从集合中随机弹出一个成员,返回该成员并从集合中删除该成员。 "4" 127.0.0.1:6379> SMEMBERS myset1 1) "1" 2) "2" 3) "3" 4) "5" --------------------------------------------------------------- # 取多个集合的交集,返回这些集合中共同拥有的成员。 127.0.0.1:6379> sadd myseta 1 2 3 4 5 (integer) 5 127.0.0.1:6379> sadd mysetb 4 5 6 7 8 (integer) 5 127.0.0.1:6379> sadd mysetc 5 6 7 8 9 (integer) 5 127.0.0.1:6379> SINTER myseta mysetb mysetc 1) "5" --------------------------------------------------------------- # 将多个集合的交集的结果保存为一个新的集合 destination ,返回新集合的成员个数。 127.0.0.1:6379> SMEMBERS mysetc 5 6 7 8 127.0.0.1:6379> SMEMBERS mysetb 4 5 6 7 8 127.0.0.1:6379> SINTERSTORE mysetc mysetb myseta 4 127.0.0.1:6379> SMEMBERS myseta 5 6 7 8 --------------------------------------------------------------- # 取多个集合的并集,相同的成员会被去重 127.0.0.1:6379> SADD myset_a 1 2 3 4 5 (integer) 5 127.0.0.1:6379> sadd myset_b 3 4 5 6 7 (integer) 5 127.0.0.1:6379> SUNION myset_a myset_b 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" # 将多个集合的并集的结果保存为一个新的集合 127.0.0.1:6379> SUNIONSTORE new_myset myset_a myset_b (integer) 7 127.0.0.1:6379> SMEMBERS new_myset 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" --------------------------------------------------------------- # 取多个集合的差集,以最左边的为主集合,返回左集合中有而其他集合没有的成员 127.0.0.1:6379> SMEMBERS myset_a 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> SMEMBERS myset_b 1) "3" 2) "4" 3) "5" 4) "6" 5) "7" 127.0.0.1:6379> SDIFF myset_a myset_b 1) "1" 2) "2" --------------------------------------------------------------- # 将多个集合的差集的结果保存为一个新的集合 127.0.0.1:6379> SDIFFSTORE myset_sdiff myset_a myset_b (integer) 2 127.0.0.1:6379> SMEMBERS myset_sdiff 1) "1" 2) "2" |
删除数据
1 2 3 4 5 6 7 8 9 |
# 从集合中删除指定的成员 127.0.0.1:6379> SMEMBERS myset 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SREM myset 1 2 (integer) 2 127.0.0.1:6379> SMEMBERS myset 1) "3" |
顺序集合类型(Sorted set)
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联 一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的, 但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大 的成员数为 2^32 - 1 (4294967295, 每个集合可存储 40 多亿个成员)
增加数据
1 2 3 4 5 6 7 8 9 10 |
#往有序集合中新增成员,需要指定该成员的分数,分数可以是整形或浮点型,当分数相同时候,索引下标按 照字典排序。 127.0.0.1:6379> ZADD myzset 1 alvin (integer) 1 127.0.0.1:6379> ZADD myzset 2 shanghai 3 beijing (integer) 2 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "shanghai" 3) "beijing" |
修改数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#有序集合中成员的数量,删除并返回(弹出)所有成员 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "beijing" 3) "chongqing" 4) "shanghai" 5) "jiangsu" 6) "shenzhen" 127.0.0.1:6379> ZPOPMAX myzset #右端弹出指定个数的成员/分数对 1) "shenzhen" 2) "6" 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "beijing" 3) "chongqing" 4) "shanghai" 5) "jiangsu" 127.0.0.1:6379> ZPOPMIN myzset #左端弹出指定个数的成员/分数对 1) "alvin" 2) "1" 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "beijing" 2) "chongqing" 3) "shanghai" 4) "jiangsu" |
查询数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
127.0.0.1:6379> ZRANGE myzset 0 -1 # 获取全部的成员数 1) "alvin" 2) "shanghai" 3) "beijing" 127.0.0.1:6379> ZRANGE myzset 1 2 # 获取指定分数区间内的成员数 1) "shanghai" 2) "beijing" 127.0.0.1:6379> ZCARD myzset # 获取有序集合的成员数 (integer) 3 --------------------------------------------------------------- #根据字典排序返回 min ,max 之间的数据量 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "shanghai" 3) "beijing" 127.0.0.1:6379> ZLEXCOUNT myzset [al [zzz (integer) 3 --------------------------------------------------------------- #返回有序集中,成员的分数值,不存在的成员返回空 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "shanghai" 3) "beijing" 127.0.0.1:6379> ZSCORE myzset shanghai "2" --------------------------------------------------------------- # 模糊匹配 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "shanghai" 3) "beijing" 127.0.0.1:6379> ZSCAN myzset 0 match "sh*" 1) "0" 2) 1) "shanghai" 2) "2" 127.0.0.1:6379> ZSCAN myzset 0 match "al*" 1) "0" 2) 1) "alvin" 2) "1" |
删除数据
1 2 3 4 5 6 7 8 9 10 |
# 移除指定的成员 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "shanghai" 3) "beijing" 127.0.0.1:6379> ZREM myzset shanghai (integer) 1 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "alvin" 2) "beijing" |
Redis 基础命令之常用命令
查看所有 key
1 2 3 4 |
127.0.0.1:6379> keys * 1) "myset_sdiff" 2) "mysetb" 3) "myzset" |
查看 key 的类型
1 2 3 4 |
127.0.0.1:6379> TYPE a string 127.0.0.1:6379> TYPE mysetb set |
随机返回一个 key
1 2 3 4 5 6 |
127.0.0.1:6379> RANDOMKEY "myset_b" 127.0.0.1:6379> RANDOMKEY "a" 127.0.0.1:6379> RANDOMKEY "mysetb" |
删除 key
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
127.0.0.1:6379> keys * 1) "myset_sdiff" 2) "mysetb" 3) "myzset" 4) "myset_a" 5) "new_myset" 6) "myset_b" 127.0.0.1:6379> DEL myset_sdiff (integer) 1 127.0.0.1:6379> keys * 1) "a" 2) "mysetb" 3) "myzset" 4) "myset_a" 5) "new_myset" 6) "myset_b" |
判断一个 key 是否存在
1 2 3 4 5 6 7 8 9 10 11 |
127.0.0.1:6379> keys * 1) "a" 2) "mysetb" 3) "myzset" 4) "myset_a" 5) "new_myset" 6) "myset_b" 127.0.0.1:6379> EXISTS a # 1表示存在 (integer) 1 127.0.0.1:6379> EXISTS b # 0表示不存在 (integer) 0 |
重命名一个 key
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
127.0.0.1:6379> keys * 1) "a" 2) "mysetb" 3) "myzset" 4) "myset_a" 5) "new_myset" 6) "myset_b" 127.0.0.1:6379> RENAME a c OK 127.0.0.1:6379> keys * 1) "mysetb" 2) "c" 3) "myzset" 4) "myset_a" 5) "new_myset" 6) "myset_b" |
查看 key 的剩余生存时间
1 2 3 4 5 |
# 以秒为单位 127.0.0.1:6379> ttl a (integer) -2 # -2 代表已过期 127.0.0.1:6379> ttl c (integer) -1 # -1 代表永不过期 |