Redis数据结构与基本命令
Redis提供的5种数据结构
| 数据类型 | 存储的值 | 读写能力 |
|---|---|---|
| STRING | 字符串、整数、浮点数 | 对整个字符串或者字符串的其中一部分执行操作; 对整数和浮点数执行自增(increment)或者自减(decrement)操作 |
| LIST | 链表,链表上的每个节点都包含了一个字符串 | 从链表的两端推入或者弹出元素; 根据偏移量对链表进行修建(teim); 读取单个或者多个元素; 根据值查找或者移除元素 |
| SET | 包含字符串的无序集合,并且被包含的每个字符串都是独一无二、各不相同的 | 添加、获取、移除单个元素; 检查一个元素是否存在于集合中; 集合运算(交、并、差); 从集合里面获取元素 |
| HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对; 获取所有键值对 |
| ZSET | 有序集合,字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 | 添加、获取、移除单个元素; 根据分值范围(range)或者成员来获取元素 |
字符串命令
| 命令 | 用例 | 描述 |
|---|---|---|
| GET | GET keyName value | 获取存储在键中的值 |
| SET | SET keyName value | 设置存储在键中的值 |
| DEL | DEL keyName | 删除存储在键中的值 |
| INCR | INCR keyName | 将键当前存储的值加1 |
| DECR | DECR keyName | 将键当前存储的值减1 |
| INCRBY | INCRBY keyName amount | 将键当前存储的值加上给定的整数值 |
| DECRBY | DECRBY keyName amount | 将键当前存储的值加上给定的整数值 |
| INCRBYFLOAT | INCRBYFLOAT keyName amount | 将键当前存储的值加上给定的浮点数 |
| APPEND | APPEND keyName value | 将值追加到键当前存储值的末尾 |
| GETRANGE | GETRANGE keyName start end | 获取一个由偏移量start至end范围内所有字符组成的子串,包括start和end |
| SETRANGE | SETRANGE keyName offset value | 将从start偏移量开始的子串为给定值 |
| GETBIT | GEIBIT keyName offset | 将字节串看做是二进制位串(bit string),并返回位串中偏移量为offset的二进制位的值 |
| SETBIT | SETBIT keyName offset value | 将字节串看做是二进制串,并将位串中偏移量为offset的二进制位的值设置位value |
| BITOP | BIPOP operationg destKey keyName [keyName...] | 对一个或多个二进制位串执行位运算(并、或、异或、非),并将结果保存在destKey中 |
列表命令
| 命令 | 用例 | 描述 |
|---|---|---|
| RPUSH | RPUSH listName value [value...] | 将一个或多个值推入列表左端 |
| LPUSH | LPUSH listName value [value...] | 将一个或多个值推入列表右端 |
| RPOP | RPOP listName | 移除并返回列表最左端元素 |
| LPOP | LPOP listName | 移除并返回列表最右端元素 |
| LINDEX | LINDEX listName offset | 返回列表中偏移量为offset的元素 |
| LRANGE | LRANGE listName start end | 返回列表中偏移量从start至end范围内的所有元素,包括start和end |
| LTRIM | LTRIM listName start end | 队列表进行切片,只保留偏移量从start至end范围内的所有元素,包括start和end |
| BLPOP | BLPOP listName [listName...] timeout | 从第一个非空列表中弹出位于最左端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 |
| BRPOP | BRPOP listName [listName...] timeout | 从第一个非空列表中弹出位于最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 |
| RPOPLPUSH | RPOPLPUSH sourceList destList | 从sourceList中弹出位于最右端的元素,然后将这个元素推入destList的最左端,并返回这个这个元素 |
| BRPOPLPUSH | BRPOPLPUSH sourceList destList timeout | 从sourceList中弹出位于最右端的元素,然后将这个元素推入destList的最左端,并返回这个元素;如果sourceList为空,那么在timeout秒之内阻塞并等待可弹出的元素出现 |
集合命令
| 命令 | 用例 | 描述 |
|---|---|---|
| SADD | SADD setName item [item...] | 将一个或多个元素添加到集合中,并返回被添加的元素中原本不存在于集合里面的元素数量 |
| SREM | SREM setName item [item...] | 从集合里面移除一个或多个元素,并返回被移除元素的数量 |
| SISMEMBER | SISMEMBER setName item | 检查元素是否存在于集合里 |
| SCARD | SCARD setName | 返回集合包含的元素数量 |
| SMEMBERS | SMEMBERS setName | 返回集合中包含的所有元素 |
| SRANDMEMBER | SRANDMEMBER setName [count] | 从集合里面随机返回一个或多个元素;当count为正数时,命令返回的随机元素不会重复;当count为负数时,命令返回的随机元素可能会出现重复 |
| SPOP | SPOP setName | 随机移除集合中的一个元素,返回被移除的元素 |
| SMOVE | SMOVE sourceSet destSet item | 如果sourceSet包含元素item,那么从sourceSet里面移除元素item,将元素item添加到destSet中;如果item被移除成功,那么命令返回1,否则返回0 |
| SDIFF | SDIFF setName [setName...] | 计算差集运算,返回计算结果 |
| SDIFFSTORE | SDIFFSTORE destSet setName [setName...] | 计算差集运算,将结果存储在destSet里面 |
| SINTER | SINTER setName [setName...] | 计算交集运算,返回计算结果 |
| SINTERSTORE | SINTERSTORE destSet setName [setName...] | 计算交集运算,将结果存储在destSet里面 |
| SUNION | SUNION setName [setName...] | 计算并集运算,返回计算结果 |
| SUNIONSORE | SUNIONSORE destSet setName [setName...] | 计算并集运算,将结果存储在destSet里面 |
散列表命令
| 命令 | 用例 | 描述 |
|---|---|---|
| HMGET | HMGET hashName key [key...] | 从散列里面获取一个或多个键的值 |
| HMSET | HMSET hashName key value [key value...] | 为散列里面一个或多个键设置值 |
| HDEL | HDEL hashName key [key...] | 删除散列里面的一个或多个键值对,返回成功找到并删除的键值对数量 |
| HLEN | HLEN hashName | 返回散列包含的键值对数量 |
| HEXISTS | HEXISTS hashName key | 检查键是否存在于散列里面 |
| HKEYS | HKEYS hashName | 获取散列包含的所有键 |
| HVALS | HVALS hashName | 获取散列包含的所有值 |
| HGETALL | HGETALL hashName | 获取散列包含的所有键值对 |
| HINCRBY | HINCRBY hashName key increment | 将键存储的值加上整数increment |
| HINCRBYFLOAT | HINCRBYFLOAT hashName key increment | 将键存储的值加上浮点数increment |
有序集命令
| 命令 | 用例 | 描述 |
|---|---|---|
| ZADD | ZADD zsetName score member [score member...] | 将带有给定分值的成员添加到有序集里面 |
| ZREM | ZREM zsetName member [member...] | 从有序集里面移除一个或多个成员,并返回被移除成员的数量 |
| ZCARD | ZCARD zsetName | 返回有序集包含的成员数量 |
| ZINCRBY | ZINCRBY zsetName increment member | 将给定成员的分值加上increment |
| ZCOUNT | ZCOUNT zsetName min max | 返回分值介于min和max之间的成员数量 |
| ZRANK | ZRANK zsetName member | 返回成员在有序集中的排名 |
| ZSCORE | ZSCORE zsetName member | 返回成员在有序集中的分值 |
| ZRANGE | ZRANGE zsetName start stop [WITHSCORES] | 返回有序集中排名介于start和stop之间的成员,如果给定了可选的WITHSCORES选项,那么命令将成员的分值也一并返回 |
| ZREVRANK | ZREVRANK zsetName member | 返回有序集里成员的排名,成员按照分值由大到小排列 |
| ZREVRANGE | ZREVRANGE zsetName start stop [WITHSCORES] | 返回有序集里给定排名范围的成员,成员按照分值由大到小排列 |
| ZRANGEBYSCORE | ZRANGEBYSCORE zsetName min max [WITHSCORES] [LIMIT offset count] | 返回有序集中,分值介于min和max之间的所有成员 |
| ZREMRANGEBYRANK | ZREMRANGEBYRANK zsetName start stop | 移除有序集中排名介于start和stop之间的所有成员 |
| ZREMRANGEBYSCORE | ZREMRANGEBYSCORE zsetName min max | 移除有序集中分值介于min和max之间的所有成员 |
| ZINTERSTORE | ZINTERSTORE destZset zsetCount zset [zset...] [WEIGHTS weight [weight...]] [AGGREGATE SUM:MIN:MAX] | 计算交集运算,将结果存储在destSet里面 |
| ZUNIONSTORE | ZUNIONSTORE destZset zsetCount zset [zset...] [WEIGHTS weight [weight...]] [AGGREGATE SUM:MIN:MAX] | 计算并集运算,将结果存储在destSet里面 |
##其他命令
###发布与订阅
| 命令 | 用例 | 描述 |
|---|---|---|
| SUBSCRIBE | SUBSCRIBE channel [channel...] | 订阅一个或多个频道 |
| UNSUBSCRIBE | UNSUBSCRIBE channel [channel...] | 退订一个或多个频道,如果执行时没有指定任何频道,那么退订所有频道 |
| PUBLISH | PUBLISH channel message | 给频道发送消息 |
| PSUBSCRIBE | PSUBSCRIBE pattern [pattern...] | 订阅模式相匹配的所有频道 |
| PUNSUBSCRIBE | PUNSUBSCRIBE pattern [pattern...] | 退订模式,如果执行时没有指定任何模式,那么退订所有模式 |
###排序
| 命令 | 用例 | 描述 |
|---|---|---|
| SORT | SORT sourceKey [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC:DESC] [ALPHA] [STORE destKey] | 根据给定的选项,对输入的列表、集合、或者有序集进行排序,然后返回或者存储排序的结果 |
###过期时间
| 命令 | 用例 | 描述 |
|---|---|---|
| PERSIST | PERSIST keyName | 移除键的过期时间 |
| TTL | TTL ketName | 查看键距离过期还剩多少秒 |
| EXPIRE | EXPIRE keyName seconds | 给键设置过期时间, 单位为秒 |
| EXPIREAT | EXPIREAT keyName timestamp | 给键设置过期时间戳 |
| PTTL | PTTL keyName | 查看键距离过期还剩多少毫秒 |
| PEXPIRE | PEXPIRE keyName milliseconds | 给键设置过期时间,单位为毫秒 |
| PEXPIREAT | PEXPIREAT keyName timestampMilliseconds | 给键设置过期毫秒精度的时间戳 |
###事务
| 命令 | 描述 |
|---|---|
| MULTI | 开始事务 |
| EXEC | 结束事务 |
| WATCH | |
| UNWATCH |
##未完待续