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
string1.2 pexpireat
PEXPIREAT 命令用于设置 key 的过期时间,已毫秒为单位。key 过期后将不再可用。语法:
pexpireat keyName 毫秒值返回值:
设置成功返回 1
key不存在或不能为key设置过期时间时返回 0实例:
pexpireat name 100000001.3 expireat
EXPIREAT 命令用于以时间戳的方式设置key的过期时间,过期后key不可用语法:
expireat keyName 时间戳返回值:
设置成功返回 1
key不存在或不能为key设置过期时间时返回 0实例:
expireat name 1293840000
(integer) 11.4 expire
EXPIRE 命令用于以秒的方式设置key的过期时间,过期后key不可用语法:
expireat keyName 秒值返回值:
设置成功返回 1
key不存在或不能为key设置过期时间时返回 0实例:
expireat name 60
(integer) 11.5 persist
PERSIST 命令用于移除指定key的过期时间,使key永不过期语法:
persist keyName返回值:
移除成功返回 1
key不存在或没有为key设置过期时间返回 0实例:
persist name
(integer) 11.6 ttl
TTL 命令用于返回以秒为单位的key的剩余过期时间语法:
ttl keyName返回值:
当key不存在时返回-2
当key存在但没有设置过期时间时返回-1
否则以秒为单位返回key的剩余过期时间实例:
ttl name
(integer) 591.7 pttl
PTTL 命令用于返回以毫秒为单位的key的剩余过期时间语法:
pttl keyName返回值:
当key不存在时返回-2
当key存在但没有设置过期时间时返回-1
否则以秒为单位返回key的剩余过期时间实例:
pttl name
(integer) 590001.8 rename
RENAME 命令用于修改key的名称语法:
rename keyName newKeyName返回值:
改名成功返回 1
改名失败返回一个错误
当keyName和newKeyName 相同时,或者keyName不存在时返回一个错误
当newKeyName存在时会覆盖旧值实例:
rename name username1.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) 11.12 exists
EXISTS 命令用于判断key是否存在语法:
exists keyName返回值:
key存在返回1
key不存在返回0实例:
exists name
(integer) 11.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
OK2.2 setex
SETEX 命令用于给指定的key设置过期时间(单位:秒)和值,如果key已经存在,则覆盖语法:
setex keyName 过期时间(秒) value返回值:
OK实例:
setex name 60 zhangsan
OK2.3 psetex
PSETEX 命令用于给指定的key设置过期时间(单位:毫秒)和值,如果key已经存在,则覆盖语法:
psetex keyName 过期时间(毫秒) value返回值:
OK实例:
psetex name 60000 zhangsan
OK2.4 setnx
SETNX(set if not exists) 命令用于当key不存在时,给指定的key设置值语法:
setnx keyName value返回值:
设置成功返回1
设置失败返回0实例:
setnx name zhangsan
(integer) 02.5 mset
MSET 命令用于同时设置一个或多个key - value 对语法:
msetnx key1 value1 key2 value2 ...返回值:
OK
实例:
mset name1 zhangsan name2 lisi
OK2.6 strlen
STRLEN 命令用于获取指定key的字符串的长度语法:
strlen keyName返回值:
返回字符串的长度
如果key不是字符串,返回一个error实例:
strlen name
(integer) 82.7 setrange
SETRANGE 命令用于使用指定的字符串替换原字符串,从原字符串的offset位置开始语法:
setrange key offset(起始位置) value返回值:
被修改后字符串的长度实例:
set name zhangsan
setrange name 0 "lisi"
(integer) 8 //这是name的值为lisigsan 所以长度为82.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) 12.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) 02.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) 23.2 lpushx
LPUSHX 命令用于将一个或多个值插入已存在的列表头部,如果key不存在则操作无效语法:
lpushx key value1 value2返回值:
返回执行lpushx命令后列表的长度实例:
lpushx namelist xiaoming wangmei
(integer) 43.3 rpush
RPUSH 命令用于将一个或多个值插入列表尾部(最右边),如果key不存在则创建一个空的列表并执行rpush命令语法:
rpush key value1 value2返回值:
返回执行rpush命令后列表的长度
如果key不是列表,则返回一个error实例:
rpush namelist wangwu wangermazi
(integer) 43.4 rpushx
RPUSHX 命令用于将一个或多个值插入已存在的列表尾部,如果key不存在则操作无效语法:
rpushx key value1 value2返回值:
返回执行rpushx命令后列表的长度实例:
rpushx namelist xiaoli xiaowang
(integer) 63.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不存在返回03.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) 53.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 基本命令大全 二.
















