Redis 常用命令

        现在的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命令详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值