概念
Redis是一个远程内存数据库,提供了5种不同类型的数据结构,帮助用户解决问题;
通过复制、持久化、客户端分片等特性,可以方便地将Redis扩展成一个包含数百GB数据、每秒处理上百万次请求的系统
数据结构
结构类型 | 存储值 | 读写能力 |
---|---|---|
string | 字符串、整数、浮点数 | 对整个或部分字符串操作; 对整数、浮点数自增、自减操作; |
list | 一个链表,链表上的每个节点都包含了一个字符串 | 从链表两端推入弹出元素; 根据偏移量对链表修剪; 读取多个元素;根据值查找、移除元素 |
set | 字符串的无序收集器,每个字符串都不相同 | 添加、获取、移除单个元素; 检查元素是否存在; 计算交集、并集、差集;随机获取元素 |
hash | 键值对的无序散列表 | 添加、获取、移除单个键值对; 获取所有键值对 |
zset | 字符串成员与浮点数分值的有序映射,排列顺序由根据分值大小决定 | 添加、获取、删除单个元素; 根据分值、成员获取元素 |
字符串
命令 | 用例 | 描述 |
---|---|---|
INCR | INCR keyname | 该键存储值加1 |
DECR | DECR keyname | 该键存储值减1 |
INCRBY | INCRBY keyname amount | 该键存储值加amount |
DECRBY | DECRBY keyname amount | 该键存储值减amount |
INCRBYFLOAT | INCRBYFLOAT keyname amount | 该键存储值加amount |
APPEND | APPEND keyname value | 将value追加到键值末尾 |
GETRANGE | GETRANGE keyname start end | 获取从start到end所有字符组成的子串 |
SETRANGE | SETRANGE keyname offset value | 设置从start到end的子串为value |
GETBIT | GETBIT keyname offset | 返回位串中偏移量为offset的二进制的值 |
SETBIT | SETBIT keyname offset value | 设置位串中偏移量为offset的二进制的值为value |
BITCOUNT | BITCOUNT keyname [start end] | 统计二进制位串里值为1的二进制位的数量 |
BITOP | BITOP operation dest-key keyname[keyname…] | 对二进制位串执行并/或/异或/非 位运算操作,结果保存在dest-key中 |
列表
命令 | 用例 | 描述 |
---|---|---|
RPUSH | RPUSH keyname value [value …] | 将一个或多个值推入列表右端 |
LPUSH | LPUSH keyname value [value …] | 将一个或多个值推入列表左端 |
RPOP | RPOP keyname | 移除并返回列表最右端的元素 |
LPOP | LPOP keyname | 移除并返回列表最左端的元素 |
LINDEX | LINDEX keyname offset | 返回列表中偏移量为offset的元素 |
LRANGE | LRANGE keyname start end | 返回列表中从start到end的元素 |
LRTIM | LRTIM keyname start end | 保留列表中从start到end的元素 |
BLPOP | BLPOP keyname [keyname …] timeout | 在timeout内阻塞并等待可弹出的元素 |
BRPOP | BRPOP keyname [keyname …] timeout | 在timeout内阻塞并等待可弹出的元素 |
RPOPLPUSH | RPOPLPUSH sourcekey destkey | 从sourcekey列表中弹出最右端的元素,然后推入destkey列表的最左端,并向用户返回这个元素 |
BRPOPLPUSH | BRPOPLPUSH sourcekey destkey timeout | 在timeout内阻塞并等待可弹出的元素,然后从sourcekey弹出,推入到destkey中,并向用户返回这个元素 |
集合
命令 | 用例 | 描述 |
---|---|---|
SADD | SADD keyname item[item…] | 将一个或多个元素添加到集合,并返回被添加进入元素的数量 |
SREM | SREM keyname item[item…] | 从集合移除一个或多个元素,并返回移除元素数量 |
SISMEMBER | SISMEMBER keyname item | 检查item是否存在于集合 |
SCARD | SCARD keyname | 返回集合中元素数量 |
SMEMBERS | SMEMBERS keyname | 返回集合包含的所有元素 |
SRANDMEMBER | SRANDMEMBER keyname [count] | 从集合随机返回一个或多个元素 |
SPOP | SPOP keyname | 随机移除集合中的一个元素,并返回移除的元素 |
SMOVE | SMOVE sourcekey destkey item | 从sourcekey移除item到destkey |
SDIFF | SDIFF keyname [keyname…] | 返回差集 |
SDIFFSTORE | SDIFFSTORE keyname [keyname…] | 将差集存储到destkey中 |
SINTER | SINTER keyname [keyname…] | 返回交集 |
SINTERSTORE | SINTERSTORE destkey keyname [keyname…] | 将交集存储到destkey中 |
SUNION | SUNION keyname [keyname…] | 返回并集 |
SUNIONSTORE | SUNIONSTORE destkey keyname [keyname…] | 将并集存储到destkey中 |
散列
命令 | 用例 | 描述 |
---|---|---|
HMGET | HMGET keyname key [key…] | 从散列中获取一个或多个key的值 |
HMSET | HMSET keyname key value [key valus…] | 为散列中一个或多个key设置值 |
HDEL | HDEL keyname key [key…] | 删除散列中一个或多个键值对,返回成功删除的数量 |
HLEN | HLEN keyname | 返回散列包含的键值对数量 |
HEXISTS | HEXISTS keyname key | 检查key是否存在 |
HKEYS | HKEYS keyname | 获取散列所有key |
HVALS | HVALS keyname | 获取散列所有value |
HGETALL | HGETALL keyname | 获取散列中所有键值对 |
HINCRBY | HINCRBY keyname key increment | 将key存储值加increment |
HINCRBYFLOAT | HINCRBYFLOAT keyname key increment | 将key存储值加increment |
有序集合
命令 | 用例 | 描述 |
---|---|---|
ZADD | ZADD keyname score memeber [score member…] | 将带有给定分值的成员添加到有序集合中 |
ZREM | ZREM keyname member [member…] | 从有序集合中移除给定的成员,返回移除的量 |
ZCARD | ZCARD keyname | 返回有序集合中包含的成员数量 |
ZINCREBY | ZINCREBY keyname increment member | 将member成员的分值加上increment |
ZCOUNT | ZCOUNT keyname min max | 返回分值介于min和max之间的成员变量 |
ZRANK | ZRANK keyname member | 返回成员member在有序集合的排名 |
ZSCORE | ZSCORE keyname member | 返回成员member的分值 |
ZRANGE | ZRANGE keyname start stop [withscores] | 返回有序集合中排名介于start和stop之间的成员 |
ZREVRANK | ZREVRANK keyname member | 返回有序集合member的排名,按照分值从大到小排列 |
ZREVRANGE | ZREVRANGE keyname start stop [withscores] | 返回有序集合给定范围内的成员,按分值排列 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max [withscores] [limit offset count] | 返回有序集合中,分值介于min和max之间的所有成员 |
ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key min max [withscores] [limit offset count] | 获取有序集合中分值介于min和max之间的所有成员,按分值大小返回 |
ZREMRANGEBYRANK | ZREMRANGEBYRANK keyname start stop | 移除有序集合中排名介于min和max之间的所有成员 |
ZREMRANGEBYSCORE | ZREMRANGEBYSCORE keyname min max | 移除有序集合中分值介于min和max之间的所有成员 |
ZINTERSTORE | ZINTERSTORE destkey keycount key [key…] | 对给定的有序集合进行交集运算 |
ZUNIONSTORE | ZUNIONSTORE destkey keycount key [key…] | 对给定的有序集合进行并集运算 |
小结
Redis 是一个高性能的key-value数据库,了解并运用这些API可以在不同的场景解决相应的问题