数据类型 | 数据结构(及对应源码文件) | 常用命令 | 命令备注 |
DEL | 删除 | ||
DUMP | 序列化 | ||
EXISTS | 是否存在 | ||
EXPIRE | EXPIRE key seconds,设置过期时间 | ||
EXPIREAT | EXPIREAT key timestamp 设置过期时间 | ||
PEXIPIRE | 设置过期时间,毫秒 | ||
KEYS | 查找所有符合给定模式( pattern)的 key | ||
MOVE | 将当前数据库的 key 移动到给定的数据库 db 当中 | ||
PERSIST | 移除 key 的过期时间,key 将持久保持 | ||
PTTL | 以毫秒为单位返回 key 的剩余的过期时间 | ||
TTL | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live) | ||
RANDOMKEY | 从当前数据库中随机返回一个 key | ||
RENAME | 修改 key 的名称 | ||
RENAMENX | 仅当 newkey 不存在时,将 key 改名为 newkey | ||
TYPE | 返回 key 所储存的值的类型 | ||
list | 双向链表,adlist.c 和 adlist.h | LPUSH | 插入到list头部,list不存在则创建 |
RPUSH | 插入到list尾部,list不存在则创建 | ||
LPUSHX | 向已知list头部插入数据 | ||
RPUSHX | 已知list尾部插入数据 | ||
LPOP | 取list第一个数据 | ||
RPOP | 取list最后一个数据 | ||
LLEN | list的长度 | ||
LRANGE | 按下标,key 的列表里指定范围内的元素 | ||
LREM | 从存于 key 的列表里移除前 count 次出现的值为 value 的元素 | ||
LINDEX | 返回列表里的元素的索引 index 存储在 key 里面 | ||
LSET | 设置 index 位置的list元素的值为 value | ||
LTRIM | 修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。 | ||
LINSERT | 把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面 | ||
RPOPLPUSH | 原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部) | ||
BLPOP | BLPOP 是阻塞式列表的弹出原语。 它是命令 LPOP 的阻塞版本,这是因为当给定列表内没有任何元素可供弹出的时候, 连接将被 BLPOP 命令阻塞 | ||
BRPOP | BRPOP 是一个阻塞的列表弹出原语。 它是 RPOP 的阻塞版本,因为这个命令会在给定list无法弹出任何元素的时候阻塞连接。 | ||
BRPOPLPUSH | BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本。 | ||
动态字符串 | sds.c 和 sds.h,bitops.c | SET | 设置指定 key 的值 |
GET | 获取指定 key 的值 | ||
GETRANGE | 返回 key 中字符串值的子字符 | ||
GETSET | 将给定 key 的值设为 value ,并返回 key 的旧值(old value) | ||
GETBIT | GETBIT key offset对 key 所储存的字符串值,获取指定偏移量上的位(bit) | ||
MGET | 获取所有(一个或多个)给定 key 的值 | ||
SETBIT | SETBIT key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 | ||
SETEX | SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 | ||
SETNX | SETNX key value 只有在 key 不存在时设置 key 的值 | ||
SETRANGE | 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 | ||
STRLEN | 返回 key 所储存的字符串值的长度 | ||
MSET | 同时设置一个或多个 key-value 对 | ||
MSETNX | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在 | ||
PSETEX | 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间 | ||
INCR | 将 key 中储存的数字值增一 | ||
INCRBY | 将 key 所储存的值加上给定的增量值(increment) | ||
INCRBYFLOAT | 将 key 所储存的值加上给定的浮点增量值(increment) | ||
DECR | 将 key 中储存的数字值减一 | ||
DECRBY | key 所储存的值减去给定的减量值(decrement) | ||
BITCOUNT | BITCOUNT key [start] [end]:BITCOUNT key 用来获取 key 的值中二进制是 1 的个数。 | ||
BITOP | BITOP operation resultKey key1 key2。operation 是位运算的操作,有 AND,OR,XOR,NOT。resultKey 是把运算结构存储在这个 key 中,key1 和 key2 是参与运算的 key,参与运算的 key 可以指定多个 | ||
APPEND | 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。 | ||
dict.c 和 dict.h | HDEL | 删除一个或多个哈希表字段 | |
HEXISTS | 查看哈希表 key 中,指定的字段是否存在 | ||
HGET | 获取存储在哈希表中指定字段的值 | ||
HGETALL | 获取在哈希表中指定 key 的所有字段和值 | ||
HINCRBY | 为哈希表 key 中的指定字段的整数值加上增量 increment | ||
HINCRBYFLOAT | 为哈希表 key 中的指定字段的浮点数值加上增量 increment | ||
HKEYS | 获取所有哈希表中的字段 | ||
HLEN | 获取哈希表中字段的数量 | ||
HMGET | 获取所有给定字段的值 | ||
HMSET | 同时将多个 field-value (域-值)对设置到哈希表 key 中 | ||
HSET | 将哈希表 key 中的字段 field 的值设为 value | ||
HSETNX | 只有在字段 field 不存在时,设置哈希表字段的值 | ||
HVALS | 获取哈希表中所有值 | ||
HSCAN | HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对 | ||
SET | t_set.c 和 server.h | SADD | 向集合添加一个或多个成员 |
SCARD | 获取集合的成员数 | ||
SDIFF | 返回给定所有集合的差集 | ||
SDIFFSTORE | SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中 | ||
SINTER | 返回给定所有集合的交集 | ||
SINTERSTORE | 返回给定所有集合的交集并存储在 destination 中 | ||
SISMEMBER | 判断 member 元素是否是集合 key 的成员 | ||
SMEMBERS | 返回集合中的所有成员 | ||
SMOVE | 将 member 元素从 source 集合移动到 destination 集合 | ||
SPOP | 移除并返回集合中的一个随机元素 | ||
SRANDMEMBER | 返回集合中一个或多个随机数 | ||
SREM | 移除集合中一个或多个成员 | ||
SUNION | 返回所有给定集合的并集 | ||
SUNIONSTORE | 所有给定集合的并集存储在 destination 集合中 | ||
SSCAN | SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素 | ||
有序集合 | 跳表,t_zset.c 和 server.h | ZADD | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
ZCARD | 获取有序集合的成员数 | ||
ZCOUNT | 计算在有序集合中指定区间分数的成员数 | ||
ZINCRBY | 有序集合中对指定成员的分数加上增量 increment | ||
ZINTERSTORE | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 | ||
ZLEXCOUNT | 在有序集合中计算指定字典区间内成员数量 | ||
ZRANGE | 通过索引区间返回有序集合成指定区间内的成员 | ||
ZRANGEBYLEX | 通过字典区间返回有序集合的成员 | ||
ZRANGEBYSCORE | 通过分数返回有序集合指定区间内的成员 | ||
ZRANK | 返回有序集合中指定成员的索引 | ||
ZREM | 移除有序集合中的一个或多个成员 | ||
ZREMRANGEBYLEX | 移除有序集合中给定的字典区间的所有成员 | ||
ZREMRANGEBYRANK | 移除有序集合中给定的排名区间的所有成员 | ||
ZREMRANGEBYSCORE | 移除有序集合中给定的分数区间的所有成员 | ||
ZREVRANGE | 返回有序集中指定区间内的成员,通过索引,分数从高到底 | ||
ZREVRANGEBYSCORE | 返回有序集中指定分数区间内的成员,分数从高到低排序 | ||
ZREVRANK | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 | ||
ZSCORE | 返回有序集中,成员的分数值 | ||
ZUNIONSTORE | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 | ||
ZSCAN | ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值) | ||
hyperloglog | hyperloglog.c | PFADD | PFADD key element [element ...] 添加指定元素到 HyperLogLog 中 |
PFCOUNT | PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值。 | ||
PFMERGE | PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog | ||
redis 发布订阅 | PSUBSCRIBE | PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 | |
PUBSUB | PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态 | ||
PUBLISH | PUBLISH channel message 将信息发送到指定的频道 | ||
PUNSUBSCRIBE | PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道 | ||
SUBSCRIBE | SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息 | ||
UNSUBSCRIBE | UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道 | ||
事务 | DISCARD | 取消事务,放弃执行事务块内的所有命令 | |
EXEC | 执行所有事务块内的命令 | ||
MULTI | 标记一个事务块的开始 | ||
UNWATCH | 取消 WATCH 命令对所有 key 的监视 | ||
WATCH | 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断 | ||
脚本 | EVAL | 执行 Lua 脚本 | |
EVALSHA | 执行 Lua 脚本 | ||
SCRIPT EXIST | 查看指定的脚本是否已经被保存在缓存当中 | ||
SCRIPT FLUSH | 从脚本缓存中移除所有脚本 | ||
SCRIPT KILL | 杀死当前正在运行的 Lua 脚本 | ||
SCRIPT LOAD | 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本 | ||
连接 | AUTH | 验证密码是否正确 | |
ECHO | 打印字符串 | ||
PING | 查看服务是否运行 | ||
QUIT | 关闭当前连接 | ||
SELECT | 切换到指定的数据库 | ||
服务器 | BGREWRITEAOF | 异步执行一个 AOF(AppendOnly File) 文件重写操作 | |
BGSAVE | 在后台异步保存当前数据库的数据到磁盘 | ||
CLIENT KILL [ip:port] [ID client-id] | 关闭客户端连接 | ||
CLIENT LIST | 获取连接到服务器的客户端连接列表 | ||
CLIENT GETNAME | 获取连接的名称 | ||
CLIENT PAUSE timeout | 在指定时间内终止运行来自客户端的命令 | ||
CLIENT SETNAME connection-name | 设置当前连接的名称 | ||
CLUSTER SLOTS | 获取集群节点的映射数组 | ||
COMMAND | 获取 Redis 命令详情数组 | ||
COMMAND COUNT | 获取 Redis 命令总数 | ||
COMMAND GETKEYS | 获取给定命令的所有键 | ||
TIME | 返回当前服务器时间 | ||
COMMAND INFO command-name [command-name ...] | 获取指定 Redis 命令描述的数组 | ||
CONFIG GET parameter | 获取指定配置参数的值 | ||
CONFIG REWRITE | 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写 | ||
CONFIG SET parameter value | 修改 redis 配置参数,无需重启 | ||
CONFIG RESETSTAT | 重置 INFO 命令中的某些统计数据 | ||
DBSIZE | 返回当前数据库的 key 的数量 | ||
DEBUG OBJECT key | 获取 key 的调试信息 | ||
DEBUG SEGFAULT | 让 Redis 服务崩溃 | ||
FLUSHALL | 删除所有数据库的所有key | ||
FLUSHDB | 删除当前数据库的所有key | ||
INFO [section] | 获取 Redis 服务器的各种信息和统计数值 | ||
LASTSAVE | 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示 | ||
MONITOR | 实时打印出 Redis 服务器接收到的命令,调试用 | ||
ROLE | 返回主从实例所属的角色 | ||
SAVE | 同步保存数据到硬盘 | ||
SHUTDOWN | 异步保存数据到硬盘,并关闭服务器 | ||
SLAVEOF host port | 将当前服务器转变为指定服务器的从属服务器(slave server) | ||
SLOWLOG subcommand [argument] | 管理 redis 的慢日志 | ||
SYNC | 用于复制功能(replication)的内部命令 | ||
geo | geo.h 和 geo.c | geoadd | (纬度、经度、名称)三元组 |
geodist | 计算两个元素之间的距离 | ||
geopos | 获取集合中任意元素的经纬度坐标,可以一次获取多个 | ||
geohash | 获取元素经纬度坐标经过geohash算法生成的base32编码值 | ||
georadiusbymember | 查询指定元素附近的其它元素 | ||
georadius | 根据坐标点查找附近位置的元素 |
分布式锁的实现方法,参考
https://www.cnblogs.com/0201zcr/p/5942748.html
lua脚本实现的锁
https://www.cnblogs.com/number7/p/8320259.html
hyperloglog的实现原理
https://www.cnblogs.com/linguanh/p/10460421.html
https://www.jianshu.com/p/55defda6dcd2
https://www.cnblogs.com/Jace06/p/8316809.html
稀疏存储结构
https://cloud.tencent.com/developer/article/1349691
用redis统计PV,UV, IP的用法
https://blog.csdn.net/zuozhiyoulaisam/article/details/93895833
我们为什么要用redis
http://ifeve.com/%E6%88%91%E4%BB%AC%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E7%94%A8redis/