Redis常用命令一览

210 阅读8分钟

Redis常用命令一览

💡 阅前须知

  • Redis版本为4.0.9,Ubuntu18 apt直接install版本;
  • 注释中的键 = 命令中的key / k,注释中的值 = 命令中的value / v;
  • 标题规定了该标题下命令所处的语境;
  • [option] 代表可选参数,option1|option2 代表二者择一,[option …] 代表一组可选参数
  • 通常来说,对于判断True/False的命令,返回值为1 = True,0 = False;

基本用法

SELECT 0 // 选择数据库0(默认有16个数据库可选)
​
DBSIZE // 展示当前数据库大小
​
KEYS * // 展示所有键
​
FLUSHDB // 清除当前数据库数据
​
FLUSHALL // 清除全部数据库数据

增删查改

SET key value [EX seconds] [PX milliseconds] [NX|XX]
// key:要设置的键名。
// value:要设置的键值。
// EX seconds:可选参数,以秒为单位设置键的过期时间。
// PX milliseconds:可选参数,以毫秒为单位设置键的过期时间。
// NX|XX:可选参数,设置操作的条件。
// NX:只在键不存在时才设置键的值。
// XX:只在键已经存在时才设置键的值。
// 例子:SET name "King" EX 3600 NX
// 当键"name"不存在时,添加键值对"name":"King",过期时间3600秒GET key // 获取键的值GETSET key value // 获取键的值并设置键的新值EXPIRE key seonds // 为现有键设置过期时间TTL key //获取键的剩余生存时间MOVE key db // 将键从当前数据库移动到另一个数据库dbEXIST key // 若键存在,输出1,否则输出0TYPE key // 获取键的数据类型DEL key // 删除一个键值对

Integer相关

INCR key // 将键的值加 1
​
DECR key // 将键的值值减 1
​
INCRBY key n // 将键的值加 n
​
DECRBY key n // 将键的值减 n

String相关

APPEND key value // 将值追加到键的末尾
​
STRLEN key // 获取键值的字符串长度
​
GETRANGE key start end // 获取键值的子字符串(截取),当 end = -1 时,获取整个字符串
​
SETRANGE key offset str // 从指定偏移量处覆盖键值的字符串内容
​
SETEX key seconds value // 设置带有过期时间的键值
​
SETNX key value // 若键不存在,则设置键的值,若设置成功返回 1

Map相关

MSET k v [k v ...] // 设置一个 Map(Hash)
// MSET k1 v1 k2 v2 k3 v3 k4 v4
​
MSETNX k v [k v ...] // 如果 Map 中键值对不存在,则设置一个 Map(Hash),具有原子性
​
MGET k v [k v ...] // 获取 Map(Hash)中指定的多个字段的值
​
////////////////////////////////
/* 一种面向对象中可以采纳的写法 */
///////////////////////////////
MSET user:1:name "King" user:1:age 20 user:2:name "Queen" user:2:age 18

List相关

// Redis list是两端开口的,即既可以用作队列也可以用作栈
// key在本栏中指代列表list名(当然,列表也是键值对,我这样说只是为了方便理解)LPUSH key value [value ...] // 将一个或多个值插入到列表头部
// LPUSH list1 v1 v2 v3 v4RPUSH key value [value ...] // 将一个或多个值插入到列表尾部LRANGE key start stop // 获取列表指定范围内的元素LPOP key [count] // 从列表头部移除并返回一个或count个元素RPOP key [count] // 从列表尾部移除并返回一个或count个元素LSET key index value // 将列表中指定索引位置的元素设置为新值LINDEX key index // 获取列表中指定索引位置的元素值LLEN key // 获取列表的长度(元素个数)LREM key count value // 从列表中移除指定个数的元素LTRIM key start stop // 修剪列表,保留指定范围[start, stop]内的元素RPOPLPUSH source destination // 将source列表的尾部元素弹出并添加到destination列表的头部LINSERT key BEFORE|AFTER pivot value // 在列表中指定元素pivot的前或后插入一个新元素

Set相关

// key指代set名SADD key member [member ...] // 向集合添加一个或多个merberSISMEMBER key member // 判断member是否在集合内SCARD key // 展示集合大小SMEMBERS key // 展示集合中的所有成员SREM key member [member ...] // 从集合中移除一个或多个memberSRANDMEMBER key [count] // 从集合中随机获取一个或count个值SPOP key [count] // 随机移除并返回集合中一个或count个值SMOVE source destination member // 将member从source集合移动到destination集合SDIFF key [key ...] // 求给定集合的差集SINTER key [key ...] // 求给定集合的交集SUNION key [key ...] // 求给定集合的并集

Zset相关

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
// key:有序集合的键名。
// NX:可选参数,表示只在成员不存在时添加成员。如果成员已经存在,则忽略操作。
// XX:可选参数,表示只在成员已经存在时更新成员的分值。如果成员不存在,则忽略操作。
// CH:可选参数,与NX或XX同时使用时,返回值为成功添加的成员数量,包括更新的成员。
// INCR:可选参数,与score一起使用时,表示将score视为增量值,而不是直接设置成员的分值。
// score: 成员的分值,必须为浮点数。用来对有序集合中的成员进行排序。
// member: 需要添加到有序集合的成员。ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
// key:有序集合的键名。
// min:成员的最小值,可以为-inf(负无穷)。
// max:成员的最大值,可以为+inf(正无穷)。
// WITHSCORES:开启则返回分值。
// LIMIT offset count是一条必须完整出现的命令,意为从offset处开始返回count条结果。
// offset:可选参数,返回结果的偏移量,即从符合条件的成员中的第几个开始返回结果。
// count:可选参数,返回结果的数量。ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
// 参数同ZRANGEBYSCORE,该命令用于降序排列。ZRANGE key start stop [WITHSCORES]
// key:有序集合的键名。
// start:起始索引位置,0表示第一个成员,1表示第二个成员,依此类推。也可以使用负数索引,-1表示最后一个成员,-2表示倒数第二个成员,以此类推。
// stop:结束索引位置,同样可以使用负数索引。
// WITHSCORES效果同上ZREVRANGE key start stop [WITHSCORES]
// 参数同ZRANGE,该命令用于降序排列。ZREM key member [member ...] // 从有序集合中移除一个或多个成员ZCARD key // 获取有序集合大小ZCOUNT key min max // 获取有序集合指定分数范围内的成员数量

Hash相关

// key代表哈希表名HSET key field value // 设置哈希表中字段filed的值HGET key field // 获取哈希表中字段的值HMSET key field value [field value ...] // 同时设置哈希表中多个字段的值HMGET key field [field ...] // 同时获取哈希表中多个字段的值HGETALL key // 获取哈希表中所有字段和值HDEL key field [field ...] // 删除哈希表中一个或多个字段HLEN key // 获取哈希表中字段的数量HEXISTS key field // 判断哈希表中是否存在指定字段HKEYS key // 获取哈希表中所有字段的名字HVALS key // 获取哈希表中所有字段的值HINCRBY key field increment // 将哈希表中指定字段的值增加指定增量HINCRBYFLOAT key field increment // 将哈希表中指定字段的值增加指定浮点增量HSETNX key field value // 当哈希表中指定字段不存在时,设置字段的值

Geospatial相关

GEOADD key longitude latitude member [longitude latitude member ...]
// longditude 经度
// latitude 纬度
// 可以看做key:[longtitude latitude]:member,形式上类似ZSET(其实底层就是用ZSET实现的)
// 因此部分ZSET命令可以用于操作Geospatial数据
// 如ZRANGE ZREMGEOPOS key member [member ...] // 获取成员经纬度GEODIST key member1 member2 [unit]
// 计算两个成员之间的距离
// key:GeoSpatial 类型键的名称。
// member1:第一个成员的名称。
// member2:第二个成员的名称。
// unit(可选):可用于指定距离的单位,默认为 "m"(米)。其他可选单位包括 "km"(千米)、"mi"(英里)、"ft"(英尺)。GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD]
// 查找给定经纬度的中心点周围的成员
// key:GeoSpatial 类型键的名称。
// longitude:中心点的经度。
// latitude:中心点的纬度。
// radius:搜索的半径范围,距离中心点的距离。
// m|km|ft|mi:用于指定搜索半径的单位,可选的单位包括 "m"(米)、"km"(千米)、"ft"(英尺)、"mi"(英里)。
// WITHCOORD(可选):指定是否返回搜索结果的成员坐标。GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD]
// 参数同GEORADIUS,区别在于该命令查找的是给定成员周围的成员GEOHASH key member [member ...] // 返回经纬度转换成的Hash字符串,长度为11

Hyperloglog相关

// 用于基数统计(集合中不重复元素的数量)的特殊Set
// 低内存占用,高效,但有0.81%的错误率(底层使用的是估计算法)
// key 指代 Hyperloglog名PFADD key element [element ...] // 向 HyperLogLog 添加一个或多个elementPFCOUNT key [key ...] // 估计 HyperLogLog 的基数(不重复元素的数量)PFMERGE destkey sourcekey [sourcekey ...] // 将多个 HyperLogLog (sourcekey) 合并为一个新的 HyperLogLog (destkey)

Bitmaps相关

SETBIT key offset value // 设置位于指定偏移量上的位值
​
GETBIT key offset // 获取位于指定偏移量上的位值
​
BITCOUNT key [start end] // 统计指定范围内位值为 1 的位数

事务与锁

MULTI // 开启事务,之后所有Redis命令都会被加入队列,等待事务运行或被抛弃再按序执行
​
EXEC // 执行事务
​
DISCARD // 抛弃事务// 需要注意的是,Redis事务并不保证原子性,
// 编译型异常会导致事务中所有命令执行失败,而运行时异常只会导致出现异常的命令执行失败。
​
WATCH key // 使键获得乐观锁
​
UNWATCH key // 释放乐观锁