Redis设计与实现(一)——基础指令

Posted by 皮皮潘 on 12-09,2021

通用指令

INFO [section] // 查看服务器情况
SELECT database // 选择数据库
KEYS patterns // 查看所有键 (O(n))
DBSIZE // 查看键的数量(O(1))
SCAN cusor [MATCH patterns] [COUNT count] (游标查询)
EXSISTS key // 查看Key是否存在
EXPIRE key seconds // 配置Key的过期时间
PERSIST key // 重置Key的过期时间
TTL key // 查看过期时间
DEL key [keys ...] // 删除某个Key
TYPE key // 查看Key的高级属性——String, Set, List, ZSET, Hash
OBJECT encoding key // 查看Key的具体实现的数据结构
CLIENT list // 查看所有的连接
CONFIG SET XXX XXX // 配置
SLOWLOG GET // 查看慢查询
FLUSHALL [ASYNC]

String类型

SET key value [EX seconds | PX miliseconds] [NX|XX} // 将超时以及若存在则不创建合为一条原子指令从而实现了分布式锁
GET key
MSET key value [key value ...]
MGET key [key ...]
APPEND key value 

List类型

[RPUSH | LPUSH] key value [values...]
[RPOP | LPOP] key
LLEN key
LRANGE key start stop // 在redis中都是左闭右闭的
LREM key count value  // 通过value进行定位再删除
LTRIM key start stop // 保留start到stop之间的数据,移除别的数据

HashMap类型

HSET key field value
HMSET key field value [keys values ...]
HGET key field
HMGET key field [fields ...]
HGETALL key // 返回一个列表,偶数是field,单数是value
HKEYS key
HVALS key
HDEL key field [fields ...]
HEXISTS key field

Set类型

SADD key member [members ...]
SMEMBERS key
SCARD key // 获取set长度
SPOP key // 随机删除一个元素
SREM key memeber [members ...]
SISMEMBER key member

ZSet类型

ZSet是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String, Double>,可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表,排序默认按照score从小到大排序

ZADD key socre member [socre member ...]
ZREM key member [member ...]
ZSCORE key member
[ZRANK | ZREVRANK] key member // 获取member的排名,可以理解为在数组里的位置
[ZRANGE | ZREVRANGE] key start stop [WITHSCORES]
[ZRANGEBYSCORE | ZREVRANGEBYSCORE] key min max [WITHSCORES] [LIMIT offset count]
ZREMRANGEBYSCORE key min max
ZREMRANGEBYRANK key start stop