# Redis基础
# 基本操作
redis-server启动Redis服务。使用命令redis-cli连接到Redis。
# 字符串
| 字符串的使用 | |
|---|---|
| SET key value | 设置键key的值为value。 |
| SETEX key seconds value | 将键key的值设置为value,并且超时时间为seconds秒。 |
| PSETEX key milliseconds value | 将键key的值设置为value,并且超时时间为milliseconds毫秒。 |
| SETNX key value | 只有在键key不存在的情况下,将key的值设置为value。 |
| GET key | 返回键key的值设置为value。 |
| GETSET key value | 将键key的值为value,并返回设置前的旧值。若没有旧值则返回nil。 |
| APPEND key value | 如果键key存在并且值是⼀个字符串,则把value追加到现有值的末尾。 如果key不存在,则将key的值设置为value。 返回追加value之后该value的⻓度。 |
| SETRANGE key offset value | 从偏移量offset开始⽤ value字符串覆盖键key存储的原字符串。 offset从0开始返回修改后新的value字符串的⻓度 |
| GETRANGE key start end | 返回键key存储的字符串的从start到end之间(包括start和end)的部分。 返回value的指定⼦串。 |
| INCR/DECR key | 将键key存储的数字值value加⼀ /减⼀。 若key不存在则值先初始化为0再加⼀ /减⼀。 若key存储的值不能被解释为数字,则返回错误。 |
| INCRBY/DECRBY key increment/decrement | 将键key存储的数字值value加上/减去⼀个increment/decrement的量。 若key不存在则值先初始化为0再加/减。 若key存储的值不能被解释为数字,则返回错误。 |
| INCRBYFLOAT key increment | 将键key存储的浮点数值value加上⼀个increment的增量。 若key不存在则值先初始化为0再执⾏加上增量的操作。 若key存储的值或increment不能被解释为浮点数值,则返回错误。 |
| MSET key value [key value ...] | 同时为多个键设置值。 |
| MGET key [key ...] | 返回给定的⼀个或多个键的值。 |
| MSETNX key value [key value ...] | 当所有给定的key都不存在时才同时为多个键设置值。 O(N) 只要有⼀个key已经存在,那么所有值都不会被继续设置。 |
| DEL key [key ...] | 删除给定的⼀个或多个键的值。 |
| STRLEN key | 获取键为key的值的字符串⻓度。 |
# 列表
| 列表的使用 | |
|---|---|
| LPUSH key element [element ...] | 将⼀个或多个元素添加到列表key的表头(左侧) ,多个值则从左⾄右依次插⼊表头 如果列表key不存在,则创建⼀个然后执⾏ LPUSH插⼊操作; 如果列表key存在但不是列表类型,则返回错误 |
| LPUSHX key element [element ...] | 当且仅当key存在并且是⼀个列表的时候,才执⾏ LPUSH操作 |
| RPUSH key element [element ...] | 将⼀个或多个元素添加到列表key的表尾(右侧) ,多个值则从左⾄右依次插⼊表尾; 如果列表key不存在,则创建⼀个然后执⾏ RPUSH插⼊操作; 如果列表key存在但不是列表类型,则返回错误。 |
| RPUSHX key element [element ...] | 当且仅当key存在并且是⼀个列表的时候,才执⾏ RPUSH操作。 |
| LPOP key [count ...] | 将⼀个或count个元素从列表头⽅向移除并将其返回; 如果列表key不存在,则返回nil。 |
| RPOP key [count ...] | 将⼀个或count个元素从列表尾⽅向移除并将其返回; 如果列表key不存在,则返回nil。 |
| RPOPLPUSH source destination | 在⼀个原⼦时间内,将source列表的尾部元素弹出,并插⼊到destination列表的头部,返回该元素; 如果列表key不存在,则返回nil。 |
| LREM key count element | 移除列表key中与element相等的count个元素,返回被移除的元素的数量。 |
| LLEN key | 返回列表key的⻓度;如果key不存在则返回0;如果key不是列表类型则返回错误。 |
| LINDEX key index | 返回列表key中索引为index的元素。 |
| LINSERT key BEFORE|AFTER pivot element | 将元素element插⼊到列表key中,位于pivot之前(BEFORE)或者之后(AFTER)。 |
| LSET key index element | 将列表key中索引为index的元素设置为element。 |
| LRANGE key start stop | 返回列表key中,位于start和stop之间的元素(包括start和stop)。 |
| LTRIM key start stop | 只保留列表key中索引为start和stop之间的元素。 |
| BLPOP key [key ...] timeout | 列表阻塞式(Blocking)弹出。是LPOP的阻塞版本,当列表中没有任何元素时阻塞,直到超时或发现新的可弹出元素为⽌。 |
| BRPOP key [key ...] timeout | 列表阻塞式(Blocking)弹出。是RPOP的阻塞版本,当列表中没有任何元素时阻塞,直到超时或发现新的可弹出元素为⽌。 |
| BRPOPLPUSH source destination timeout | 是RPOPLPUSH的阻塞版本,当列表source中没有任何元素时阻塞,<直到超时或发现新的可弹出元素为⽌。 |
# 集合
| 集合的使用 | |
|---|---|
| SADD key member [member ...] | 将⼀个或多个元素加⼊到集合key中。已存在于集合中的元素将被忽略。 |
| SREM key member [member ...] | 将⼀个或多个元素从集合key中移除。不存在的member元素将被忽略。 |
| SMEMBERS key | 返回集合key中的所有成员 |
| SISMEMBER key member | 判断MEMBER是否是集合key的成员,是返回1,不是或key不存在返回0。 |
| SPOP key [count] | 移除并返回集合key中的⼀个或count个随机元素。 |
| SRANDMEMBER key [count] | 和SPOP类似,区别在于SRANDMEMBER只返回不移除。 |
| SMOVE source destination member | 将member元素从source集合移动到destination集合。(原⼦性操作) |
| SCARD key | 返回集合key的基数(集合中元素的数量)。 |
| SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] | 增量迭代,是⼀个基于游标的迭代器。类似的命令还有HSCAN、 SSCAN、 ZSCAN。 |
| SINTER key [key ...] | 返回⼀个集合的全部成员,多个集合则返回交集。 |
| SINTERSTORE destination key [key ...] | 类似SINTER,区别是SINTERSTORE会保存结果集到destination集合中,⽽不是单纯返回。 若destination存在则将其覆盖, destination可以是key本身。 |
| SUNION key [key ...] | 返回⼀个集合的全部成员,多个集合则返回并集。 |
| SUNIONSTORE destination key [key ...] | 类似SUNION,区别是SUNIONSTORE会保存结果集到destination集合中,⽽不是单纯返回。 若destination存在则将其覆盖, destination可以是key本身。 |
| SDIFF key [key ...] | 返回⼀个集合的全部成员,多个集合则返回差集。 |
| SDIFFSTORE destination key [key ...] | 类似SDIFF,区别是SDIFFSTORE会保存结果集到destination集合中,⽽不是单纯返回。 若destination存在则将其覆盖, destination可以是key本身。 |
# 有序集合
| 有序集合的使用 | |
|---|---|
ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ..] | 将⼀个或多个member元素及其分数score加⼊到有序集合key中。 |
| ZREM key member [member ..] | 将⼀个或多个成员从集合key中移除。不存在的member成员将被忽略。 |
| ZSCORE key member | 返回有序集合key中的成员member的分数值(score)。 |
| ZINCRBY key increment member | 为有序集合key的成员member的分数值score加上⼀个增量increment。 |
| ZCARD key | 返回有序集合key的基数(集合中成员的数量) |
| ZCOUNT key min max | 返回有序集合key中,分数值score在min和max之间(包括等于)的成员的数量。 |
ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count][WITHSCORES] | 返回有序集合key中指定区间内的成员。(从⼩到⼤排列) |
| ZREVRANGE key start stop [WITHSCORES] | 返回有序集合key中指定区间内的成员。(从⼤到⼩排列) |
| ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回有序集合key中所有score值在指定区间内的成员。(从⼩到⼤排列) |
| ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offse count] | 返回有序集合key中所有score值在指定区间内的成员。(从⼤到⼩排列) |
| ZRANK key member | 返回有序集合key中成员member的排名。(按照score从⼩到⼤排列) |
| ZREVRANK key member | 返回有序集合key中成员member的排名。(按照score从⼤到⼩排列) |
| ZREMRANGEBYRANK key start stop | 移除有序集合key中指定排名区间内的所有member。(按照score从⼩到⼤排列) |
| ZREMRANGEBYSCORE key min max | 移除有序集合key中指定分数区间内的所有member。(按照score从⼩到⼤排列) |
| ZREMRANGEBYLEX key min max | 移除有序集合key中指定字典序区间内的所有member。(按照字典序从⼩到⼤排列) |
| ZRANGEBYLEX key min max [LIMIT offset count] | 返回有序集合key中所有字典序在指定区间内的成员。(从⼤到⼩排列) |
| ZLEXCOUNT key min max | 返回有序集合key中指定字典序区间内的所有member的数量。 |
| ZSCAN cursor [MATCH pattern] [COUNT count] [TYPE type] | 增量迭代,是⼀个基于游标的迭代器。类似的命令还有HSCAN、 SSCAN、 SCAN。 |
| ZUNIONSTORE destination numkeys key [key ...] | 返回⼀个或多个有序集合的并集,并存储到destination中。 |
| ZINTERSTORE destination numkeys key [key ...] | 返回⼀个或多个有序集合的交集,并存储到destination中。 |
# 哈希
| 哈希的使用 | |
|---|---|
| HSET key field value [field value ...] | 将哈希表key中的域field的值设置为value。 |
| HSETNX key field value | 当且仅当field不存在的时候,将哈希表key中的域field的值设置为value |
| HGET key field | 返回哈希表key中给定域field的值。 |
| HEXISTS key field | 判断给定域field是否存在于哈希表key中。 |
| HDEL key field [field ...] | 删除哈希表key中的⼀个或多个指定域field |
| HLEN key | 返回哈希表key中域的数量。 |
| HSTRLEN key field | 返回哈希表key中,给定域field相关联的值的字符串⻓度 |
| HINCRBY key field increment | 将哈希表key中field的值加上增量increment。 |
| HINCRBYFLOAT key field increment | 将哈希表key中field的值加上浮点数增量increment。 |
| HMSET key field value [field value ...] | 设置多个key-value对。(功能同HSET相同,已过时)。 |
| HMGET key field [field ...] | 返回哈希表key中⼀个或多个给定域field的值。 |
| HKEYS key | 返回哈希表key中的所有域。 |
| HVALS key | 返回哈希表key中所有域的值。 |
| HGETALL key | 返回哈希表key中所有的域和值。 |
| HSCAN key cursor [MATCH pattern] [COUNT count] | 增量迭代,是⼀个基于游标的迭代器。类似的命令还有SCAN、 SSCAN、 ZSCAN。 |