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 基本命令大全 二.