Redis命令

本文总阅读量

Redis常用命令

Redis命令

1.数据类型命令

启动

1
2
$ sudo service redis-server start
$ redis-cli

存入与获取value

1
2
3
> set mykey somevalue        #存入   按kev-value形式

> get mykey #读取key对应的value

数据操作(加法器)

1
2
3
4
5
6
7
127.0.0.1:6379> set counter 100
OK
127.0.0.1:6379> incr counter # +1
(integer) 101
127.0.0.1:6379> incrby counter 50 # +50
(integer) 151
127.0.0.1:6379>

一次写入多个对应关系

1
2
3
4
5
6
7
127.0.0.1:6379> mset a 10 b 20 c 30
OK
127.0.0.1:6379> mget a b c
1) "10"
2) "20"
3) "30"
127.0.0.1:6379>

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素到头部, 而 RPUSH插入一个新元素到尾部.当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。相似的,如果一个列表操作清空一个列表那么对应的key将被从key空间删除。这是非常方便的语义,因为他们被调用使用一个空列表完全就像他们被调用时使用一个不存在的键值(可以)做为参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
127.0.0.1:6379> rpush mylist A    在列表mylist后面加A
(integer) 2
127.0.0.1:6379> rpush mylist B
(integer) 3
127.0.0.1:6379> lpush mylist first 在列表mylist前面加first
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1 显示列表mylist从第一个到最后一个的值
1) "first"
2) "b"
3) "A"
4) "B"
127.0.0.1:6379> rpush mylist 1 2 3 4 5 "foo bar"
(integer) 10
127.0.0.1:6379> lrange mylist 0 -1
1) "first"
2) "b"
3) "A"
4) "B"
5) "1"
6) "2"
7) "3"
8) "4"
9) "5"
10) "foo bar"

pop操作

1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> del mylist         #删除整个表
(integer) 1 #显示1为操作删除成功
127.0.0.1:6379> rpush mylist a b c
(integer) 3
127.0.0.1:6379> rpop mylist #删除表里面的最后一个
"c"
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
127.0.0.1:6379> lpop mylist #删除表里面的第一个
"a"
127.0.0.1:6379> lrange mylist 0 -1
1) "b"

Redis Hashes是字符串字段和字符串值之间的映射,因此他们是展现对象的完美数据类型。 (例如:一个有名,姓,年龄等等属性的用户):一个带有一些字段的hash仅仅需要一块很小的空间存储,因此你可以存储数以百万计的对象在一个小的Redis实例中。 哈希主要用来表现对象,他们有能力存储很多对象,因此你可以将哈希用于许多其他的任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> hmset user:1000 username antirez birthyear 1977 verified 1
OK
127.0.0.1:6379> hget user:1000 username
"antirez"
127.0.0.1:6379> hget user:1000 birthyear
"1977"
127.0.0.1:6379> hgetall user:1000 #GET全部
1) "username"
2) "antirez"
3) "birthyear"
4) "1977"
5) "verified"
6) "1"
127.0.0.1:6379> hincrby user:1000 birthyear 10 #给birthyear加10
(integer) 1987

无序集合
Redis 集合(Set)是一个无序的字符串集合. Redis 集合拥有令人满意的不允许包含相同成员的属性。多次添加相同的元素,最终在集合里只会有一个元素。 实际上说这些就是意味着在添加元素的时候无须检测元素是否存在。 一个Redis集合的非常有趣的事情是他支持一些服务端的命令从现有的集合出发去进行集合运算,因此你可以在非常短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> sadd myset 1 2 3            #生成一个无序集合
(integer) 3
127.0.0.1:6379> smembers myset
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sismember myset 3 #检查有没有这个无序集合,有且有这个值时返回1,没有返回0
(integer) 1
127.0.0.1:6379> sismember myset 30
(integer) 0
127.0.0.1:6379> sismember mys 3
(integer) 0

有序集合
Redis有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每一个成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。 使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。在有序集合中,你可以很快捷的访问一切你需要的东西:有序的元素,快速的存在性测试,快速访问集合的中间元素! 简而言之使用有序集合你可以做完成许多对性能有极端要求的任务,而那些任务使用其他类型的数据库真的是很难完成的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
127.0.0.1:6379> zadd hackers 1940 "Alan Kay"
(integer) 1
127.0.0.1:6379> zadd hackers 1957 "Sophie Wilson"
(integer) 1
127.0.0.1:6379> zadd hackers 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6379> zadd hackers 1949 "Anita Borg"
(integer) 1
127.0.0.1:6379> zadd hackers 1965 "Yukihiro Matsumoto"
(integer) 1
127.0.0.1:6379> zadd hackers 1914 "Hedy Lamarr"
(integer) 1
127.0.0.1:6379> zadd hackers 1916 "Claude Shannon"
(integer) 1
127.0.0.1:6379> zadd hackers 1969 "Linus Torvalds"
(integer) 1
127.0.0.1:6379> zadd hackers 1912 "Alan Turing"
(integer) 1
127.0.0.1:6379> zrange hackers 0 -1 #正序查找
1) "Alan Turing"
2) "Hedy Lamarr"
3) "Claude Shannon"
4) "Alan Kay"
5) "Anita Borg"
6) "Richard Stallman"
7) "Sophie Wilson"
8) "Yukihiro Matsumoto"
9) "Linus Torvalds"
127.0.0.1:6379> zrevrange hackers 0 -1 #反序查找
1) "Linus Torvalds"
2) "Yukihiro Matsumoto"
3) "Sophie Wilson"
4) "Richard Stallman"
5) "Anita Borg"
6) "Alan Kay"
7) "Claude Shannon"
8) "Hedy Lamarr"
9) "Alan Turing"
127.0.0.1:6379> zrange hackers 0 -1 withscores #正序查找且显示记录值
1) "Alan Turing"
2) "1912"
3) "Hedy Lamarr"
4) "1914"
5) "Claude Shannon"
6) "1916"
7) "Alan Kay"
8) "1940"
9) "Anita Borg"
10) "1949"
11) "Richard Stallman"
12) "1953"
13) "Sophie Wilson"
14) "1957"
15) "Yukihiro Matsumoto"
16) "1965"
17) "Linus Torvalds"
18) "1969"

2.Redis系统管理

EXISTS key 判断一个key是否存在;存在返回 1;否则返回0;
DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4。成功返回1,失败返回0(key值不存在)。

1
2
3
4
5
6
7
8
127.0.0.1:6379> set mykey hello
OK
127.0.0.1:6379> exists mykey
(integer) 1
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> exists mykey
(integer) 0

TYPE key:返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash),key不存在返回空。
KEYS key—pattern :返回匹配的key列表 (KEYS foo*:查找foo开头的keys)

1
2
3
4
5
6
7
8
127.0.0.1:6379> set mykey x
OK
127.0.0.1:6379> type mykey
string
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> type mykey
none

RANDOMKEY : 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串

1
2
3
4
127.0.0.1:6379> randomkey
"c"
127.0.0.1:6379> randomkey
"a"

RENAME oldname newname:改key的名字,新键如果存在将被覆盖
RENAMENX oldname newname:更改key的名字,如果newname存在,则更新失败;

1
2
3
4
5
6
127.0.0.1:6379> rename a aa       #把key为a改名为aa
OK
127.0.0.1:6379> exists a
(integer) 0
127.0.0.1:6379> exists aa
(integer) 1

EXPIRE:设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。

1
2
3
4
5
6
127.0.0.1:6379> expire key 10
(integer) 1
127.0.0.1:6379> get key
"some-value"
127.0.0.1:6379> get key #10s后执行
(nil)

TTL:查找某个key还有多长时间过期,返回时间秒

1
2
3
4
5
6
127.0.0.1:6379> set key 100 ex 30
OK
127.0.0.1:6379> ttl key
(integer) 23
127.0.0.1:6379> ttl key
(integer) 21

CLEAR :清除界面。
DBSIZE :返回当前数据库的key的总数
FLUSHDB:清空当前数据库中的所有键
FLUSHALL:清空所有数据库中的所有键

  • INFO命令可以查询Redis几乎所有的信息,其命令选项有如下:
    server: Redis server的常规信息
    clients: Client的连接选项
    memory: 存储占用相关信息
    persistence: RDB and AOF 相关信息
    stats: 常规统计
    replication: Master/slave请求信息
    cpu: CPU 占用信息统计
    cluster: Redis 集群信息
    keyspace: 数据库信息统计
    all: 返回所有信息
    default: 返回常规设置信息
    若命令参数为空,info命令返回所有信息。

3.高级应用

见这里

查看评论