Redis基础

4/27/2024 Redis

# 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。