Redis、( 一 )

优点

  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 支持数据的备份,即master-slave模式的数据备份。
  • 性能极高 。
  • 丰富的数据类型 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • 原子性。
  • 丰富的特性。

安装

  1. 安装Redis
  2. 可执行文件 安装目录/bin
    • redis-benchmark —-性能测试工具
    • redis-check-aof —-AOF文件修复工具
    • redis-check-dump —-RDB文件检查工具(快照持久化文件)
    • redis-cli —-命令行客户端
    • redis-server —-redis服务器启动命令

启动

  1. 进入安装目录 src

    • 执行 /redis-server
    • 执行 ./redis-server ../redis.conf,指定配置文件启动
  2. 设置软连接,全局使用

    • 执行 ln -s 安装目录/src/redis-server /usr/bin/redis-server

100%宽度

数据类型

基本类型

  • String
    Redis 字符串是字节序列。Redis 字符串是二进制安全的,512 M为上限。
  • Hash
    Redis 的哈希是键值对的集合。
    Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象,还有用户信息之类的,经常变动的信息。
    Hash更适合用于对象的存储,String更适合字符串存储。
  • List
    Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的头部或尾部
  • Set
    Redis 的集合是字符串的无序集合。
    在Set集合当中,是不允许有重复的。
  • Zset
    Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。

特殊类型

  • Geospatial 地理位置
  • Hyperloglog 基数统计
  • Bitmap 位图场景

常用命令

连接命令

AUTH < username > < password >
通过验证用户名密码的方式验证访问权限

PING

QUIT

SELECT index
用于切换到指定的数据库,index 是从 0 开始的整数。默认使用数据库 0 。

Key 命令

DEL KEY [KEY…]
用于删除给定的一个或多个 key。 不存在的 key 会被忽略。

UNLINK key [key …]
用于删除指定的 key 。就像 DEL 一样,如果 key 不存在,则将其忽略。

EXISTS KEY [KEY…]
用于检查给定 key 是否存在。
注意:检查单个 key 返回 1 或 0 。如果相同的 key 在参数列表中出现了多次,如果somekey存在, EXISTS somekey somekey 命令返回 2。

EXPIRE key seconds
Expire 命令设置 key 的过期时间(seconds)。 设置的时间过期后,key 会被自动删除。
1 设置超时成功。
0 key 不存在。

EXPIREAT key 1293840000
EXPIREAT 与 EXPIRE 有相同的作用和语义, 不同的是 EXPIREAT 使用 时间戳 代替表示过期时间的秒数。使用过去的时间戳将会立即删除该 key
1 设置超时成功。
0 key 不存在。

KEYS pattern
用于查找所有匹配给定模式 pattern 的 key。
h?llo 匹配 hello, hallo 和 hxllo
h*llo 匹配 hllo 和 heeeello
h[ae]llo 匹配 hello and hallo, 不匹配 hillo
h[^e]llo 匹配 hallo, hbllo, … 不匹配 hello
h[a-b]llo 匹配 hallo 和 hbllo

MOVE key db
用于将当前数据库的 key 移动到选定的数据库 db 当中。
如果 key 在目标数据库中已存在,或者 key 在源数据库中不存,则key 不会被移动。
1 如果 key 被移动。
0 如果 key 没有被移动。

PERSIST key
用于删除给定 key 的过期时间,使得 key 永不过期。
1 当过期时间移除成功时
0 如果 key 不存在或 key 没有设置过期时间

PEXPIRE key milliseconds
PEXPIRE 跟 EXPIRE 基本一样,只是过期时间单位是毫秒。
1 过期设置成功。
0 key 不存在或设置失败。

PTTL key
以毫秒为单位返回 key 的剩余过期时间。
key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。

TTL key
以秒为单位返回 key 的剩余过期时间。
key 不存在返回 -2
key 存在但是没有关联超时时间返回 -1

RANDOMKEY
从当前数据库中随机返回一个 key
数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil

RENAME key newkey
用于修改 key 的名字为 newkey 。若key 不存在返回错误。

RENAMENX key newkey
用于在新的 newkey 不存在时修改 key 的名称 。若 key 不存在返回错误。

TYPE key
以字符串的形式返回存储在 key 中的值的类型:string, list, set, zset,hashstream

String 命令

SET key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX] [GET]
EX seconds – 设置键key的过期时间,单位时秒
PX milliseconds – 设置键key的过期时间,单位时毫秒
NX – 只有键key不存在的时候才会设置key的值
XX – 只有键key存在的时候才会设置key的值
KEEPTTL – 获取 key 的过期时间
GET – 返回 key 存储的值,如果 key 不存在返回空

GET key
用于获取指定 key 的值。

GETRANGE key start end
返回存储在 key 中的字符串的子串,由 startend 偏移决定。
0 表示第一个字符, 以此类推。
-1 表示最后一个字符,-2 表示倒数第二个字符,以此类推。

GETSET key value
将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。 当键 key 存在但不是字符串类型时, 命令返回一个错误。

MGET key [key …]
返回所有(一个或多个)给定 key 的值,值的类型是字符串。 如果给定的 key 里面,有某个 key 不存在或者值不是字符串,那么这个 key 返回特殊值 nil 。

STRLEN key
获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串类型时,返回错误。

MSET key value [key value …]
设置多个 key 的值为各自对应的 value。

MSETNX key value [key value …]
当且仅当所有给定键都不存在时, 为所有给定键设置值。 即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
1 当所有给定键都设置成功时
0 某个给定键已经存在而导致设置未能成功

INCR key
key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误 ERR ERR hash value is not an integer。 本操作的值限制在 64 位(bit)有符号数字表示之内。

INCRBY key increment
将 key 中储存的数字加上指定的增量值。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误 ERR ERR hash value is not an integer。 本操作的值限制在 64 位(bit)有符号数字表示之内。

INCRBYFLOAT key increment
为键 key 中储存的值加上浮点数增量 incrementkey 中的浮点数是以字符串形式存储的。 如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。
它们总是由一个数字, 一个(可选的)小数点和一个任意长度的小数部分组成, 小数部分尾随的 0 会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 3.0 会被保存成 3 )。无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 命令的计算结果最多只保留小数点的后十七位。

DECR key
key 储存的数字值减去一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。

DECRBY key decrement
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。

APPEND key value
用于为指定的 key 追加值。
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

Hash 命令

HDEL key field [field …]
用于删除哈希表 key 中的一个或多个指定field,不存在的field将被忽略。

HEXISTS key field
用于查看哈希表的指定 field 是否存在。

HGET key field
用于返回哈希表中指定 field 的值。

HGETALL key
用于返回存储在 key 中的哈希表中所有的 fieldvalue

HINCRBY key field increment
为哈希表 key 中的 field 的值加上增量 increment 。 增量也可以为负数,相当于对给定field进行减法操作。

HINCRBYFLOAT key field increment
为哈希表 key 中的 field 加上浮点数增量 increment

HKEYS key
返回存储在 key 中哈希表的所有field

HLEN key
用于获取哈希表中field的数量。

HMGET key field [field …]
用于返回哈希表中,一个或多个给定field的值。

HMSET key field value [field value …]
用于同时将多个 field-value (字段-值)对设置到哈希表中。

HSCAN key cursor [MATCH pattern] [COUNT count]
用于遍历哈希表中的键值对。
cursor - 游标。HSCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 HSCAN 命令的游标参数, 以此来延续之前的迭代过程。 当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束
pattern - 匹配的模式。
count - 指定从数据集里返回多少元素,默认值为 10 。

HSET key field value [field value …]
用于为存储在 key 中的 field 字段赋值 value

HSETNX key field value
用于为哈希表中不存在的field赋值 。
1 field 设置成功。
0 field 已存在,设置失败。

HSTRLEN key field
返回存储在 key 中的, 与给 field 相关联的值的字符串长度。

HVALS key
返回哈希表所有field的值。

List 命令

BLPOP key [key …] timeout
移出并获取列表的第一个元素。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
timeout 参数表示的是一个指定阻塞的最大秒数的整型值。当 timeout 为 0 是表示永久阻塞。

BRPOP key [key …] timeout
移出并获取列表的最后一个元素

BRPOPLPUSH source destination timeout
从列表中弹出一个值,并将该值插入到另外一个列表中并返回它
source
destination
timeout - 以秒为单位的数字作为值

LINDEX key index
通过索引获取列表中的元素
index 下标是从 0 开始索引的,-1 表示最后一个元素。

LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
pivot - 参考值

LLEN key
获取列表长度

LPOP key
移出并获取列表的第一个元素

LPUSH key value [value …]
将一个或多个值插入到列表头部

LPUSHX key value [value …]
将一个值插入到已存在的列表头部

LRANGE key start stop
获取列表指定范围内的元素

LREM key count value
删除前 count 个值等于 value 的元素。
count > 0: 从头到尾删除值为 value 的元素。
count < 0: 从尾到头删除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。

LSET key index value
通过索引设置列表元素的值

LTRIM key start stop
对一个列表进行修剪(trim),保留范围内的元素。

RPOP key
移除并获取列表最后一个元素

RPOPLPUSH source destination
移除列表的最后一个元素,并将该元素添加到另一个列表并返回

RPUSH key value [value …]
在列表中添加一个或多个值

RPUSHX key value [value …]
为已存在的列表添加值

Set 命令

SADD key value [value …]
向集合添加一个或多个成员

SCARD key
获取集合的成员数

SDIFF key [key …]
返回给定所有集合的差集

SDIFFSTORE destination key [key …]
返回给定所有集合的差集并存储在 destination 中

SINTER key [key …]
返回给定所有集合的交集

SINTERSTORE destination key [key …]
返回给定所有集合的交集并存储在 destination 中

SISMEMBER key value
判断 value 元素是否是集合 key 的成员

SMEMBERS key
返回集合中的所有成员

SMOVE source destination value
将 value 元素从 source 集合移动到 destination 集合

SPOP key [count]
移除并返回集合中的一个随机元素
使用count参数,count大于集合内部的元素总数,此命令将会返回整个集合

SRANDMEMBER key [count]
返回集合中一个或多个随机元素
使用count参数,则返回一个随机的元素数组,如果key不存在则返回一个空的数组。

SREM key value [value …]
移除集合中一个或多个成员

SUNION key [key …]
返回所有给定集合的并集

SUNIONSTORE destination key [key …]
所有给定集合的并集存储在 destination 集合中

SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
cursor - 游标。
pattern - 匹配的模式。
count - 指定从数据集里返回多少元素,默认值为 10 。

Zset 命令

ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
用于将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
score: 值可以是整数值或双精度浮点数,score 可为正也可以为负。
XX: 仅更新存在的成员,不添加新成员。
NX: 不更新存在的成员。只添加新成员。
LT: 更新新的分值比当前分值小的成员,不存在则新增。
GT: 更新新的分值比当前分值大的成员,不存在则新增。
CH: 返回变更成员的数量。变更的成员是指 新增成员 和 score值更新的成员,命令指明的和之前score值相同的成员不计在内。 注意: 在通常情况下,ZADD返回值只计算新添加成员的数量。
INCR: ZADD 使用该参数与 ZINCRBY 功能一样。一次只能操作一个score-element对。
注意: GT, LT 和 NX 三者互斥不能同时使用。

ZCARD key
获取有序集合的成员数

ZCOUNT key min max
计算在有序集合中指定区间分数的成员数
score 值在 minmax 之间(默认包括 score 值等于 min 或 max )的成员的数量。

ZINCRBY key increment member
为有序集 key 的成员 member 的 score 值加上增量 increment

ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]
计算 numkeys 个有序集合的交集,并且把结果放到 destination 中。 在给定要计算的 key 和其它参数之前,必须先给定 key 个数(numberkeys)。
默认情况下,结果集中元素的score是各有序集合中该元素score之和。
WEIGHTS: 你可以为每个给定的有序集指定一个乘法因子,意思就是,每个给定有序集的所有成员的score值在传递给聚合函数之前都要先乘以该因子。如果WEIGHTS没有给定,默认是 1。
AGGREGATE:你可以指定并集的结果集的聚合方式。默认使用的参数SUM,可以将所有集合中某个成员的score值之和作为结果集中该成员的score值。如果使用参数MIN或者MAX,结果集就是所有集合中该元素最小或最大score。

ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量

ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员。
0 表示有序集第一个成员,1 表示第二个成员
-1 表示最后一个成员,-2 表示倒数第二个成员

ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员
LIMIT:参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count )

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
通过分数返回有序集合指定区间内的成员
LIMIT:参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count )

ZRANK key member
返回有序集合中指定成员的索引

ZREM key member [member …]
移除有序集合中的一个或多个成员

ZREMRANGEBYLEX key min max
移除有序集合中给定的区间的所有成员

ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员

ZREMRANGEBYSCORE key min max
移除有序集合中给定的区间的所有成员

ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,score从高到底

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
返回有序集中指定分数区间内的成员,score从小到大排序

ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按score值递减(从大到小)排序

ZSCORE key member
返回有序集中,成员的score

ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]
计算一个或多个有序集的并集,并存储在新的 key 中

ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素score

HyperLogLog 命令

PFMERGE destkey sourcekey [sourcekey …]
将多个 HyperLogLog 合并为一个 HyperLogLog

PFADD key element [element …]
添加指定元素到 HyperLogLog 中。

PFCOUNT key [key …]
返回给定 HyperLogLog 的基数估算值。

地理位置(geo) 命令

GEOHASH key member [member …]
返回一个或多个位置元素的 Geohash 表示

GEOPOS key member [member …]
从key里返回所有给定位置元素的位置(经度和纬度)

GEODIST key member1 member2 [m|km|ft|mi]
m :米,默认单位。
km :千米。
mi :英里。
ft :英尺。
返回两个给定位置之间的距离

GEORADIUS key longitude latitude radius [m|km|ft|mi] [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
以给定的经纬度为中心, 找出某一半径内的元素
longitude :经度
latitude :纬度
radius:半径
WITHCOORD:将位置元素的经度和维度也一并返回。
WITHDIST:在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
COUNT:获取前 N 个匹配元素。
ASC : 根据中心的位置, 按照从近到远的方式返回位置元素。
DESC : 根据中心的位置, 按照从远到近的方式返回位置元素。
STORE
STOREDIST

GEOADD key longitude latitude member [longitude latitude member …]
将指定的地理空间位置(纬度、经度、名称)添加到指定的key中
有效的经度介于 -180 度至 180 度之间。
有效的纬度介于 -85.05112878 度至 85.05112878 度之间。

GEORADIUSBYMEMBER key member radius [m|km|ft|mi] [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
找出位于指定范围内的元素,中心点是由给定的位置元素决定

服务相关命令

BGREWRITEAOF
异步执行一个 AOF(AppendOnly File) 文件重写操作

BGSAVE
在后台异步保存当前数据库的数据到磁盘

CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [SKIPME yes/no]
关闭客户端连接
ip:port 应该和 CLIENT LIST 命令返回的结果中 addr 列其中一行匹配。
CLIENT KILL ADDR ip:port 和旧版的三个参数时的行为完全一样。
CLIENT KILL ID client-id 可以通过唯一ID字段杀死一个客户端,唯一ID可以通过Redis2.8.12的CLIENT LIST命令查询。
CLIENT KILL TYPE type 这里的 type 可以是 normal, slave, pubsub。 这将关闭给定烈性的所有客户端。请注意MONITOR命令阻塞的客户端是 normal 类型。
CLIENT KILL USER username 关闭使用 ACL username 连接的客户端。如果不存在 ACL user 则返回错误。
CLIENT KILL SKIPME yes/no 默认情况下是 yes, 调用该命令的客户端自身不被删掉,如果为 no 也会删除自身。

CLIENT LIST
获取连接到服务器的客户端连接列表
返回值:每个已连接客户端对应一行
    id: 唯一的64位的客户端ID(Redis 2.8.12加入)
    name: the name set by the client with CLIENT SETNAME
    addr: 客户端的地址和端口
    fd: 套接字所使用的文件描述符
    age: 以秒计算的已连接时长
    idle: 以秒计算的空闲时长
    flags: 客户端 flag (see below)
    db:该客户端正在使用的数据库 ID
    sub: 已订阅频道的数量
    psub: 已订阅模式的数量
    multi: 在事务中被执行的命令数量
    qbuf: 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
    qbuf-free: 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
    obl: 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
    oll: 输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
    omem: 输出缓冲区占用的内存总量
    events: 文件描述符事件 (see below)
    cmd: 最近一次执行的命令
    argv-mem: incomplete arguments for the next command (already extracted from query buffer)
    tot-mem: 客户端所有缓存占用的内存量

CLIENT GETNAME
获取连接的名称

CLIENT PAUSE timeout
在指定时间内终止运行来自客户端的命令

CLIENT SETNAME connection-name
设置当前连接的名称

CLUSTER SLOTS
获取集群节点的映射数组

COMMAND
获取 Redis 命令详情数组

COMMAND COUNT
获取 Redis 命令总数

COMMAND GETKEYS
获取给定命令的所有键

TIME
返回当前服务器时间

COMMAND INFO command-name [command-name …]
获取指定 Redis 命令描述的数组

CONFIG GET parameter
获取指定配置参数的值

CONFIG REWRITE
修改 redis.conf 配置文件

CONFIG SET parameter value
修改 redis 配置参数,无需重启

CONFIG RESETSTAT
重置 INFO 命令中的某些统计数据

DBSIZE
返回当前数据库的 key 的数量

DEBUG OBJECT key
获取 key 的调试信息

DEBUG SEGFAULT
让 Redis 服务崩溃,仅在开发时用于模拟 BUG 。

FLUSHALL [ASYNC]
删除所有数据库的所有 key

FLUSHDB [ASYNC]
删除当前数据库的所有 key

INFO [section]
获取 Redis 服务器的各种信息和统计数值
section:
    server: 查看 Redis 服务器信息,如 Redis 的版本
    clients: 客户端的连接部分
    memory: 内存消耗相关信息
     persistence: RDB和AOF相关信息
    stats: 一般统计
    replication: 主/从复制信息
     cpu: 统计CPU的消耗
    commandstats: Redis命令统计
     cluster: Redis集群信息
     keyspace: 数据库的相关统计
     modules: Module 相关信息

LASTSAVE
返回最近一次 Redis 成功将数据保存到磁盘上的时间

MONITOR
实时打印出 Redis 服务器接收到的命令,调试用

ROLE
返回主从实例所属的角色

SAVE
异步保存数据到硬盘

SHUTDOWN [NOSAVE|SAVE]
异步保存数据到硬盘,并关闭服务器
SAVE 能够在即使没有配置持久化的情况下强制数据库存储。
NOSAVE 能够在配置一个或者多个持久化策略的情况下阻止数据库存储.
如下操作:
     停止所有客户端
     如果配置了save 策略 则执行一个阻塞的save命令
     如果开启了AOF,则刷新aof文件
     关闭redis服务进程(redis-server)

SLAVEOF host port
将当前服务器转变从属服务器(slave server)
REPLICAOF host port
在线修改当前服务器的复制设置。

SLOWLOG subcommand [argument]
管理 redis 的慢日志

SYNC
用于复制功能 ( replication ) 的内部命令
PSYNC replicationid offset
{replicationid} 为master的运行id;
{offset}为slave自己的复制偏移量

发布订阅命令

PSUBSCRIBE pattern [pattern …]
订阅一个或多个符合给定模式的频道。

PUBSUB subcommand [argument [argument …]]
查看订阅与发布系统状态。

PUBSUB CHANNELS [pattern]
列出当前的活跃频道。

PUBSUB NUMSUB [channel-1 … channel-N]
返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。

PUBSUB NUMPAT
返回订阅模式的数量。
注意, 这个命令返回的不是订阅模式的客户端的数量, 而是客户端订阅的所有模式的数量总和。

PUBLISH channel message
将信息发送到指定的频道。

PUNSUBSCRIBE [pattern [pattern …]]
退订所有给定模式的频道。

SUBSCRIBE channel [channel …]
订阅给定的一个或多个频道的信息。

UNSUBSCRIBE [channel [channel …]]
指退订给定的频道。

事务命令

DISCARD
取消事务,放弃执行事务块内的所有命令

EXEC
执行所有事务块内的命令

MULTI
标记一个事务块的开始

UNWATCH
取消 WATCH 命令对所有 key 的监视

WATCH
可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。 监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)

脚本 命令

SCRIPT KILL
杀死当前正在运行的 Lua 脚本。

SCRIPT LOAD script
将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

EVAL script numkeys key [key …] arg [arg …]
执行 Lua 脚本。
script: 参数是一段 Lua 5.1 脚本程序,在 redis 服务器上下文执行。脚本不必(也不应该)定义为一个 Lua 函数。
numkeys: 用于指定键名参数的个数。
key [key …]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
arg [arg …]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

EVALSHA sha1 numkeys key [key …] arg [arg …]
执行 Lua 脚本。
sha1 : 通过 SCRIPT LOAD 生成的 sha1 校验码。
numkeys: 用于指定键名参数的个数。
key [key …]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
arg [arg …]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

SCRIPT EXISTS sha1 [sha1 …]
查看指定的脚本是否已经被保存在缓存当中。

SCRIPT FLUSH
从脚本缓存中移除所有脚本。

配置文件

参数描述
daemonizeRedis 默认不是以守护进程的方式运行 daemonize no,可以通过该配置项修改,使用 yes 启用守护进程
pidfile当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定 pidfile /var/run/redis.pid
port默认端口为 6379
bind监听的主机地址 bind 127.0.0.1
timeouttimeout 300 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
loglevel指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 verbose
logfile日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
databases设置数据库的数量,默认数据库为 0,可以使用 SELECT命令在连接上指定数据库 id
savesave指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合, Redis 默认配置文件中提供了三个条件:save 900 1、save 300 10、save 60 10000 ,分别表示 90 0 秒(15 分钟)内有 1 个更改,300 秒(5 分钟)内有 10 个更改以及 60 秒内有 10000 个更改。
rdbcompressionrdbcompression yes 10.指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大
stop-writes-on-bgsave-error设置为 yes 时,表示当备份进程出错时,主进程就会停止接收写入操作,从而保证了持久化数据的一致性
dbfilename指定本地数据库文件名,默认值为 dump.rdb
dir指定本地数据库存放目录
slaveofslaveof设置当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动从 master 进行数据同步
masterauthmasterauthmaster 服务设置了密码保护时,slave 服务连接 master 的密码
requirepass设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH命令提供密码,默认关闭
maxclientsmaxclients 128 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxmemorymaxmemory指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区
maxmemory-policyvolatile-lru, allkeys-lru, volatile-lfu, allkeys-lfu, volatile-random, allkeys-random, volatile-ttl, noeviction(默认)
maxmemory-samples默认 5,Redis 的 LRU 是取出配置的数目的key,然后从中选择一个最近最不经常使用的 key 进行置换
appendonlyappendonly no 指定是否在每次更新操作后进行日志记录,Redis 在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为 no
appendfilename指定更新日志文件名,默认为 appendonly.aof
appendfsync指定更新日志条件,共有 3 个可选值:no:表示等操作系统进行数据缓存同步到磁盘(快); always:表示每次更新操作后手动调用 fsync() 将数据写到磁盘(慢,安全); everysec:表示每秒同步一次(折衷,默认值)
no-appendfsync-on-rewrite选项处于打开状态时,在执行BGSAVE命令或者BGREWRITEAOF命令期间,服务器会暂时停止对AOF文件的同步,从而尽可能地减少I/O阻塞。默认 no
auto-aof-rewrite-percentage触发重写百分比 (指定百分比为0,将禁用aof自动重写功能)
auto-aof-rewrite-min-size触发自动重写的最低文件体积(小于64mb不自动重写)
aof-load-truncatedyes :末尾被截断的 AOF 文件将会被加载,并打印日志通知用户。no :服务器将报错并拒绝启动。
aof-use-rdb-preamble开启混合持久化,更快的AOF重写和启动时数据恢复。 当开启该选项时,触发AOF重写将不再是根据当前内容生成写命令。而是先生成RDB文件写到开头,再将RDB生成期间的发生的增量写命令附加到文件末尾。重写完成后,继续像普通AOF一样追加内容。
vm-enabled指定是否启用虚拟内存机制,默认值为 no,简单的介绍一下,VM 机制将数据分页存放,由 Redis 将访问量较少的页即冷数据 swap 到磁盘上,访问多的页面由磁盘自动换出到内存中
vm-swap-file虚拟内存文件路径,默认值为 /tmp/redis.swap,不可多个 Redis 实例共享
vm-max-memory将所有大于 vm-max-memory 的数据存入虚拟内存,无论 vm-max-memory 设置多小,所有索引数据都是内存存储的( Redis 的索引数据就是 keys ),也就是说,当 vm-max-memory 设置为 0 的时候,其实是所有 value 都存在于磁盘。默认值为 0
vm-page-sizeRedis swap 文件分成了很多的 page,一个对象可以保存在多个 page 上面,但一个 page 上不能被多个对象共享,vm-page-size 是要根据存储的数据大小来设定的 。默认值为 32
vm-pages设置 swap 文件中的 page 数量,由于页表(一种表示页面空闲或使用的 bitmap)是在放在内存中的,在磁盘上每 8 个 pages 将消耗 1byte 的内存。 默认值为 134217728
vm-max-threads设置访问 swap 文件的线程数,最好不要超过机器的核数,如果设置为 0,那么所有对 swap 文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为 4
glueoutputbuf设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为 yes
hash-max-zipmap-entries指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法,默认为 64
hash-max-zipmap-value指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法,默认为 512
activerehashing指定是否激活重置哈希,默认为开启
include指定包含其它的配置文件,可以在同一主机上多个 Redis 实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
lazyfree-lazy-eviction当 redis 内存达到阈值 maxmemory 时,将执行内存淘汰,默认为 no
lazyfree-lazy-expire当设置了过期 key 的过期时间到了,将删除 key,默认为 no
lazyfree-lazy-server-del这种主要用户提交 del 删除指令,默认为 no
replica-lazy-flush主要用于复制过程中,全量同步的场景,从节点需要删除整个 db ,默认为 no
lazyfree-lazy-user-del当设置为 yes 时,本质来说和 unlink 指令的处理方式一致了,默认为 no
hz执行定期任务的频率,默认为 10
replicaof设置当前节点为从节点 masterip:主节点ip masterport:主节点端口
masterauth主节点密码
cluster-enabled开启集群
cluster-config-file集群节点信息文件配置
cluster-node-timeout集群节点超时间