Redis常用数据类型命令行实操

Redis常用数据类型命令行实操

一、基本操作

1、select切换库,默认是0号库(共16个库)
127.0.0.1:6379> select 1   #切换1号库
2、dbsize查看数据库长度(数据库中存放多少数据)
127.0.0.1:6379> dbsize
(integer) 3

二、key操作

1、查找符合格式的key
127.0.0.1:6379> key *     #查看所有的key,等同于show tables;
127.0.0.1:6379> key a???  #查看以a开头,长度是4个字符的key(切忌一个“?”只能代表一位)
2、TYPE KEY返回key对应的值类型
127.0.0.1:6379> type a    #返回a的数值类型
3、move key db把一组键值对数据移动到另一个数据中
127.0.0.1:6379> move a 15     #把a移动到15号库
(integer) 1
4、del key根据key进行删除,至少指定一个key
127.0.0.1:6379[15]> del a     #删除a
(integer) 1
5、exists key1 key2…检查指定的key是否存在

指定一个key时,存在返回1,不存在返回0,也可以指定多个,返回存在的key的数量

127.0.0.1:6379> EXISTS bb
(integer) 1
127.0.0.1:6379> EXISTS bb dd    
(integer) 2
6、现有的key中随机返回一个
127.0.0.1:6379> RANDOMKEY
"aaaa"
7、rename key newkey重命名一个KEY

newkey不管是否已经存在都会执行,如果newkey已经存在则会被覆盖

127.0.0.1:6379> RENAME aba ls       #aba重命名为ls
OK
8、renamenx key newkey 重命名且只有在newkey不存在时候能执行成功,否则失败
127.0.0.1:6379> RENAMENX ls aba
(integer) 1
9、ttl key 以秒为单位查看key还能存在的时间(-1代表永久有效)
127.0.0.1:6379> ttl aaaa             #永久存活
(integer) -1
127.0.0.1:6379> ttl aba              #剩余11秒
(integer) 11
127.0.0.1:6379> ttl aba              #已经死亡
(integer) -2
10、expire key seconds给一个key设置在seconds秒后过期,过期会被Redis移除
127.0.0.1:6379> EXPIRE aba 20      #设置aba存活时间20秒
(integer) 1
11、移除过期时间,变成永久key
127.0.0.1:6379> EXPIRE b 20         #设定b存活时间20秒
(integer) 1
127.0.0.1:6379> ttl b               #查看b的存活时间
(integer) 13
127.0.0.1:6379> PERSIST b           #移除存活时间,变成永久key
(integer) 1
127.0.0.1:6379> ttl b               #查看b的存活时间
(integer) -1

三、String类型

1、给key传String类型的值

EX参数用于设置存活的秒数。

PX参数用于设置存活的毫秒数。

NX参数表示当前命令中指定的KEY不存在才执行。

XX参数表示当前命令中指定的KEY存在才执行。

SET KEY VALUE [EX SECONDS] [PX MILLISECONDS] [NX|XX]

127.0.0.1:6379> SET cc 22 EX 30 NX #创建一个key为String类型的cc内容22存活时间30秒key不存在时执行
OK
2、get 根据key得到值
127.0.0.1:6379> set a 123456
OK
127.0.0.1:6379> get a 
"123456"
3、strlen key返回字符串长度
127.0.0.1:6379> STRLEN a
(integer) 6
4、append key value把指定的value追加到key对应来源值后面

返回值是追加后字符串长度

127.0.0.1:6379> STRLEN a           #a原来数据长度
(integer) 6
127.0.0.1:6379> APPEND a abc       #在a后面追加字符串abc
(integer) 9                        #返回新的字符串长度
127.0.0.1:6379> get a              #查看a
"123456abc"
5、ince key自增1
127.0.0.1:6379> get b
"224"
127.0.0.1:6379> INCR b
(integer) 225
6、decr key 自减1
127.0.0.1:6379> get b
"225"
127.0.0.1:6379> DECR b
(integer) 224
7、incrby key increment原值+increment
(integer) 224
127.0.0.1:6379> INCRBY b 11    #原值增加11
(integer) 235
8、DECRBY KEY DECREMENT 原值-DECREMENT
(integer) 235
127.0.0.1:6379> DECRBY b 111   #原值减少111
(integer) 124
9、getrange key start end 从字符串中取指定的一段
127.0.0.1:6379> get a
"123456abc"
127.0.0.1:6379> GETRANGE a 2 5     #从a中取下角标从2到5的数字
"3456"
10、setrange key offset value从offset开始使用value进行替换
127.0.0.1:6379> get a
"123456abc"
127.0.0.1:6379> SETRANGE a 1 %%%%
(integer) 9
127.0.0.1:6379> get a
"1%%%%6abc"
11、setex key seconds value 设置key、value时指定存在秒数
127.0.0.1:6379> SETEX king 30 12          #设置key为king存活30面内容12的方法1 
OK 
127.0.0.1:6379> ttl king
(integer) 27
127.0.0.1:6379> set king 30 ex 30         #设置key为king存活30面内容12的方法2 
OK
127.0.0.1:6379> ttl king
(integer) 28
12、setnx key value新建字符串类型的键值对(不存在时才能设置成功)
127.0.0.1:6379> SETNX kin abcde      
(integer) 1  #成功
127.0.0.1:6379> SETNX kin abc
(integer) 0  #失败
13、mset key value [key value]一次性设置一组多个键值对
127.0.0.1:6379> mset zhangshan aa lisi bb wangwu cc
OK
14、mget key [key]一次性指定多个KEY,返回它们对应的值,没有值的KEY返回值是(nil)
127.0.0.1:6379> MGET a b bb dd 
1) "1%%%%6abc"
2) "124"
3) (nil)
4) (nil)
15、mestnx key value [key value …]一次性新建多个值
127.0.0.1:6379> MSETNX z 1 x 2 y 3
(integer) 1
127.0.0.1:6379> MGET z x y
1) "1"
2) "2"
3) "3"
16、getset key value设置新值,同时能够将旧值返回
127.0.0.1:6379> GETSET a bbbbbb
"1%%%%6abc"
127.0.0.1:6379> get a
"bbbbbb"

四、list类型

1、lpush key value从左边添加数据
127.0.0.1:6379> LRANGE bb 0 10
1) "777"
2) "222333"
127.0.0.1:6379> LPUSH bb ababab   
(integer) 3         # 返回list集合长度
127.0.0.1:6379> LRANGE bb 0 10
1) "ababab"
2) "777"
3) "222333"
2、rpush key value从右边添加数据
127.0.0.1:6379> LRANGE bb 0 10
1) "ababab"
2) "777"
3) "222333"
127.0.0.1:6379> RPUSH bb 444444
(integer) 4
127.0.0.1:6379> LRANGE bb 0 10
1) "ababab"            #上左
2) "777"
3) "222333"
4) "444444"            #下右
3、lrange key start stop根据list集合的索引打印元素

​ 正着数:0,1,2,3,…

​ 倒着数:-1,-2,-3,…

127.0.0.1:6379> LRANGE bb 0 10
1) "ababab"
2) "777"
3) "222333"
4) "444444"
4、llen key 集合的长度(list)
127.0.0.1:6379> LLEN bb
(integer) 4
5、lpop key从左弹出一个元素(弹出=返回+删除)
127.0.0.1:6379> LRANGE bb 0 10
1) "ababab"
2) "777"
3) "222333"
4) "444444"
127.0.0.1:6379> LPOP bb 
"ababab"             #返回弹出值
127.0.0.1:6379> LRANGE bb 0 10
1) "777"
2) "222333"
3) "444444"
6、rpop key从右弹出一个元素(同左)
127.0.0.1:6379> LRANGE bb 0 10
1) "777"
2) "222333"
3) "444444"
127.0.0.1:6379> RPOP bb
"444444"
127.0.0.1:6379> LRANGE bb 0 10
1) "777"
2) "222333"
7、rpoplpush source destination从source中RPOP一个元素,LPUSH到destination中
127.0.0.1:6379> RPOPLPUSH bb dd       #从bb右边中吐出,在dd左边加入
"777"
127.0.0.1:6379> LRANGE dd 0 10
1) "777"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"

8、lindex key index根据索引从集合中取值
127.0.0.1:6379> LRANGE dd 0 10
1) "777"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"
127.0.0.1:6379> LINDEX dd 1
"222333"
127.0.0.1:6379> LINDEX dd 0
"777"
9、linsert key before/after pivot value在pivot指定的之前面或者后面插入value
127.0.0.1:6379> LINSERT dd before 222333 xxxxxx   #在222333前插入xxxxxx
(integer) 9               #after是在后面插入
127.0.0.1:6379> LRANGE dd 0 10
1) "777"
2) "xxxxxx"
3) "222333"
4) "666777"
5) "999000"
6) "777888"
7) "aaabbb"
8) "444555"
9) "111222"

10、lpushx key value只能针对存在的list执行LPUSH
127.0.0.1:6379> lpushx cc 000000     #不存在的cc无法插入
(integer) 0
127.0.0.1:6379> lpushx dd 000000     #存在的dd可以插入
(integer) 10
11、lrem key count value 根据count指定的数量从key对应的list中删除value
127.0.0.1:6379> LRANGE dd 0 10
1) "000000"
2) "xxxxxx"
3) "222333"
4) "666777"
5) "999000"
6) "777888"
7) "aaabbb"
8) "444555"
9) "111222"
127.0.0.1:6379> LREM dd 1 xxxxxx     #count是数量 value是删除数据值
(integer) 1
127.0.0.1:6379> LRANGE dd 0 10
1) "000000"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"

12、lset key index value把指定索引位置的元素替换为另一个值
127.0.0.1:6379> LRANGE dd 0 10
1) "000000"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"
127.0.0.1:6379> LSET dd 0 k     #0是索引 k是value值
OK
127.0.0.1:6379> LRANGE dd 0 10
1) "k"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"
13、ltrim key start stop 仅保留指定区间的数据,两边的数据被删除
127.0.0.1:6379> LRANGE dd 0 10
1) "k"
2) "222333"
3) "666777"
4) "999000"
5) "777888"
6) "aaabbb"
7) "444555"
8) "111222"
127.0.0.1:6379> LTRIM dd 2 5      # 2和5是角标
OK
127.0.0.1:6379> LRANGE dd 0 10
1) "666777"
2) "999000"
3) "777888"
4) "aaabbb"

五、set类型

1、sadd key member向set集合添加数据
127.0.0.1:6379> sadd k 11 22 33
(integer) 3
2、smembers查看set集合所有数据
127.0.0.1:6379> SMEMBERS k
1) "11"
2) "22"
3) "33"
3、scard key返回集合中元素的数量
127.0.0.1:6379> SCARD k
(integer) 3
4、sismember key member检查当前指定member是否是集合中的元素
127.0.0.1:6379> SISMEMBER k 22      
(integer) 1     #包含返回1
127.0.0.1:6379> SISMEMBER k 44
(integer) 0     #不包含返回0
5、srem key member [member]从集合中删除元素
127.0.0.1:6379> SREM k 22     #可删除多个
(integer) 1
127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
6、sinter key将指定的集合进行“交集”操作

​ 集合A:a,b,c

​ 集合B:b,c,d

​ 交集:b,c

127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
127.0.0.1:6379> SMEMBERS g
1) "22"
2) "33"
3) "44"
127.0.0.1:6379> SINTER k g  
1) "33"

7、sinterstore destination key [key…]取交集后存入destinationsin
127.0.0.1:6379> SINTERSTORE destinationsin k g
(integer) 1
127.0.0.1:6379> SMEMBERS destinationsin
1) "33"
8、sdiff key [key…]将指定的集合执行“差集”操作

​ 集合A:a,b,c

​ 集合B:b,c,d

​ A对B执行diff:a

​ 相当于:A-交集部分

SDIFFSTORE destination key [key …] 将值同样存入集合

127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
127.0.0.1:6379> SMEMBERS g
1) "22"
2) "33"
3) "44"
127.0.0.1:6379> SDIFF k g
1) "11"
9、sunion key [key…]将指定的集合执行“并集”操作

​ 集合A:a,b,c

​ 集合B:b,c,d

​ 并集:a,b,c,d

127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
127.0.0.1:6379> SMEMBERS g
1) "22"
2) "33"
3) "44"
127.0.0.1:6379> SUNION g k
1) "11"
2) "22"
3) "33"
4) "44"
10、把member从source移动到destination
127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
127.0.0.1:6379> SMEMBERS g
1) "22"
2) "33"
3) "44"
127.0.0.1:6379> SMOVE g k 44
(integer) 1
127.0.0.1:6379> SMEMBERS k
1) "11"
2) "33"
3) "44"
127.0.0.1:6379> SMEMBERS g
1) "22"
2) "33"
11、srandmember key [count]从集合中随机返回count个数量的元素,count不指定就返回1个
127.0.0.1:6379> SRANDMEMBER g 
"33"
127.0.0.1:6379> SRANDMEMBER g 2
1) "22"
2) "33"
12、spop key [count]从集合中随机弹出count个数量的元素,count不指定就弹出1个
127.0.0.1:6379> SPOP k             #弹出等于删除
"33"
127.0.0.1:6379> SPOP g 2 
1) "22"
2) "33"
127.0.0.1:6379> SMEMBERS g
(empty list or set)

六、hash类型

1、hset key field value添加数据
127.0.0.1:6379> hset QQ kk 11
(integer) 1
127.0.0.1:6379> hset FF aa 11
(integer) 1
2、hgetall key 查询一个key的所有数据
127.0.0.1:6379> hgetall QQ
1) "kk"
2) "11"
3、hget key field查询一个key对应field的数据
127.0.0.1:6379> hget QQ kk       #如果存在返回value
"11"
127.0.0.1:6379> hget QQ gg       #如果不存在返回nil
(nil)
4、hlen key查询一个key的数据个数
127.0.0.1:6379> hlen QQ
(integer) 1
5、hkeys key查询一个key的所有field
127.0.0.1:6379> HSET zzaa 11 aa 22 bb
(integer) 2
127.0.0.1:6379> HKEYS zzaa
1) "11"
2) "22"
6、hvals key查询一个key的所有value
127.0.0.1:6379> HSET zzaa 11 aa 22 bb  
(integer) 2
127.0.0.1:6379> HVALS zzaa
1) "aa"
2) "bb"
7、hexists key field判断一个key中是否存在指定的field
127.0.0.1:6379> HKEYS zzaa
1) "11"
2) "22"
127.0.0.1:6379> HEXISTS zzaa 11        #如果存在key值 返回1
(integer) 1
127.0.0.1:6379> HEXISTS zzaa 33        #如果不存在返回0
(integer) 0
8、hdel key field [field…]删除一个key指定的field
7.0.0.1:6379> hdel zzaa 11 22
(integer) 2

9、hincrby key field increment给一个key的某个field对应的value增加increment值

127.0.0.1:6379> hget QQ kk           #查看原有的kk值
"11"
127.0.0.1:6379> HINCRBY QQ kk 22     #增加后的kk值,并且返回最终值
(integer) 33
10、hmget key field [field…]批量获取一个key的多个field
127.0.0.1:6379> HMGET QQ 11 kk
1) (nil)
2) "33"
11、hmset key field value批量添加一个key的多个field-value
127.0.0.1:6379> HMSET QQ rr 44 gg 55 yy 77
OK
127.0.0.1:6379> HGETALL QQ
1) "kk"
2) "33"
3) "rr"
4) "44"
5) "gg"
6) "55"
7) "yy"
8) "77"

七、Zset类型

1、添加数据

ZADD key [NX|XX] [CH] [INCR] score member [score member …]

· XX: 仅仅更新存在的成员,不添加新成员。

· NX: 不更新存在的成员。只添加新成员。

· CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。 所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,ZADD返回值只计算新添加成员的数量。

· INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
127.0.0.1:6379> ZADD xuesheng 90 xiaohong
(integer) 1
127.0.0.1:6379> ZADD xuesheng 80 xiaolv
(integer) 1
127.0.0.1:6379> ZADD xuesheng 59 xiaohuang
(integer) 1
127.0.0.1:6379> KEYS *
1) "xuesheng"
2) "senser"
3) "distinct "
127.0.0.1:6379> 
2、ZRANGE key start stop [WITHSCORES] 在指定范围内返回数据([WITHSCORES]带上分数返回)
127.0.0.1:6379> ZRANGE xuesheng 0 5  ##0 5是角标 返回个数
1) "xiaohuang"
2) "xiaoLan"
3) "xiaolv"
4) "xiaohong"
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES  ## WITHSCORES 实现打印值和自动排序功能
1) "xiaohuang"
2) "59"
3) "xiaoLan"
4) "60"
5) "xiaolv"
6) "80"
7) "xiaohong"
8) "90"
3、ZCARD key 查询key对应的数据个数
 1) "xiaohuang"
 2) "59"
 3) "xiaoLan"
 4) "60"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZCARD xuesheng   ##返回学生的个数
(integer) 5
4、ZSCORE key member 返回对应数据的分数
 1) "xiaohuang"
 2) "59"
 3) "xiaoLan"
 4) "60"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZSCORE xuesheng xiaolv    ##返回学生小绿的分数
"80"
5、ZINCRBY key increment member 给某个元素增加分数
 1) "xiaohuang"
 2) "59"
 3) "xiaoLan"
 4) "60"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZINCRBY xuesheng 2 xiaohuang      ## 给xiaohuang添加2分
"61"
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES     ## 重新打印学生分数
 1) "xiaoLan"
 2) "60"
 3) "xiaohuang"
 4) "61"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
6、在分数的指定区间内返回数据

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 可以返回分数,也可以返回个数

limit设置原则:是按分数分组后,按照筛选出来的数据的角标取值

127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES
 1) "xiaoLan"
 2) "60"
 3) "xiaohuang"
 4) "61"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90" 
127.0.0.1:6379> ZRANGEBYSCORE xuesheng 70 100 WITHSCORES   ##设置分数区间70-100 
1) "xiaohua"
2) "70"
3) "xiaolv"
4) "80"
5) "xiaohong"
6) "90"
127.0.0.1:6379> ZRANGEBYSCORE xuesheng 70 100 WITHSCORES limit 1 2##70-100分组内取角标是1和2的两个数据(角标规则如数组,从0开始)
1) "xiaolv"
2) "80"
3) "xiaohong"
4) "90"
7、ZRANK key member 先对分数进行升序排序,返回member的排名
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES
 1) "xiaoLan"
 2) "60"
 3) "xiaohuang"
 4) "61"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZRANK xuesheng xiaohong    ##升序排序的排名(排序从0开始)
(integer) 4
8、ZREVRANK key member 先对分数进行降序排序,返回member的排名
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES
 1) "xiaoLan"
 2) "60"
 3) "xiaohuang"
 4) "61"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZREVRANK xuesheng xiaohong  ##降序排序(排序从0开始)
(integer) 0
9、ZREM key member [member …] 删除元素 (返回1成功,返回0失败)
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES
 1) "xiaoLan"
 2) "60"
 3) "xiaohuang"
 4) "61"
 5) "xiaohua"
 6) "70"
 7) "xiaolv"
 8) "80"
 9) "xiaohong"
10) "90"
127.0.0.1:6379> ZREM xuesheng xiaohong
(integer) 1
127.0.0.1:6379> ZRANGE xuesheng 0 5 WITHSCORES
1) "xiaoLan"
2) "60"
3) "xiaohuang"
4) "61"
5) "xiaohua"
6) "70"
7) "xiaolv"
8) "80"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值