Redis通用操作
- Keys [pattern] # 遍历出指定模式的key,可使用 , ?等通配符 - 一般不在生产环境中使用,O(n)
_Keys_ # 遍历出所有key
Keys he[h-l]* # 遍历以 he 开头,第三个字符在 h-l 期间的匹配key - dbsize # 计算 key 的总数,O(1)
- exists key # 检查 key 是否存在,O(1)级别时间复杂度
- del key # 删除指定 key ,O(1)
- expire key seconds # key在 seconds 秒后过期 ,O(1)
- ttl key # 查看 key 剩余过期时间 -1 表达无过期时间 -2表示已过期,O(1)
- persist key # 去掉 key 的过期时间 ,O(1)
- type key # 返回 key 的类型 ,O(1)
String类型
String键值结构
操作
- get key # 获取 key 对应value ,O(1)
- set key value # 设置 key-value ,已有相同 key 值,则进行覆盖,O(1)
- setnx key value # 设置 key-value ,key 不存在,才进行设置,O(1)
- set key value xx # 设置 key-value ,key 存在,才进行设置,O(1)
- del key # 删除 key-value ,O(1)
- incr key # key 自增1, 如果key不存在,自增都get(key)=1 ,O(1)
- decr key # key 自减1, 如果key不存在,自减都get(key)=-1 ,O(1)
- incrby key k # key 自增k, 如果key不存在,自增都get(key)=k ,O(1)
- decrby key k # key 自减k, 如果key不存在,自减都get(key)=-k,O(1)
- mget key1 key2 key3… # 批量获取key,原子操作,O(n)
- mset key1 value1 key2 value2 key3 value3… # 批量设置key-value,原子操作,O(n)
- getset key newvalue # set key newvalue并返回 oldvalue,O(1)
- append key value # 将 value 将追加到 oldvalue,O(1)
- strlen key # 返回字符串长度(注意中文) ,O(1)
- incrbyfloat key floatValue # 增加key 对应的值 ,O(1)
- getrange key start end # 获取字符串指定下标的所有值 ,O(1)
- setrange key index value # 设置指定下标对应的值 ,O(1)
Hash类型
Hash键值结构
注: field不能相同,value可以相同
操作
- hget key field # 获取 hash key 对应field 的 value ,O(1)
- hset key field value # 设置 hash key 对应field 的 value ,O(1)
- hdel key field # 删除 hash key 对应field 的 value ,O(1)
- hexists key field # 判断 hash key 是否有对应 field ,O(1)
- hlen key # 获取 hash key 的 field 数量,O(1)
- hmget key field1 field2… # 批量获取hash-key的一批 field 对应值,O(n)
- hmset key field1 value1 field2 value2… # 批量设置 hash-key的一批 field 对应值,O(n)
- hgetall key # 返回 hash-key 对应所有的 field-value 值,O(n)
- hvals key # 返回 hash-key 对应所有 field 的 value 值,O(n)
- hkeys key # 返回 hash-key 对应所有 field ,O(n)
- hincrby key field k # key field 自增 k ,如果key不存在,自增都hget(key, field)=k ,O(1)
- hincrbyfloat key field k # key field 自增 k ,如果key不存在,自增都hget(key, field)=k ,O(1)
- hsetnx key field value # 设置 hash key对应 field的 value ,field 不存在,才进行设置,O(1)
List类型
List键值结构
注: 有序(由插入顺序决定遍历顺序),可以重复,左右两边插入弹出
操作
- rpush key value1 value2… # 从列表的右端插入值 ,O(1~n)
- lpush key value1 value2… # 从列表的左端插入值 ,O(1~n)
- linsert key before/after value newvalue # 在list指定的值前|后插入新值,O(n)
- lpop key # 从列表的左端弹出一个值(删除) ,O(1)
- rpop key # 从列表的右端弹出一个值(删除) ,O(1)
- lrem key count value # 根据 count 值,从列表中删除所有 value 相等的项 ,O(n)
- count > 0 , 从左到右,删除最多 count 个 value 相等的项目
- count < 0 , 从右到左,删除最多 Math.abs(count) 个 value 相等的项目
- count = 0 , 删除所有 value 相等的项目
- ltrim key start end # 按照索引范围(索引从 0 开始 ,-1 表示最后一个元素)修剪列表 ,O(n)
- lrange key start end # 获取列表指定索引范围(索引从 0 开始,-1 表示最后一个元素,包括 end )的值 ,O(n)
- lrange list 0 5 = lrange list -6 -1 = lrange list 0 -1
- lindex key index # 获取列表指定索引的值 ,O(n)
- llen key # 获取列表长度 ,O(1)
- lset key index newValue # 设置列表指定索引的值 ,O(n)
- blpop key timeout # lpop 阻塞版本,timeout 是阻塞超时时间,为0 表示永不超时 ,O(1)
- rlpop key timeout # rpop 阻塞版本,timeout 是阻塞超时时间,为0 表示永不超时 ,O(1)
Set类型
Set键值结构
注: 无序(顺序不由插入顺序决定),不可重复,支持集合间的操作
操作
- sadd key value1 value2…. # 向集合 key 中添加元素,若已有重复元素,则添加失败 ,O(n)
- srem key value1 value2…. # 移除集合 key 中元素,O(n)
- scard key # 计算集合元素个数,O(1)
- sismember key value # 判断集合 key 中 value 元素是否存在,O(n)
- srandmember key count # 随机从集合 key 中挑选 count 个元素,O(n)
- spop key # 随机从集合 key 中挑选 1 个元素,O(1)
- smembers key # 获取集合 key 中所有元素,O(n)
- sdiff key1 key2 # 两个集合的差集,O(n)
- sinter key1 key2 # 两个集合的交集,O(n)
- sunion key1 key2 # 两个集合的并集,O(n)
- sunionstore/sdiffstore/sinterstore destkey key1 key2 # 并集/差集/交集结果存到 destkey 中,O(n)
Sorted Set类型
Sorted Set键值结构
注: 有序,不可重复,支持集合间的操作
操作
- zadd key score value score2 value2…. # 向有序集合 key 中添加score value对,value不可重复元素,否则添加失败 ,O(logN)
- zrem key value value2…. # 删除有序集合 key 中添加元素 ,O(1)
- zscore key value # 获取有序集合 key 中 value 对应的 score ,O(1)
- zincrby key increScore value # 增加有序集合 key 中 value 对应的 score 值,O(1)
- zcard key # 获取有序集合 key 中 value 个数,O(1)
- zrank key value # 获取有序集合 key 中 value 的排名(从低到高),O(1)
- zrevrank key value # 获取有序集合 key 中 value 的排名(从高到低),O(1)
- zrange key start end [withscores] # 获取有序集合指定索引范围(索引从 0 开始,-1 表示最后一个元素)的值并打印 score - 升序,O(logn + m)
- zrevrange key start end [withscores] # 获取有序集合指定索引范围(索引从 0 开始,-1 表示最后一个元素)的值并打印 score - 降序,O(logn + m)
- zrangebyscore key minScore maxScore [withscores] # 获取有序集合指定分数范围的值并打印 score - 升序,O(logn + m)
- zrevrangebyscore key minScore maxScore [withscores] # 获取有序集合指定分数范围的值并打印 score - 降序,O(logn + m)
- zcount key minScore maxScore # 获取有序集合指定分数范围的值的个数 ,O(logn + m)
- zremrangebyrank key start end # 删除指定排名内的升序元素,O(logn + m)
- zremrangebyscore key minScore maxScore # 删除指定分数范围的升序元素,O(logn + m)
参考资料
[1] http://redisdoc.com/
[2] https://coding.imooc.com/class/151.html