简介
Redis是一个key-value存储系统。他的值可以是 String, Map, List, Set 等等。
Redis 支持持久化。
Redis 提供了多种数据类型。
Redis 支持 master-slave 模式的数据备份。
Redis 性能极高。
Redis 的所有操作都是原子操作。
Redis 多个操作也支持事务。
Redis还支持 pub/sub,通知,过期等特性。
数据类型
String
可以存储任意的String,比如HTML和图片,最大不能超过512M。
使用 SET
GET
来存取。
SET
命令有一些有趣的选项,比如Key已存在时设置失败,或是只有Key存在时才能设置成功。
1
2
set mykey newval nx
set mykey newval xx
对于 String 也可以使用一些有趣的命令,比如原子自增:
1
2
3
4
5
6
7
8
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
List
Redis中的List是用链表实现的。
使用 LPUSH
RPUSH
来在List的首尾添加数据。
使用 lrange mylist 0 -1
可以列出List中的所有元素。
使用 LPOP
RPOP
来 pop 数据。
阻塞型的POP BLPOP
BRPOP
,可以指定等待时间。
LPUSH
RPUSH
可以一次添加多条数据:
1
2
3
4
5
6
7
redis:6379> lpush l2 1 2 3 4
(integer) 4
redis:6379> lrange l2 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
Hash
可以使用 HSET
HGET
HDEL
HLEN
HMSET
HMGET
HEXISTS
HGETALL
HKEYS
等命令
Set
Redis Set 是 无序的String集合。
使用 SADD
添加数据,使用 SPOP
弹出数据,使用 SMEMBERS
获取集合中的全部数据。
Sorted Set
有序集合。
命令
KEYS
列出符合 pattern
的KEY。
KEYS <pattern>
INFO
获取 Redis 服务器的信息,如
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
# Server
redis_version:2.6.14
os:Linux 3.10.0-693.21.1.el7.x86_64 x86_64
arch_bits:64
gcc_version:4.8.5
process_id:13381
tcp_port:6379
uptime_in_seconds:678660
uptime_in_days:7
......
# Clients
connected_clients:1
......
# Memory
used_memory_human:1.99M
......
# Persistence
rdb_last_save_time:1525247858
......
# Stats
total_connections_received:560
total_commands_processed:163310
expired_keys:60
keyspace_hits:9020
keyspace_misses:323
......
# Replication
role:master
connected_slaves:0
# CPU
......
# Keyspace
db0:keys=35,expires=0
GETSET
GETSET key value
原子性的设置一个值,返回原有的值。
EXPIRE
EXPIRE key seconds
对Key设置一个过期时间,目前Redis只能对顶级的Key设置过期时间。
MSET & MGET
MSET key value [key value ...]
MSET是原子操作,不存在只更新了一般的情况。
MGET key [key ...]
key对应的值不存在或不是String,返回nil。
1
2
3
4
5
6
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
Key命名规范
可以选择以 :
分割,有些工具可以识别用 :
分割的Key并以此归类,如RedisDesktopManager。