现在的redis作为缓存中间件,使用已经非常普遍。
平时我们在管理redis时,有图形化的redisDesktopManager界面,但是这个界面上的功能不多,我们还是需要经常使用它的console,使用redis命令来进行控制。下面我们介绍下redis的一些常用命令。
本文的测试都是来自redis3.0 windows环境下的测试。
1.连接Connection
auth
D:\developtools\redis64-3.0.501>redis-cli.exe
127.0.0.1:6379>
输入redis-cli.exe后即可连接,但是此时并不一定有权限。
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
直接执行发现没有权限,此时需要使用auth命令输入配置的密码。
127.0.0.1:6379> auth abcabc
OK
127.0.0.1:6379> ping
PONG
在配置权限后,就正式连上了redis服务器
可以通过config set requirepass "" 设置密码
127.0.0.1:6379> config set requirepass ""
OK
echo
redis里面的echo与shell中的一样,都是打印出特定信息
127.0.0.1:6379> echo "hello world"
"hello world"
ping
可以使用ping命令,测试客户端是否连上了服务器,如果连上了会返回pong
上面其实已经使用过了
127.0.0.1:6379> ping
PONG
quit
当需要与服务器断开连接时,可以执行quit,执行后其实是返回ok,但此时因为已关闭,所以不会打印出ok
127.0.0.1:6379> quit
D:\developtools\redis64-3.0.501>
select
redisd的数据库有16个,0到15,默认使用0号数据库。
127.0.0.1:6379[1]> select 3
OK
127.0.0.1:6379[3]> get db_number
(nil)
2.字符串String
set
set key value [EX second] [PX milliiseconds]
EX second:设置键的过期时间位second秒
PX milliiseconds:设置键的过期时间为milliiseconds毫秒
设置key的值为value,如果key已经有值,set就会直接覆盖旧值,且忽略旧值的类型。
如果旧值有生存周期的话,在设置了新值之后,之前的生存周期将被清楚。
127.0.0.1:6379> set roo abc ex 100
OK
127.0.0.1:6379> get roo
"abc"
127.0.0.1:6379> ttl roo
(integer) 87
get
get key
返回key所关联的字符串的值,如果key不存在,会返回nil
127.0.0.1:6379[3]> get too
(nil)
127.0.0.1:6379[3]> set too 100
OK
127.0.0.1:6379[3]> get too
"100"
如果key的值不是字符串,会报错,因为get只能处理字符串。
127.0.0.1:6379> type 1list
list
127.0.0.1:6379> get list
(nil)
getset
getset key value
将给定key的值设置为value,并返回key的旧值
127.0.0.1:6379> getset hoo abc
(nil)
127.0.0.1:6379> getset hoo efg
"abc"
mget
mget key [key...] (多个key值)
127.0.0.1:6379> set a aaa
OK
127.0.0.1:6379> set b bbb
OK
127.0.0.1:6379> mget a b
1) "aaa"
2) "bbb"
127.0.0.1:6379> mget a b c
1) "aaa"
2) "bbb"
3) (nil)
strlen
strlen key
返回key所存储字符串的长度,当key不存在时,返回0
127.0.0.1:6379> set poo ggg
OK
127.0.0.1:6379> strlen poo
(integer) 3
append
append key value
如果key已经存在,并且是字符串,那么会将value值追加到key的末尾,如果key不存在,效果相当于set key value
127.0.0.1:6379[3]> key foo
(error) ERR unknown command 'key'
127.0.0.1:6379[3]> append foo abc
(integer) 3
127.0.0.1:6379[3]> get foo
"abc"
127.0.0.1:6379[3]> append foo def
(integer) 6
127.0.0.1:6379[3]> get foo
"abcdef"
decr/incr
decr key 将key中的值减一,如果key不存在,会被先初始化为0,再执行decr操作
127.0.0.1:6379[3]> decr goo
(integer) -1
incr key 将key中的值加一,如果key不存在,会被先初始化为0,再执行incr操作。下面的示例,接上面的decr
127.0.0.1:6379[3]> incr goo
(integer) 0
如果是对非数值型key进行incr和decr操作,会提示类型错误
127.0.0.1:6379[3]> set joo "abc"
OK
127.0.0.1:6379[3]> incr yoo
(error) ERR value is not an integer or out of range
也可以指定增长步数count(decr类似)
incr key count
127.0.0.1:6379[3]> set koo 300
OK
127.0.0.1:6379[3]> incrby koo 200
(integer) 500
3.键key
del
del key key[key ...]
删除给定的一个或多个key,不存在key直接被忽略
127.0.0.1:6379> del abc efg
(integer) 0
127.0.0.1:6379> del poo
(integer) 1
dump/restore
dump key
序列化指定的key
restore key ttl serialized-value
ttl是以毫秒为单位设置生存时间,如果ttl为0,表示不设置生存时间
127.0.0.1:6379> set test "hello world"
OK
127.0.0.1:6379> dump test
"\x00\x0bhello world\x06\x00\x9d\x11!9S\x92\x9c\xa7"
127.0.0.1:6379> restore real 0 "\x00\x0bhello world\x06\x00\x9d\x11!9S\x92\x9c\xa7"
OK
127.0.0.1:6379> get real
"hello world"
sort
sort key [desc]
127.0.0.1:6379> lpush num 1 3 5
(integer) 3
127.0.0.1:6379> lpush num 2 4 6
(integer) 6
127.0.0.1:6379> sort num
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sort num desc
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
ttl
ttl key
已秒为单位,返回剩余时间。
如果key不存在,返回-2
如果key存在,但是没有设置剩余时间,返回-1.否则返回剩余时间
127.0.0.1:6379> ttl go
(integer) 193
127.0.0.1:6379> ttl number
(integer) -1
127.0.0.1:6379> ttl aaa
(integer) -2
type
type key
返回key所存储值的类型
主要类型有:none(key不存在) , string(字符串) , list(列表) , set(集合) , zset(有序集合) , hash(哈希表)
127.0.0.1:6379> set ty "abc"
OK
127.0.0.1:6379> type ty
string
4.list列表
rpush
rpush key value [value...]
将一个或多个value值插入到列表key的表头
如果有多个value值,那个各个value值按从左到右的顺序依次插入的表头
127.0.0.1:6379> rpush firstlist a b c
(integer) 3
127.0.0.1:6379> lrange firstlist 0 -1
1) "a"
2) "b"
3) "c"
lpush
lpush key value [value...]
将一个或多个value值插入到列表key的表头
list可重复
127.0.0.1:6379> lpush mylist a
(integer) 1
127.0.0.1:6379> lpush mylist a
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "a"
lpush与rpush的区别就是一个在表头插入,一个在表尾插入
lrange
lrange key start stop
返回列表中指定区间内的元素,区间以偏移量start和stop指定。
下标start和stop都是以0开始,0表示第一个元素,1表示第二个元素。-1表示最后一个元素
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "a"
127.0.0.1:6379> lrange mylist 0 0
1) "a"
linsert
insert key before|after pivot value
可以指定在pivot前或后插入某值
127.0.0.1:6379> rpush 1list "a"
(integer) 1
127.0.0.1:6379> rpush 1list "b"
(integer) 2
127.0.0.1:6379> rpush 1list "c"
(integer) 3
127.0.0.1:6379> linsert 1list before "c" "d"
(integer) 4
127.0.0.1:6379> lrange 1list 0 -1
1) "a"
2) "b"
3) "d"
4) "c"
lpop
lpop key
移除并返回列表key的头元素
127.0.0.1:6379> lpop 1list
"a"
rpop
rpop key
移除并返回列表key的尾元素
127.0.0.1:6379> rpop 1list
"c"
lindex
lindex key index
返回列表key中,下标为index的元素
127.0.0.1:6379> lrange 1list 0 -1
1) "b"
2) "d"
127.0.0.1:6379> lindex 1list 0
"b"
127.0.0.1:6379> lindex 1list 1
"d"
127.0.0.1:6379> lindex 1list 2
(nil)
lset
lset key index value
将列表key下标为index的元素的值设置为value
127.0.0.1:6379> lset 1list 0 aaa
OK
llen
llen key
返回列表key的值
127.0.0.1:6379> llen 1list
(integer) 2
5.集合set
sadd
sadd key member [member...]
将一个或多个member元素加入到集合key当中,已经存在的值会被覆盖
如果key不是集合类型将会报错
127.0.0.1:6379> sadd myset "a" "b" "c"
(integer) 3
127.0.0.1:6379> smembers myset
1) "b"
2) "c"
3) "a"
smembers
smembers key
查看当前集合key中全部值
不存在的key被视为空集合
127.0.0.1:6379> smembers emptyset
(empty list or set)
spop
spop key
移除集合中的一个随机元素,并返回这个元素
127.0.0.1:6379> smembers s1
1) "b"
2) "c"
3) "a"
127.0.0.1:6379> spop s1
"b"
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
smove
smove source destination member
将member元素从source移动到destination
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
127.0.0.1:6379> smembers s2
(empty list or set)
127.0.0.1:6379> smove s1 s2 "c"
(integer) 1
127.0.0.1:6379> smembers s1
1) "a"
127.0.0.1:6379> smembers s2
1) "c"
scard
scard key
返回集合key中的元素个数
127.0.0.1:6379> scard myset
(integer) 3
sismember
sismember key member
判断member是否是key中的元素。如果是返回1,不是返回0
127.0.0.1:6379> smembers s1
1) "a"
127.0.0.1:6379> smembers s2
1) "c"
127.0.0.1:6379> sismember s1 c
(integer) 0
127.0.0.1:6379> sismember s2 c
(integer) 1
sunion
sunion key [key...]
返回多个集合的并集
127.0.0.1:6379> smembers s1
1) "a"
127.0.0.1:6379> smembers s2
1) "c"
127.0.0.1:6379> sunion s1 s2
1) "c"
2) "a"
sinter
sinter key [key...]
返回多个集合的交集
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
127.0.0.1:6379> smembers s2
1) "c"
127.0.0.1:6379> sinter s1 s2
1) "c"
sdiff
sdiff key [key...]
返回多个集合之间的差集
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
127.0.0.1:6379> smembers s2
1) "c"
127.0.0.1:6379> sdiff s1 s2
1) "a"
127.0.0.1:6379> sdiff s2 s1
(empty list or set)
6.哈希hash
hset
hset key field value
设置哈希key的键值对,键field的值为value
127.0.0.1:6379> hset myhash foo "hello world"
(integer) 1
hget
hget key field
取出哈希key中键为field的值
127.0.0.1:6379> hget myhash foo
"hello world"
hgetall
ghetall key
返回key中全部的
127.0.0.1:6379> hgetall myhash
1) "a"
2) "b"
3) "foo"
4) "hello world"
其中1是键,2是1的值;3是键,4是3的值。
hlen
hlen key
返回哈希key中键值对的个数
127.0.0.1:6379> hlen myhash
(integer) 2
hexists
hexists key field
判断哈希key中是否存在键为field的键值对
127.0.0.1:6379> hexists myhash "c"
(integer) 0
127.0.0.1:6379> hexists myhash "a"
(integer) 1
存在返回1,不存在返回0
hdel
hdel key field [field...]
删除哈希key中指定的field键,如果field不存在,则直接忽略。返回删除的个数
127.0.0.1:6379> hdel myhash "a"
(integer) 1
127.0.0.1:6379> hexists myhash "a"
(integer) 0
7.info命令
返回Redis 的服务器信息和各种统计数值
可参考:redis info命令详解