redis安装
Docker快速安装
redis客户端使用redis-cli
添加到~/.bashrc
alias redis-cli='docker exec -it redis /usr/local/bin/redis-cli'
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# 设置一个 键值对
# EX seconds – 设置键key的过期时间,单位时秒
# PX milliseconds – 设置键key的过期时间,单位时毫秒
# NX – 只有键key不存在的时候才会设置key的值
# XX – 只有键key存在的时候才会设置key的值
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
# 由于SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,
# 所以在将来的版本中,redis可能会不推荐使用并且最终抛弃这几个命令。
# 获取一个键的值
GET key
# 设置多个值
MSET key value [key value ...]
# 获取多个值
MGET key [key ...]
# 删除一个或多个键
DEL key [key ...]
# 查询key是否存在
EXISTS key [key ...]
# 查询key的类型
TYPE key
# 时间复杂度 O(1)
# 给键设置超时时间 单位秒
# 对已有过期时间的可以执行此命令会更新它的过期时间
# 返回值 整型,1:成功设置过期时间、0:key不存在,或者不能设置过期时间
EXPIRE key seconds
# 获取一个key的剩余超时时间
TTL key
# 设置key为永久有效
PERSIST key
# 重命名一个key
# 不管newkey是否存在,key相关的超时时间会转移或覆盖新key
RENAME key newkey
# O(1)
# 对存储在指定key的数值执行原子的加1操作。
# 如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0。
INCR key
# 返回值:执行成功返回递增后的值
# 执行失败会返回一个错误例如:(error) ERR value is not an integer or out of range
# 原子增加 n,其他如INCR
INCRBY key increment
# 原子递减1
DECR key
# 原子减少n
DECRBY key decrement
# 自动将key对应到value并且返回原来key对应的value
# 如果key存在但是对应的value不是字符串,就返回错误。
GETSET key value
# 例子:重置的计数
INCR mycounter
GETSET mycounter "0"
GET mycounter
# 给key追加值
# 如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾
# 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,
# 这种情况 APPEND 将类似于 SET 操作。
APPEND key value
# 返回:返回append后字符串值(value)的长度
# 返回字符类型的长度
STRLEN key
# 返回key对应的字符串value的子串,支持负索引
GETRANGE key start end
# 覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度
# 小于2.0的Redis版本中叫 SUBSTR
SETRANGE key offset value
|
Redis lists命令
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
|
# 获取列表长度
LLEN key
# 通过索引获取列表中的元素
LINDEX key index
# 向list左边(头部)添加一个或多个元素
LPUSH key value [value ...]
# 向list右边(尾部)添加一个或多个元素
RPUSH key value [value ...]
# 返回列表长度
# 从list中取出一定范围的元素,支持负索引
LRANGE key start stop
# LRANGE key 0 -1 为取出全部元素
# 从list中删除元素并同时返回删除的值
LPOP key
RPOP key
# 没有元素时返回nil
# 把list从左边截取指定长度,其他的数据将被丢弃
LTRIM key start stop
# 阻塞式访问
BLPOP key [key ...] timeout
BRPOP key [key ...] timeout
# 移除key中前count次出现的值为value的元素
# count > 0: 从头往尾移除值为 value 的元素。
# count < 0: 从尾往头移除值为 value 的元素。
# count = 0: 移除所有值为 value 的元素。
LREM key count value
# 返回被移除的元素个数
# 从source的尾部弹出元素并把该元素放到destination列表的头部
# 这个命令也可以当作是一个旋转列表的命令
# 模式:安全的队列 保证消息不丢失
# 模式:循环列表 (源列表和目标列表相同)连续访问列表的元素
RPOPLPUSH source destination
# 返回被移除和放入的元素
# 阻塞的版本
BRPOPLPUSH source destination timeout
|
Redis Hashes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 设置hash
HMSET key field value [field value ...]
# 获取一个属性
HGET key field
# 获取一个key的所有属性
HGETALL key
# 查询所有的属性
HKEYS key
# 为单独的属性 原子增加
HINCRBY key field increment
# 删除一个或多个属性
HDEL key field [field ...]
|
Redis Sets
/
Redis Set 是 String 的无序排列
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
|
# 向集合中添加一个或多个元素
SADD key member [member ...]
# 查询里面的元素
SMEMBERS key
# 判断是否在集合中
SISMEMBER key member
# 随机弹出key的元素 coun决定弹出多少个元素
SPOP key [count]
# 返回集合key的基数(集合中元素的个数)
# cardinality是「基数」,是集合论中的术语
SCARD key
# 集合求并集
SUNION key [key ...]
# 对一个或多个key的集合求并集,存入到destination中
# 如果只有一个key,相当于复制 key到destination中。
SUNIONSTORE destination key [key ...]
# 集合求交集
SINTER key [key ...]
# 集合求交集并存入destination
SINTERSTORE destination key [key ...]
# 返回第一个集合 与其后面的集合的差集
SDIFF key [key ...]
SDIFFSTORE destination key [key ...]
|
Redis Sorted Sets
1
2
3
4
5
6
7
8
9
10
11
|
# score 权重(根据权重排序) member 成员
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
# 查询有序集合 如果加上参数 WITHSCORES 则连同 scores 一起返回
ZRANGE key start stop [WITHSCORES]
# 倒序查询
ZREVRANGE key start stop [WITHSCORES]
|