redis使用指南

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]

你可能感兴趣的