数据类型
String
类型
字符串
简介
一种二进制安全的数据类型
特性
可以包含任何数据,比如jpg图片或者序列化对象,一个键最大能存储512M
场景
大部分使用Redis的场景都适用
Hash
类型
字典
简介
键值对集合,即Map类型
特性
适合存储对象,并且可以像数据库中update一个属性一样只修改一项属性值
场景
存储、读取、修改用户属性
List
类型
列表
简介
链表(双向链表)
特性
增删快,提供了操作某一段段苏的API
场景
- 最新消息排行榜功能(比如朋友圈时间线)
- 消息队列
Set
类型
集合
简介
哈希表实现,元素不可重复
特性
- 添加、删除、查找的复杂度都是O(1)
- 为集合提供了求交集、并集、差集等操作
场景
- 共同好友
- 利用唯一性,统计访问网站的所有独立ip
- 好友推荐时,根据tag求交集,大于某个阈值就可以推荐
ZSet
类型
有序集合,即Sorted Set
简介
将Set中的元素增加一个权重参数score,元素按score有序排列
特性
数据插入集合时,已经进行天然排序
场景
- 排行榜
- 带权重的消息队列
命令
PING
ping
检测是否可以连接通Redis
返回PONG
SELECT
select [index]
选择所使用的redis库,默认使用0号
Redis 键(Key)
DEL
del [key]
在redis中删除键
DUMP
dump [key]
查看序列化后的该键的值
EXISTS
exists [key]
判断键是否存在
EXPIRE
expire [key] [seconds]
给键设置可用时间,以秒计时
EXPIREAT
expireat [key] [timestamp]
给键设置过期时间,截至时间为时间戳
KEYS
keys [pattern]
根据pattern进行筛选键值,keys * 可以查看所有的键
PERSIST
persist [key]
移除key的过期时间,已经过期的不能移除
TTL
ttl [key]
查看键的过期时间,未设置则返回-1,过期了则返回-2
PTTL
pttl [key]
查看键的过期时间,返回毫秒
RANDOMKEY
randomkey
随机返回一个键
RENAME
rename [key] [new key]
修改键名
RENAMENX
renamenx [key] [new key]
只有当new key 不存在时才可以重命名成功
TYPE
type [key]
查看键的类型
FLUSHDB
flushdb
清空当前库
Redis 字符串(String)
SET
set [key] [value]
在redis中设置键
GET
get [key]
在redis中查看键的值
GETRANGE
getrange [key] [start] [end]
查看键的第几位到第几位,从0开始,开区间[0, 4]
GETSET
getset [key] [value]
设置键的值,并返回键的旧值
MGET
mget [key] [key] …
获取一个或多个key的值
SETEX
setex [key] [seconds] [value]
设置键的有效时长和值
SETNX
setnx [key] [value]
只有当键不存在的时候才可以设 置
STRLEN
strlen [key]
返回key的长度
MSET
mset [key] [value] [key] [value] …
批量设置键和值
MSETNX
msetnx [key] [value] [key] [value]
批量设置键和值,必须所有键都是不存在的时候才可设置成功
INCR
incr [key]
将键的数值进行增一
INCRBY
incrby [key] [increment]
将键的数值进行增给定的增量
INCYBYFLOAT
incrbyfloat [key] [increment]
将键的数值进行增给定的浮点型增量
DECY
decr [key]
将键的数值进行减一
DECRBY
decrby [key] [decrement]
将键的数值进行增给定的减量
APPEND
append [key] [value]
将键的值往后添加value
Redis 哈希(Hash)
HSET
hset [key] [field] [value]
设置键的在哈希表上存储值,例如:
hset user name 张三
user: {
name: 张三
}
HGET
hget [key] [field] [value]
获取键在哈希表上存储的字段值
HGETALL
hgetall [key]
获取该键存在的所有字段和值
HEXISTS
hexists [key] [field]
判断键在哈希表上是否存在字段
HDEL
hdel [key] [field] [field] …
删除键中的给定字段
HINCRBY
hincrby [key] [field] [increment]
为该键的哈希表上某个字段增加增量
HINCRBYFLOAT
hincrbyfloat [key] [field] [increment]
为该键的哈希表上某个字段增加浮点型增量
HKEYS
hkeys [key]
获取键中哈希表的所有字段
HLEN
hlen [key]
获取键中哈希表字段的个数
HMGET
hmget [key] [field] [field] …
获取键中所有给定字段的值
HMSET
hmset [key] [field] [value] [field] [value] …
为键批量设置给定的字段和值
HSETNX
hsetnx [key] [field] [value]
仅当键中该字段没有值的时候才可以设置成功
HVALS
hvals [key]
获取键中的所有字段的值
Redis 列表(List)
LPUSH
lpush [key] [value] [value] [value]
将一个或多个值插入到列表头部
LPUSHX
lpushx [key] [value]
将一个值插入到已经存在的列表头部
LRANGE
lrange [key] [start] [end]
获取列表指定范围内的元素,end为-1则为到最后
LLEN
llen [key]
获取列表长度
LPOP
lpop [key]
移除并获取第一个元素
BLPOP
blpop [key] [key] … [timeout]
移除并获取列表的第一个元素,如果列表没有第一个元素,那么则会等待到超时时长,或列表在时间内存在了第一个元素
BRPOP
brpop [key] [key] … timeout
移除并获取列表的最后一个元素,如果列表没有最后一个元素,那么则会等待到超时时长,或列表在时间内存在了最后一个元素
BRPOPLPUSH
brpoplpush [source] [destination] [timeout]
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
LINDEX
lindex [key] [index]
通过索引获取列表中的元素,从0开始,-1为最后一个
LINSERT
linsert [key] [before/after] [privot] [value]
在列表的元素前或者元素后插入元素,在【列表】【元素前/元素后】【哪个元素】【插入的值】
LREM
lrem [key] [index] [value]
移除列表值的第几个
LTRIM
ltrim [key] [start] [stop]
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
RPOP
rpop [key]
移除并获取最后一个元素
RPUSH
rpush [key] [value] [value] …
将一个或多个值插入到列表尾部
RPUSHX
rpushx [key] [value]
将一个值插入到已经存在的列表头部
RPOPLPUSH
rpoplpush [scoure] [destination]
移除列表的最后一个元素,并将该元素添加到另一个列表并返回
Redis 集合(Set)
SADD
sadd [key] [member] [member] …
向集合添加一个或多个成员
SCARD
scard [key]
获取集中的成员数
SMEMBERS
smembers [key]
获取集合中的所有成员
SRANDMEMBER
srandmember [key] [count]
返回集合中一个或多个成员
SISMEMBER
sismember [key] [value]
判断集合中是否包含某个成员
SDIFF
sdiff [key] [key] …
获取第一个集合和后面集合的差集
SDIFFSTORE
sdiffstore [destination] [key] [key] …
获取第一个集合和后面的集合的差集,保存到destination中
SINTER
sinter [key] [key] …
返回给定所有集合的交集
SINTERSTORE
sinterstore [destination] [key] [key] …
将给定所有集合的交集保存到destination
SMOVE
smove [score] [destination] [member]
将成员从score移动到destination中
SPOP
spop [key] [count]
从集合中随机删除count个成员
SREM
srem [key] [member] [member] …
从集合中删除一个或多个成员
SUNION
sunion [key] [key] …
获取给定集合的并集
SUNIONSTORE
sunionstore [destination] [key] [key] …
将给定集合的并集添加到destination中
Redis 有序集合(sorted set)
ZADD
zadd [key] [score] [member] [score] [member] …
向有序集合中添加一个或多个成员,或更行已存在成员的分数
ZCARD
zcard [key]
获取有序集合的成员数
ZCOUNT
zcount [key] [min] [max]
获取在指定分数区间的成员数
ZINCRBY
zincrby [key] [increment] [member]
有序集合中对指定成员的分数加上增量increment
ZINTERSTORE
zinterstore [destination] [numkeys] [key] [key] …
计算一个或多个有序集合的交集,其中给定key 的数量有numkeys决定,并将该交集存储在destination中,默认情况下,destination中成员的score为给定集合中该成员的和
ZRANGE
zrange [key] [start] [end] [WITHSCORES]
返回有序集合中,指定区间的成员,加上WITHSCORES可以展示出成员的score
ZRANGEBYSCORE
zrangebyscore [key] [main] [max] [WITHSCORES]
返回有序集合中,根据score返回在此区间的成员
ZRANK
zrank [key] [member]
获取指定成员的索引
ZREM
zrem [key] [member] [member] …
移除一个或多个成员
ZREMRANGEBYRANK
zremrangebyrank [key] [start] [stop]
移除有序集合中给定排名区间的所有成员
ZREMRANGEBYSCORE
zremrangebyscore [key] [min] [max]
移除有序集合中给定分数区间的成员
ZREVRANGE
zrevrange [key] [start] [stop] [WITHSCORES]
返回有序集合中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE
zrevrangebyscore [key] [max] [min] [WITHSCORES]
返回有序集合中指定分数区间内的成员,分数从高到底排序
ZREVRANK
zrevrank [key] [member]
返回有序集合中指定成员的排名,有序集合成员按分数值从大到小排序
ZSCORE
zscore [key] [member]
返回有序集合中,成员的分数值
ZUNIONSTORE
zunionstore destination numkeys [key] [key] …
返回给定有序集合的并集,并存储到destination中