Redis笔记

字数 480 · 2018-04-27

#redis

简介

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

有序集合。

data-types-intro

命令

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。

工具

RedisDesktopManager

参考资料

https://redis.io/commands