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 // 将键从当前数据库移动到另一个数据库db
EXIST key // 若键存在,输出1,否则输出0
TYPE 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 v4
RPUSH 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 ...] // 向集合添加一个或多个merber
SISMEMBER key member // 判断member是否在集合内
SCARD key // 展示集合大小
SMEMBERS key // 展示集合中的所有成员
SREM key member [member ...] // 从集合中移除一个或多个member
SRANDMEMBER 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 ZREM
GEOPOS 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 添加一个或多个element
PFCOUNT 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 // 释放乐观锁