redis为用户定义了五种数据类型,分别是:
String(字符串),Hash(哈希),List(列表),Set(集合),ZSet(有序集合),并且为这些数据类型提供了大量的命令,这些命令都是原子级别的。虽然大都数情况,我们不会直接用这些原生的命令,但是熟悉这些命令,会让我们对redis有一个更好的了解,而且很多语言对redis的访问的API,都是基于这些命令开发的,掌握这些命令以后对特定语言的API将会得心应手。
1. 字符串
命令格式 | 说明 |
---|---|
set key value | 赋值 |
get key | 取值 |
setnx key value | (Set if Not Exist)只有在 key 不存在时设置 key 的值 |
setrange key offset value | 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始 |
getrange key start end | 返回 key 中字符串值的子字符 |
getset key value | 将给定 key 的值设为 value ,并返回 key 的旧值 |
incr key | 递增数字 |
incrby key increment | 增加指定的整数 |
decr key | 减少数字 |
decrby key increment | 减少指定的整数 |
incrbyfloat key increment | 增加指定浮点数 |
append key value | 向尾部追加值 |
strlen key | 获取字符串长度 |
mget key [key …] | 一次获取多个键值 |
mset key value [key value…] | 一次设置多个键值 |
getbit key offset | 获取键值得指定二进制位的值 |
setbit key offset value | 设置键值得指定二进制位的值 |
bitcount key [start] [end] | 获取键值中位是1的二进制位的个数 |
bitop operation destkey key [key …] | 对指定的键值做二进制的位运算,结果保存在destkey中,支持AND, OR, XOR, NOT |
setex key seconds value | (Set Expire)将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位) |
psetex key milliseconds value | (Precise Set Expire)这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位 |
2. 哈希
命令格式 | 说明 |
---|---|
hget key field | 取值 |
hset key field value | 赋值 |
hmget key filed [field …] | 一次获取多个值 |
hmset key filed value [filed value…] | 一次设置多个值 |
hgetall key | 一次获取所有的值 |
hexists key field | 判断字段是否存在 |
hsetnx key field value | 当字段不存在时赋值 |
hincrby key field increment | 增加数字 |
hdel key field | 删除字段 |
hkeys key | 获得字段名 |
hvals key | 获取字段值 |
hlen key | 获取字段数量 |
HINCRBYFLOAT key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 |
3. 列表
命令格式 | 说明 |
---|---|
LPUSH key value [value …] | 向列表左端添加数据 |
RPUSH key value [value …] | 向列表右端添加数据 |
LPOP key | 从列表左端弹出数据 |
RPOP key | 从列表右端弹出数据 |
LLEN key | 获取列表元素格式 |
LRANGE key start stop | 获取列表片段 |
LREM key count value | 删除列表指定值得元素 |
LINDEX key index | 获取指定索引的元素 |
LSET key index value | 设置指定索引的元素值 |
LINSERT key before|after pivot value | 在指定元素前后插入元素 |
RPOPLPUSH source destination | 将元素从一个列表转移到另一个列表 |
LPUSHX key value | (List Push if exist)将一个或多个值插入到已存在的列表头部 |
LTRIM key start stop | 只保留指定区间内的元素,不在指定区间之内的元素都将被删除 |
BLPOP key1 [key2… ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止,如果timeout为0则一直等待下去 |
BRPOP key1 [key2… ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止,如果timeout为0则一直等待下去 |
4. 集合
命令格式 | 说明 |
---|---|
SADD key member [member …] | 增加元素 |
SREM key member [member …] | 删除元素 |
SMEMBERS | 获取集合中的所有元素 |
SISMEMBER key member | 判断集合中的元素是否存在 |
SDIFF key [key …] | 差集 |
SINTER key [key …] | 交集 |
SUNION key [key …] | 并集 |
SCARD key | 获得集合中元素个数 |
SDIFFSTORE dest key [key …] | 差集存储结果于dest |
SINTERSTORE dest key [key …] | 交集存储结果于dest |
SUNIONSTORE key [key …] | 并集存储结果于dest |
SRANDMEMBER key [count] | 随机从集合中获得元素 |
SPOP key | 随机从集合中弹出一个元素 |
SMOVE source destination member | 将member元素从source集合移动到destination集合 |
5. 有序集合
命令格式 | 说明 |
---|---|
ZADD key score1 member1 [score2 member2 …] | 添加一个或多个成员到有序集合,或者如果它已经存在更新其分数 |
ZSCORE key member | 获取元素分数 |
ZRANGE key start stop [withscores] | 获取某个范围内的元素列表 |
ZREVRANGE key start stop [withscores] | 逆序获取某个范围内的列表 |
ZRANGEBYSCORE key min max [withscores] [limit offset count] | 集合(升序)排序后取score在[min, max]内的元素,并跳过offset个,取出n个 |
ZINCRBY key increment member | 增加某个元素的分数 |
ZCARD key | 获取元素个数 |
ZCOUNT key min max | 统计指定范围内的元素个数 |
ZREM key member [member …] | 删除一个或多个元素 |
ZREMRANGEBYRANK key start stop | 删除排名范围内的元素 |
ZREMRANGEBYStore key min max | 删除分数范围内的元素 |
ZRANK key member | 获得元素排名 |
ZREVRANK key member | 获得元素逆序排名 |
ZINTERSTORE destination numkeys key [key …] [weights weight [weight …]] [aggregate sum|min|max] | 计算有序结合的交集 |
6. 其他
命令格式 | 说明 |
---|---|
KEYS PATTERN | 获取符合规则的键名列表,pattern支持global风格的通配符号:?,*,[],\x |
EXISTS key | 判断一个键是否存在 |
DEL key | 删除键 |
TYPE key | 获取键的类型 |
global类型的通配符规则
符号 | 含义 |
---|---|
? | 通配一个字符 |
* | 匹配0个或多个字符 |
[] | 匹配一个范围的字符,比如[a-d],可以匹配abcd中任意一个字符 |
\x | 匹配专意字符x,比如要匹配?,可以使用? |