Redis 基本命令大全

  • 一 Redis 键(key)
  • 1.1 type
  • 1.2 pexpireat
  • 1.3 expireat
  • 1.4 expire
  • 1.5 persist
  • 1.6 ttl
  • 1.7 pttl
  • 1.8 rename
  • 1.9 renamenx
  • 1.10 randomkey
  • 1.11 del
  • 1.12 exists
  • 1.13 keys
  • 二 Redis 字符串(string)
  • 2.1 set
  • 2.2 setex
  • 2.3 psetex
  • 2.4 setnx
  • 2.5 mset
  • 2.6 strlen
  • 2.7 setrange
  • 2.8 getrange
  • 2.9 get
  • 2.10 mget
  • 2.11 getset
  • 2.12 incr
  • 2.13 incrbyfloat
  • 2.14 decr
  • 2.15 decrby
  • 2.16 append
  • 三 Redis 列表(List)
  • 3.1 lpush
  • 3.2 lpushx
  • 3.3 rpush
  • 3.4 rpushx
  • 3.5 lpop
  • 3.6 rpop
  • 3.7 blpop
  • 3.8 brpop
  • 3.9 lrange
  • 3.10 rpoplpush
  • 3.11 brpoplpush
  • 3.12 linsert
  • 3.13 lindex
  • 3.14 lset
  • 3.15 llen
  • 3.16 lrem


一 Redis 键(key)

1.1 type

Type 命令用于返回 key 所储存的值的类型。

语法

type keyName

返回值:

返回 key 的数据类型,数据类型有:
	none (key不存在)
	string (字符串)
	list (列表)
	set (集合)
	zset (有序集)
	hash (哈希表)

实例

set name "zhangsan"
type name
string

1.2 pexpireat

PEXPIREAT 命令用于设置 key 的过期时间,已毫秒为单位。key 过期后将不再可用。

语法

pexpireat keyName 毫秒值

返回值:

设置成功返回 1
key不存在或不能为key设置过期时间时返回 0

实例

pexpireat name 10000000

1.3 expireat

EXPIREAT 命令用于以时间戳的方式设置key的过期时间,过期后key不可用

语法

expireat keyName 时间戳

返回值:

设置成功返回 1
key不存在或不能为key设置过期时间时返回 0

实例

expireat name 1293840000
(integer) 1

1.4 expire

EXPIRE 命令用于以秒的方式设置key的过期时间,过期后key不可用

语法

expireat keyName 秒值

返回值:

设置成功返回 1
key不存在或不能为key设置过期时间时返回 0

实例

expireat name 60
(integer) 1

1.5 persist

PERSIST 命令用于移除指定key的过期时间,使key永不过期

语法

persist keyName

返回值:

移除成功返回 1
key不存在或没有为key设置过期时间返回 0

实例

persist name
(integer) 1

1.6 ttl

TTL 命令用于返回以秒为单位的key的剩余过期时间

语法

ttl keyName

返回值:

当key不存在时返回-2
当key存在但没有设置过期时间时返回-1
否则以秒为单位返回key的剩余过期时间

实例

ttl name
(integer) 59

1.7 pttl

PTTL 命令用于返回以毫秒为单位的key的剩余过期时间

语法

pttl keyName

返回值:

当key不存在时返回-2
当key存在但没有设置过期时间时返回-1
否则以秒为单位返回key的剩余过期时间

实例

pttl name
(integer) 59000

1.8 rename

RENAME 命令用于修改key的名称

语法

rename keyName newKeyName

返回值:

改名成功返回 1
改名失败返回一个错误
当keyName和newKeyName 相同时,或者keyName不存在时返回一个错误
当newKeyName存在时会覆盖旧值

实例

rename name username

1.9 renamenx

RENAMENX 命令用于在新的key不存在时修改key的名称

语法

renamenx keyName newKeyName

返回值:

改名成功返回 1
如果newKeyName已经存在了,返回0
如果keyName不存在返回以error

实例

renamenx  name username
(integer) 1  //name存在   username不存在

renamenx  name username
(integer) 0  //name存在   username存在

renamenx  name username
(error) ERR no such key  //name不存在   username存在

备注:renamenx 和 rename 最大的区别在于newKeyName 存在时rename会覆盖旧值,renamenx会返回0不执行任何操作

1.10 randomkey

RANDOMKEY 命令用于从当前数据库返回一个随机的key

语法

randomkey

返回值:

当数据库不为空时返回一个随机的key
当数据库为空时返回一个nil

实例

randomkey
"name"

1.11 del

DEL 命令用于删除已存在的key

语法

del keyName

返回值:

被删除key的数量

实例

del name
(integer) 1

1.12 exists

EXISTS 命令用于判断key是否存在

语法

exists keyName

返回值:

key存在返回1
key不存在返回0

实例

exists name
(integer) 1

1.13 keys

EKYS 命令用于检查所有给定模式的key

语法

keys 模式

返回值:

符合模式的key的列表

实例

keys name*
(integer) 1  //返回所有以name开头的key的列表

二 Redis 字符串(string)

2.1 set

SET 命令用于设置给定key的值,如果key存在就覆写,无视类型

语法

set keyName value

返回值:

OK

实例

set name zhangsan
OK

2.2 setex

SETEX  命令用于给指定的key设置过期时间(单位:秒)和值,如果key已经存在,则覆盖

语法

setex keyName 过期时间(秒) value

返回值:

OK

实例

setex name 60 zhangsan
OK

2.3 psetex

PSETEX  命令用于给指定的key设置过期时间(单位:毫秒)和值,如果key已经存在,则覆盖

语法

psetex keyName 过期时间(毫秒) value

返回值:

OK

实例

psetex name 60000 zhangsan
OK

2.4 setnx

SETNX(set if not exists)  命令用于当key不存在时,给指定的key设置值

语法

setnx keyName  value

返回值:

设置成功返回1
设置失败返回0

实例

setnx name zhangsan
(integer) 0

2.5 mset

MSET 命令用于同时设置一个或多个key - value 对

语法

msetnx key1 value1 key2 value2 ...

返回值:

OK

实例

mset name1 zhangsan name2 lisi
OK

2.6 strlen

STRLEN 命令用于获取指定key的字符串的长度

语法

strlen keyName

返回值:

返回字符串的长度
如果key不是字符串,返回一个error

实例

strlen name
(integer) 8

2.7 setrange

SETRANGE 命令用于使用指定的字符串替换原字符串,从原字符串的offset位置开始

语法

setrange key offset(起始位置) value

返回值:

被修改后字符串的长度

实例

set name zhangsan
setrange name 0 "lisi"
(integer) 8  //这是name的值为lisigsan   所以长度为8

2.8 getrange

GETRANGE 命令用于获取存储在指定key中字符串的子字符串,截取范围由start 和  end决定

语法

getrange key start end

返回值:

截取到的子字符串

实例

getrange name1 0 5
"zhangs"

2.9 get

GET 命令用于获取指定key的值,如果key不存在返回nil

语法

get keyName

返回值:

key的值
如果key不存在返回nil
如果key不是字符串类型,返回error

实例

get name
"zhangsan"

2.10 mget

MGET 命令用于获取一个或多个key的值,如果某个key不存在,那么这个key返回nil

语法

mget keyName1 keyName2 ...

返回值:

一个包含所有key的值的列表

实例

mget name name1
"zhangsan"
(nil)

2.11 getset

GETSET 命令用于获取指定key的值,并设置新值

语法

getset keyName value

返回值:

返回key的旧值
当key不存在时返回nil,并设置新值
当可以存在,但不是字符串时返回error

实例

getset name lisi
"zhangsan"

2.12 incr

INCR 命令用于将key存储的数字增一
如果key不存在,会先初始化为0,然后在增一

语法

incr keyName

返回值:

返回incr命令之后key的值
如果key不能转换为整数,或者key不是字符串,那么返回一个error

实例

incr num
(integer) 1

2.13 incrbyfloat

INCRBYFLOAT 命令用于将key存储的数字进行浮点数增加操作
如果key不存在,会先初始化为0,然后在相加

语法

incrbyfloat keyName floatNum(需要增加的数)

返回值:

返回incrbyfloat命令相加之后key的值
如果key不能转换为浮点数,或者key不是字符串,那么返回一个error

实例

incrfloat numFloat 2.5
"6.5"

2.14 decr

DECR 命令用于将key存储的数字减一
如果key不存在,会先初始化为0,然后在减一

语法

decr keyName

返回值:

返回decr命令之后key的值
如果key不能转换为整数,或者key不是字符串,那么返回一个error

实例

decr num
(integer) 0

2.15 decrby

DECRBY 命令用于将key存储的数字减去指定的值
如果key不存在,会先初始化为0,然后在进行相减

语法

decrby keyName num(被减去的整数)

返回值:

返回decrby命令相减之后key的值
如果key不能转换为整数,或者key不是字符串,那么返回一个error

实例

decrby num 1
(integer) 5

备注:incr decr incrbyfloat decrby 这四个命令中只有incrbyfloat能操作浮点数,其他都不能,可以用incrbyfloat num -3.6 这样的操作进行浮点数的相减操作

2.16 append

APPEND 命令用于为指定的key追加值
如果key存在,append命令会将value追加到原来值的末尾
如果key不存在,append命令就将key的值设置为value,

语法

append keyName value

返回值:

返回追加字符串后字符串的长度

实例

append name lisi
(integer) 12

三 Redis 列表(List)

3.1 lpush

LPUSH 命令用于将一个或多个值插入列表头部,如果key不存在则创建一个空的列表并执行lpush命令

语法

lpush key value1 value2

返回值:

返回执行lpush命令后列表的长度
如果key不是列表,则返回一个error

实例

lpush namelist zhangsan lisi
(integer) 2

3.2 lpushx

LPUSHX 命令用于将一个或多个值插入已存在的列表头部,如果key不存在则操作无效

语法

lpushx key value1 value2

返回值:

返回执行lpushx命令后列表的长度

实例

lpushx namelist xiaoming wangmei
(integer) 4

3.3 rpush

RPUSH 命令用于将一个或多个值插入列表尾部(最右边),如果key不存在则创建一个空的列表并执行rpush命令

语法

rpush key value1 value2

返回值:

返回执行rpush命令后列表的长度
如果key不是列表,则返回一个error

实例

rpush namelist wangwu wangermazi
(integer) 4

3.4 rpushx

RPUSHX 命令用于将一个或多个值插入已存在的列表尾部,如果key不存在则操作无效

语法

rpushx key value1 value2

返回值:

返回执行rpushx命令后列表的长度

实例

rpushx namelist xiaoli xiaowang
(integer) 6

3.5 lpop

LPOP 命令用于移除并返回列表的第一个元素

语法

lpop key

返回值:

返回列表的第一个元素
如果key不是列表,则返回一个error
如果key为空则返回一个nil

实例

lpop namelist
"lisi"

3.6 rpop

RPOP 命令用于移除并返回列表的最后一个元素

语法

rpop key

返回值:

返回列表的最后一个元素
如果key不是列表,则返回一个error
如果key为空则返回一个nil

实例

rpop namelist
"wangermazi"

3.7 blpop

BLPOP 命令用于移除并返回列表的第一个元素,如果列表没有元素会阻塞直到等待超时,或发现可弹出的元素为止。

语法

blpop key timeout

返回值:

返回一个含有两个元素的列表,第一个元素为key,第二个元素为value
如果列表不存在或者列表为空,等待超时时间过后,会返回一个nil

实例

blpop aaaaaa  1
(nil)
(1.00s)  //列表不存在  等待超时时间过后,返回一个nil

blpop list 10
1) "list"
2) "zhangsan"  //列表里有元素立马弹出

blpop list 10    //当列表里没有元素时,会在这里等待
1) "list"		//用另一个线程往list里放入lisi ,会在这里立马弹出 
2) "wangwu"
(6.51s)			//这里时等待时间

3.8 brpop

BRPOP 命令用于移除并返回列表的最后一个元素,如果列表没有元素会阻塞直到等待超时,或发现可弹出的元素为止。

语法

brpop key timeout

返回值:

返回一个含有两个元素的列表,第一个元素为key,第二个元素为value
如果列表不存在或者列表为空,等待超时时间过后,会返回一个nil

实例

brpop aaaaaa  1
(nil)
(1.00s)  //列表不存在  等待超时时间过后,返回一个nil

brpop list 10
1) "list"
2) "zhangsan"  //列表里有元素立马弹出

brpop list 10    //当列表里没有元素时,会在这里等待
1) "list"		//用另一个线程往list里放入lisi ,会在这里立马弹出 
2) "wangwu"
(6.51s)			//这里时等待时间

3.9 lrange

LRANGE 命令用于返回列表内指定区间的元素,区间偏移量由start和end指定,
数字0表示第一个元素,1表示第二个元素 ,以此类推
数字-1表示最后一个元素,-2便是倒数第二个元素,以此类推

语法

lrange key start end

返回值:

返回一个包含指定区别内元素的列表

实例

lrange list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"

3.10 rpoplpush

RPOPLPUSH  命令用于移除列表的最后一个元素,将他添加到另一个列表并返回

语法

rpoplpush oldList newList

返回值:

被弹出的元素

实例

RPOPLPUSH list mylist
"zhangsan"   //将list中的第最后一个元素取出并将它放入新的列表mylist中

3.11 brpoplpush

BRPOPLPUSH  命令用于移除列表的最后一个元素,将他添加到另一个列表并返回,如果列表没有元素会阻塞直到等待超时,或发现可弹出的元素为止。

语法

brpoplpush oldList newList

返回值:

被弹出的元素

实例

BRPOPLPUSH mylist list 10
"zhangsan"					//原理和blpop和brpop命令相似

3.12 linsert

LINSERT 命令用于在列表元素的前或后插入元素,当元素不存在时不执行任何操作,当列表不存在时,不执行任何操作

语法

linsert key before|after existingValue newValue

返回值:

返回列表长度
如果没有找到指定元素返回-1
如果key不存在或者为空返回0

实例

127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
127.0.0.1:6379[3]> LINSERT list before wangwu xiaoming  //在wuangwu前面插入xiaoming
(integer) 5
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "zhangsan"

127.0.0.1:6379[3]> linsert list after aaa bbb 
(integer) -1   //aaa不存在返回-1

127.0.0.1:6379[3]> linsert list2 after aaa bbb
(integer) 0		//list2不存在返回0

3.13 lindex

LINDEX 命令用于通过索引获取元素的值
数字0表示第一个元素,1表示第二个元素 ,以此类推
数字-1表示最后一个元素,-2便是倒数第二个元素,以此类推

语法

lindex key index

返回值:

返回指定下标元素的值
如果下标不存在返回nil

实例

127.0.0.1:6379[3]> lindex list 2
"wangwu"

3.14 lset

LSET 命令用于通过索引设置元素的值
数字0表示第一个元素,1表示第二个元素 ,以此类推
数字-1表示最后一个元素,-2便是倒数第二个元素,以此类推

语法

lset key index value

返回值:

设置成功返回OK
如果索引不存在或者对一个空的列表进行lset时返回error

实例

127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "zhangsan"
127.0.0.1:6379[3]> lset list -1 laozhao
OK
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "laozhao"

3.15 llen

LLEN 命令用于返回列表的长度
如果key不存在返回0
如果key不是列表返回error

语法

llen key

返回值:

返回列表的长度

实例

127.0.0.1:6379[3]> llen list
(integer) 5

3.16 lrem

LREM 命令用于根据参数count的值,移除于value相等的元素
count > 0 移除与count个与value相等的元素
count=0 移除所有与value相等的元素

语法

lrem key count value

返回值:

被移除元素的数量

实例

127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "laozhao"
127.0.0.1:6379[3]> lrem list 1 lisi   //移除一个lisi
(integer) 1
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "laozhao"

接下文: Redis 基本命令大全 二.