关于reids的常用命令

Posted liujinqq7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于reids的常用命令相关的知识,希望对你有一定的参考价值。

1.redis是一个运行在内存的数据库,他有一个缺点:假如有一个正在编辑的wor文档,突然停电那么这个正在编辑的word文档是会丢失的;所以它诞生了save,bgsave这两个命令,save是保存在磁盘中是同步的(等他保

1 127.0.0.1:6379> save
2 OK
3 127.0.0.1:6379> bgsave
4 Background saving started

 

存完之后才可以输入其他的命令),bgsave是保存在磁盘中在后台保存的异步的

2.redis的运行,进入安装redis的bin目录,先运行服务端,再运行客户端,ping命令是用来测试连接

1 [root@localhost ~]# cd /opt/redis
2 [root@localhost redis]# ./bin/redis-server redis.conf 
3 [root@localhost redis]# ./bin/redis-cli
4 127.0.0.1:6379> ping
5 PONG

3.redis有五种类型string(相当于JDK中的String+Integer),list(相当于JDK中的linklist),set(相当于JDK中的hashset,无序,不重复),hash(类似JDK中的hashMap,一个大key对应好多的小key于value),zset(相当于JDK中的treeset,排序,有分值的概念)

4.redis默认使用0数据库,切换到指定数据库:select index,默认有16个库,下标从0-15

1 127.0.0.1:6379> select 3
2 OK
3 127.0.0.1:6379[3]> 

quit:请求服务器关闭与当前客户端的连接,客户端关闭,服务端没关 1 127.0.0.1:6379[3]> quit 2 [root@localhost redis]# 

client setname 名字:设置客户端连接的名称;client getname:获取客户端名称

1 127.0.0.1:6379> client setname 1710d
2 OK
3 127.0.0.1:6379> client getname
4 "1710d"

client list:返回所有连接到服务器的客户端信息和统计数据

1 127.0.0.1:6379> client list
2 id=4 addr=127.0.0.1:42926 fd=6 name=1710d age=133 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

config set 命令可以动态地调整 Redis 服务器的配置(confifiguration)而无须重启 1 127.0.0.1:6379> config set loglevel notice 2 OK 3 (修改配置) 

config get 命令用于取得运行中的 Redis 服务器的配置参数

1 127.0.0.1:6379> config get bind
2 1) "bind"
3 2) ""
4 (获得绑定ip的参数)

shutdown:关闭客户端与服务端 1 127.0.0.1:6379> shutdown 2 not connected> 

dbsize:返回数据库中所有key的数量;flushdb:清空当前数据库中的所有 key;flushall:清空整个 Redis 服务器的数据(删除所有数据库的所有 key );type key:查看key的类型;keys *: 匹配数据库中所有 key;

KEYS h?llo 匹配 hello , hallo 和 hxllo 等。

KEYS h*llo 匹配 hllo 和 heeeeello 等。

KEYS h[ae]llo匹配hellohallo,但不匹配hillo

1 127.0.0.1:6379> dbsize
2 (integer) 3
3 127.0.0.1:6379> keys *
4 1) "Name"
5 2) "age"
6 3) "name"
7 127.0.0.1:6379> type age
8 string

dump序列化给定 key ,并返回被序列化的值

1 127.0.0.1:6379> get name
2 "test"
3 127.0.0.1:6379> dump name
4 "x00x04testx06x00x17}xc7 x99xa4x8cxd6"

exists key:检查给定的key是否存在;del key[key……]:删除给定的一个或多个key

1 127.0.0.1:6379> exists name
2 (integer) 1
3 127.0.0.1:6379> del age
4 (integer) 1
5 127.0.0.1:6379> del name Name
6 (integer) 2

move key 1:将当前数据库的 key 移动到给定的数据库 db 当中

 1 127.0.0.1:6379> set name 1
 2 OK
 3 127.0.0.1:6379> move name 2
 4 (integer) 1
 5 127.0.0.1:6379> keys *
 6 (empty list or set)
 7 127.0.0.1:6379> select 2
 8 OK
 9 127.0.0.1:6379[2]> keys *
10 1) "name"

randomkey:从当前数据库中随机返回(不删除)一个 key 1 127.0.0.1:6379[2]> randomkey 2 "name" 

ttl:以秒为单位,返回给定 key 的剩余生存时间,返回值:当 key 不存在时,返回 -2,当 key 存在但没有设置剩余生存时间时,返回 -1,否则,以秒为单位,返回 key 的剩余生存时间

pttl:这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间

1 127.0.0.1:6379[2]> ttl name
2 (integer) -1
3 127.0.0.1:6379[2]> ttl k
4 (integer) -2
5 127.0.0.1:6379[2]> pttl name
6 (integer) -1

expire key 30:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除;pexpire key 10000: 这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间

 1 127.0.0.1:6379[2]> expire name 30
 2 (integer) 1
 3 127.0.0.1:6379[2]> ttl name
 4 (integer) 20
 5 127.0.0.1:6379[2]> pttl name
 6 (integer) 14152
 7 127.0.0.1:6379[2]> pexpire name 10000
 8 (integer) 1
 9 127.0.0.1:6379[2]> ttl name
10 (integer) 7
11 127.0.0.1:6379[2]> pttl name
12 (integer) 2738

persist key:移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』

 1 127.0.0.1:6379[2]> set k1 20
 2 OK
 3 127.0.0.1:6379[2]> ttl k1
 4 (integer) -1
 5 127.0.0.1:6379[2]> expire k1 20
 6 (integer) 1
 7 127.0.0.1:6379[2]> ttl k1
 8 (integer) 17
 9 127.0.0.1:6379[2]> persist k1
10 (integer) 1
11 127.0.0.1:6379[2]> ttl k1
12 (integer) -1

rename key namekey:将 key 改名为 namekey

1 127.0.0.1:6379[2]> rename k1 namekey
2 OK
3 127.0.0.1:6379[2]> keys *
4 1) "namekey"

5.string类型

set key value[EX 秒][PX 毫秒]:将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值,无视类型;EX与PX都是设置生存时间;

get key:返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil

append key value:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value;

decr key:将 key 中储存的数字值减一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作;(递减,只针对于数字)

decrby key 2:将 key 所储存的值减去减量 2 ,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作;(给定要减去的数值,只针对于数字)

incr key:将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作;(递增,只针对于数字)

incrby key 2:将 key 所储存的值加上增量 2 ,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令;(给定要增加的数值,只针对于数字)

mset key value[key value……]:同时设置一个或多个 key-value 对;

mget key[key……]:返回所有(一个或多个)给定 key 的值;

strlen key:返回 key 所储存的字符串值的长度;

setrange key 1 yyyy:yyyy参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 1 开始

 1 127.0.0.1:6379> set name 20
 2 OK
 3 127.0.0.1:6379> get name
 4 "20"
 5 127.0.0.1:6379> append name 2
 6 (integer) 3
 7 127.0.0.1:6379> get name
 8 "202"
 9 127.0.0.1:6379> get a
10 (nil)
11 127.0.0.1:6379> append a 2
12 (integer) 1
13 127.0.0.1:6379> get a
14 "2"
15 127.0.0.1:6379> decr a
16 (integer) 1
17 127.0.0.1:6379> get a
18 "1"
19 127.0.0.1:6379> get name
20 "202"
21 127.0.0.1:6379> decrby name 2
22 (integer) 200
23 127.0.0.1:6379> incr name
24 (integer) 201
25 127.0.0.1:6379> get name
26 "201"
27 127.0.0.1:6379> incrby name 2
28 (integer) 203
29 127.0.0.1:6379> mset 1 name 2 age
30 OK
31 127.0.0.1:6379> mget 1 2
32 1) "name"
33 2) "age"
34 127.0.0.1:6379> strlen name
35 (integer) 3
36 127.0.0.1:6379> setrange name 1 yyyy
37 (integer) 5
38 127.0.0.1:6379> get name
39 "2yyyy"

6.list类型

lpush key value[value……]:将一个或多个值 value 插入到列表 key 的表头,如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空队列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a;rpush从右向左推;

lrange key:返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定,下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示,列表的第二个元素,以此类推,你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推

1 127.0.0.1:6379> lpush 1710d a b c
2 (integer) 3
3 127.0.0.1:6379> lrange 1710d 0 -1
4 1) "c"
5 2) "b"
6 3) "a"

lindex key index:返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示

列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类

 1 127.0.0.1:6379> lrange 1710d 0 -1
 2 1) "c"
 3 2) "b"
 4 3) "a"
 5 127.0.0.1:6379> lindex 1710d -1
 6 "a"
 7 127.0.0.1:6379> lindex 1710d -2
 8 "b"
 9 127.0.0.1:6379> lindex 1710d 0
10 "c"
11 127.0.0.1:6379> lindex 1710d 2
12 "a"

llen key:返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。

 1 127.0.0.1:6379> llen 1710d
 2 (integer) 3
 3 127.0.0.1:6379> get key
 4 (nil)
 5 127.0.0.1:6379> llen key
 6 (integer) 0
 7 127.0.0.1:6379> type name
 8 string
 9 127.0.0.1:6379> llen name
10 (error) WRONGTYPE Operation against a key holding the wrong kind of value

lrem key count value:根据参数 count 的值,移除列表中与参数 value 相等的元素.count 的值可以是以下几种:count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count ;count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值;count = 0 : 移除表中所有与 value 相等的值;从表头删除 count >0;从表尾 删除 count <0;全部删除 count =0

 1 127.0.0.1:6379> lpush 1710d c c f b c a b c d f d b c a
 2 (integer) 14
 3 127.0.0.1:6379> lrange 1710d 0 -1
 4  1) "a"
 5  2) "c"
 6  3) "b"
 7  4) "d"
 8  5) "f"
 9  6) "d"
10  7) "c"
11  8) "b"
12  9) "a"
13 10) "c"
14 11) "b"
15 12) "f"
16 13) "c"
17 14) "c"
18 127.0.0.1:6379> lrem 1710d 0 a
19 (integer) 2
20 127.0.0.1:6379> lrange 1710d 0 -1
21  1) "c"
22  2) "b"
23  3) "d"
24  4) "f"
25  5) "d"
26  6) "c"
27  7) "b"
28  8) "c"
29  9) "b"
30 10) "f"
31 11) "c"
32 12) "c"
33 127.0.0.1:6379> lrem 1710d 2 d
34 (integer) 2
35 127.0.0.1:6379> lrange 1710d 0 -1
36  1) "c"
37  2) "b"
38  3) "f"
39  4) "c"
40  5) "b"
41  6) "c"
42  7) "b"
43  8) "f"
44  9) "c"
45 10) "c"
46 127.0.0.1:6379> lrem 1710d -2 b
47 (integer) 2
48 127.0.0.1:6379> lrange 1710d 0 -1
49 1) "c"
50 2) "b"
51 3) "f"
52 4) "c"
53 5) "c"
54 6) "f"
55 7) "c"
56 8) "c"

lpop key:移除并返回列表 key 的头元素

 1 127.0.0.1:6379> lrange 1710d 0 -1
 2 1) "c"
 3 2) "b"
 4 3) "f"
 5 4) "c"
 6 5) "c"
 7 6) "f"
 8 7) "c"
 9 8) "c"
10 127.0.0.1:6379> lpop 1710d
11 "c"
12 127.0.0.1:6379> lrange 1710d 0 -1
13 1) "b"
14 2) "f"
15 3) "c"
16 4) "c"
17 5) "f"
18 6) "c"
19 7) "c"

7.set类型

sadd key member[member……]:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合

1 127.0.0.1:6379> sadd myset chjx chjx test
2 (integer) 2
3 127.0.0.1:6379> sadd myset chjx a
4 (integer) 1

smembers key:返回集合 key 中的所有成员

1 127.0.0.1:6379> smembers myset
2 1) "test"
3 2) "a"
4 3) "chjx"

sdiff key key2:返回一个集合的全部成员,该集合是所有给定集合之间的差集。不存在的 key 被视为空集。(差集,前面集合中有,后面集合中没有的元素);

sinter key key2:返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律).(交集,两个集合共同拥有的元素);

sunion key key2:返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。(两个集合中的所有元素,并且去掉重复的);

 1 127.0.0.1:6379> sadd myset1 chjx lisi test zhangsan
 2 (integer) 4
 3 127.0.0.1:6379> sadd myset2 chjx qianqi wangwu zhaoliu
 4 (integer) 4
 5 127.0.0.1:6379> sdiff myset1 myset2
 6 1) "lisi"
 7 2) "test"
 8 3) "zhangsan"
 9 127.0.0.1:6379> sinter myset1 myset2
10 1) "chjx"
11 127.0.0.1:6379> sunion myset1 myset2
12 1) "qianqi"
13 2) "zhangsan"
14 3) "wangwu"
15 4) "test"
16 5) "lisi"
17 6) "chjx"
18 7) "zhaoliu"

8.hash类型

hset key field value:将哈希表 key 中的域 field 的值设为 value 。如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。如果域 field 已经存在于哈希表中,旧值将被覆盖(hmset:是设置多个键值对)

hget key field:取值(hmget:获取多个)

1 127.0.0.1:6379> hset myhash name lisi
2 (integer) 1
3 127.0.0.1:6379> hget myhash name
4 "lisi"

hkeys key:返回哈希表 key 中的所有域

1 127.0.0.1:6379> hset myhash name lisi
2 (integer) 1
3 127.0.0.1:6379> hset myhash age 18
4 (integer) 1
5 127.0.0.1:6379> hkeys myhash
6 1) "name"
7 2) "age"

hvals key:返回哈希表 key 中所有域的值

1 127.0.0.1:6379> hvals myhash
2 1) "lisi"
3 2) "18"

hgetall key:返回哈希表 key 中,所有的域和值

1 127.0.0.1:6379> hgetall myhash
2 1) "name"
3 2) "lisi"
4 3) "age"
5 4) "18"

hincrby key field increment :为哈希表 key 中的域 field 的值加上增量 increment

 1 127.0.0.1:6379> hgetall myhash
 2 1) "name"
 3 2) "lisi"
 4 3) "age"
 5 4) "18"
 6 127.0.0.1:6379> hincrby myhash age 2
 7 (integer) 20
 8 127.0.0.1:6379> hgetall myhash
 9 1) "name"
10 2) "lisi"
11 3) "age"
12 4) "20"

hlen key:返回哈希表 key 中域的数量 1 127.0.0.1:6379> hlen myhash 2 (integer) 2 

hexists key field :查看哈希表 key 中,给定域 field 是否存在;

hdel key field[field……]:查看哈希表 key 中,给定域 field 是否存在;

1 127.0.0.1:6379> hexists myhash age
2 (integer) 1
3 127.0.0.1:6379> hdel myhash age
4 (integer) 1
5 127.0.0.1:6379> hexists myhash age
6 (integer) 0

9.zset类型(zset中有一个分数score的概念,可以通过这个score来对分数对应的元素排序)

zadd key score member[score member……]:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个member 元素,来保证该 member 在正确的位置上。score 值可以是整数值或双精度浮点数。如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误;

zrange key start stop withscores:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序(withscores连分一起查看);

 1 127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu
 2 (integer) 3
 3 127.0.0.1:6379> zrange myzset 0 -1
 4 1) "lisi"
 5 2) "zhangsan"
 6 3) "wangwu"
 7 127.0.0.1:6379> zrange myzset 0 -1 withscores
 8 1) "lisi"
 9 2) "70"
10 3) "zhangsan"
11 4) "80"
12 5) "wangwu"
13 6) "90"

zcard key:返回有序集 key 的基数(有几条数据) 1 127.0.0.1:6379> zcard myzset 2 (integer) 3 

zcount key min max:返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的。(在区间内的元素个数) 1 127.0.0.1:6379> zcount myzset 70 80 2 (integer) 2 

zincrby key increment member :为有序集 key 的成员 member 的 score 值加上增量 increment 1 127.0.0.1:6379> zincrby myzset 2 lisi 2 "72" 

zrangebyscore key min max [withscores]:返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列(在区间内的元素)

1 127.0.0.1:6379> zrangebyscore myzset 70 80
2 1) "lisi"
3 2) "zhangsan"
4 127.0.0.1:6379> zrangebyscore myzset 70 80 withscores
5 1) "lisi"
6 2) "72"
7 3) "zhangsan"
8 4) "80

zrank key member:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 1 127.0.0.1:6379> zrank myzset lisi 2 (integer) 0 

zrem key member[member……]:移除有序集 key 中的一个或多个成员,不存在的成员将被忽略(可以移除多个)

1 127.0.0.1:6379> zrem myzset lisi
2 (integer) 1
3 127.0.0.1:6379> zrem myzset wangwu zhangsan
4 (integer) 2

zremrangebyrank key start stop:移除有序集 key 中,指定排名(rank)区间内的所有成员

1 127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu
2 (integer) 3
3 127.0.0.1:6379> zremrangebyrank myzset 0 1
4 (integer) 2
5 127.0.0.1:6379> zrange myzset 0 -1
6 1) "wangwu"

zremrangebyscore key min max:移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员

1 127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu
2 (integer) 2
3 127.0.0.1:6379> zremrangebyscore myzset 70 80
4 (integer) 2

zrevrange key start stop [withscores]:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列(从大到小排名输出;rev:reverse反转的缩写)

 1 127.0.0.1:6379> zrevrange myzset 0 -1
 2 1) "wangwu"
 3 2) "zhangsan"
 4 3) "lisi"
 5 127.0.0.1:6379> zrevrange myzset 0 -1 withscores
 6 1) "wangwu"
 7 2) "90"
 8 3) "zhangsan"
 9 4) "80"
10 5) "lisi"
11 6) "70"

zrevrangebyscore key max min [withscores]:返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列

 1 127.0.0.1:6379> zrevrangebyscore myzset 90 70
 2 1) "wangwu"
 3 2) "zhangsan"
 4 3) "lisi"
 5 127.0.0.1:6379> zrevrangebyscore myzset 90 70 withscores
 6 1) "wangwu"
 7 2) "90"
 8 3) "zhangsan"
 9 4) "80"
10 5) "lisi"
11 6) "70"

zrevrank key member:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序.(从大到小排序的排名)

1 127.0.0.1:6379> zrevrangebyscore myzset 90 70 withscores
2 1) "wangwu"
3 2) "90"
4 3) "zhangsan"
5 4) "80"
6 5) "lisi"
7 6) "70"
8 127.0.0.1:6379> zrevrank myzset lisi
9 (integer) 2

zscore key member:返回有序集 key 中,成员 member 的 score 值 1 127.0.0.1:6379> zscore myzset lisi 2 "70" 

以上是关于关于reids的常用命令的主要内容,如果未能解决你的问题,请参考以下文章

Reids入门基本命令,学习使我快乐02,关于reidis 的一些操作命令(五大基本数据类型)

Reids入门基本命令,学习使我快乐02,关于reidis 的一些操作命令(五大基本数据类型)

关于js----------------分享前端开发常用代码片段

Reids入门基本命令,学习使我快乐03,关于reidis 的一些操作命令(三种特殊数据类型)

Reids入门基本命令,学习使我快乐03,关于reidis 的一些操作命令(三种特殊数据类型)

Reids入门基本命令,学习使我快乐03,关于reidis 的一些操作命令(三种特殊数据类型)