redis 常用基础命令
Redis的数据结构
redis是一种高级的key:value存储系统,其中value支持五种数据类型; 1、字符串(strings) 2、散列(hashes) 3、列表(lists) 4、集合(sets) 5、有序集合(sorted sets)
基础查询命令:
# 基础信息 info # 空间大小 info keyspace # 查看DB config get databases #查询Redis的数据量 dbsize #创建 set key value # 模糊查询 keys * # 删除 del key # 清空整个 Redis 数据 flushall # 清空当前库中的所有key flushdb
通用命令:
keys * [pattern] // 遍历当前reids所有的key O(n) dbsize // 计算key的总数 O(1) exists [key] // 判断key是否存在 O(1) del [key...] // 删除一个或多个指定的key O(1) expire key [seconds] // key在seconds秒后过期 O(1) ttl [key] // 查看key剩余的过期时间 O(1) persist [key] // 去掉key的过期时间 O(1) type [key] // 返回key的数据结构类型 O(1)
String相关命令:
get [key] // 获取key对应的value O(1) mget [key1 ke2 ...] // 批量获取key,原子操作 O(n) getset [key newValue] // 设置key新值为newValue并返回旧的value O(1) getrange [key start end] // 获取字符串指定下标所有的值 O(1) set [key value] // 设置key-value O(1) setrange [key index value] // 设置指定下标所有对应的值 O(1) mset [key1 value1 key2 value2 ...] // 批量设置key-value O(n) append [key value] // 将value追加到旧的value O(1) setnx [key value] // key不存在,才设置 O(1) set [key value xx] // key存在,才设置 O(1) setex [key value seconds] // 设置key,同时设置过期时间 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) incrbyfloat [key 3.5] // 增加key对应的float值3.5 如需减法,传负值即可 O(1) decrby [key k] // key自减k,如果key不存在,自减后get(key)=-k O(1) strlen [key] // 返回字符串的长度(注意中文占用字节数的问题)O(1)
Hash相关命令:
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的数量,redis内部维护了这个值的计数,而不是每次遍历,效率高 O(1) hmget [key field1 field2 ...] // 批量获取hash key的一批field对应的值 O(n) hmset [key field1 field2 ...] // 批量设置hash key的一批field的value O(n) hincrby [key field count] // 设置hash key的field字段自增count O(1) hincrbyfloat [key field float] // hincrby的浮点数版 O(1) hgetall [key] // 返回hash key对应所有的field和value O(n) hvals [key] // 返回hash key对应所有field的value O(n) hkeys [key] // 返回hash key对应的所有field O(n) hsetnx [key field value] // 设置hash key对应的field的value 如过field存在,则失败 O(1)
List相关命令:
rpush [key value1 value2...valueN] // 从列表右端(后端)插入值 (1-N个) O(1~n) lpush [key value1 value2...valueN] // 从列表左侧(头部)插入值 (1-N个) O(1~n) linsert [key before|after value newValue] // 在list指定的值(前 | 后)插入newValue,需要遍历 O(n) lpop [key] // 从列表左侧弹出一个item O(1) rpop [key] // 从列表右侧弹出一个item O(1) lrem [key count value] // 根据count值,从列表中删除所有value相等的项 O(n) (1) count > 0,从左到右,删除最多count个与value相等的项 (2) count < 0,从右到左,删除最多count个与value相等的项 (3) count = 0,删除list中所有与value相等的项 ltrim [key start end] // 按照索引范围修剪列表 O(n) lrange [key start end] // 获取list指定索引范围的所有item,end为-1时,取到末尾 O(n) lindex [key index] // 获取list指定索引的item,index为-1,取最后一个item O(n) llen [key] // 获取list长度,内部优化值 O(1) lset [key index newValue] // 设置list指定索引值为newValue O(n) blpop [key timeout] // lpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞 O(1) brpop [key timeout] // rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞 O(1)
Set相关命令:
sadd [key element] // 向集合key添加element(如果element存在,添加失败) O(1) srem [key element] // 将集合key中的element移除掉 O(1) scard [key] // 计算集合大小 O(1) sismember [key value] // 判断value是否在集合中 srandmember [key count] // 从集合中随机挑count个元素,只是选取,不会提出 spop [key] // 从集合中随机弹出一个元素 smembers [key] // 获取集合所有元素,返回结果无序,如果集合大小心使用 sdiff [key1 key2] // 取两个集合的差集 sinter [key1 key2] // 取两个集合的交集 sunion [key1 key2] // 取两个集合的并集 sdiff | sinter | sunion + store destkey // 将差集、交集、并集结果保存到destkey中
Zset相关命令:
zadd [key score element(可以是多对)] // 向集合中添加score和element O(logN) zrem [key element(可以是多个)] // 删除集合中元素 O(1) zscore [key element] // 返回改元素的分数 O(1) zincrby [key increScore element] // 增加或减少元素分数 O(1) zcard [key] // 返回元素的总个数 O(1) zrank [key element] // 返回element在集合中的排名,从小到大排 zrevrank [key element] // 返回element在集合中的排名,从大到小排 zrange [key start end withscores] // 获取指定排名范围的的元素和它的分数,可以不带withscores,即不打印分数 O(log(n)+m) zrevrange [key start end withscores] // zrange的倒序版本 zrangebyscore [key minScore maxScore withscores] // 返回指定分数范围的升序元素 O(log(n)+m) zrevrangebyscore [key minScore maxScore withscores] // zrangebyscore降序版本 zcount [key minScore maxScore] // 返回有序集合指定分数范围的元素个数 O(log(n)+m) zremrangebyrank [key start end] // 删除指定排名内的升序元素 O(log(n)+m) zremrangebyscore [key minScore maxScore] // 删除指定分数内的升序元素 O(log(n)+m) zinterstore // 取两集合交集并存储 zunionstore // 取两集合并集并存储
Bitmap相关命令:
setbit [key offset value] // 给位图指定索引设置值(0或1)注意offset偏移量设置,可能有较大耗时 getbit [key offset] // 获取位图指定索引的值 bitcount [key start end] // 获取位图指定范围内(start到end,单位为字节,如果不指定就是获取全部)值为1的个数 bitop [op destkey key...] // 做多个bitmap的and、or、not、xor操作,并将结果保存在destkey中 bitpos [key targetBit start end] // 计算位图指定范围(start到end,单位为字节,如果不指定就是获取全部)第一个偏移量对应的值等于targetBit(0或1)的位置
HyperLoglog相关命令:
pfadd [key element...] // 向hyperloglog添加元素 pfcount [key...] // 计算hyperloglog的独立总数 pfmerge [destkey sourcekey...] // 合并多个sourcekey到destkey
GEO相关命令(redis3.2版本):
geoadd [key longitude latitude member ...] // 增加一个或多个地理位置信息 geopos [key member...] // 获取一个或多个member的经纬度 geodist [key member1 member2 unit] // 按某个单位(unit:m、km、mi、ft)获取两个地理位置的距离 georadius // 功能参数太多,使用查api
geo说明:
type geoKey = zset
没有删除api:zrem key member