通用命令
名字 | 用途 |
---|---|
del | 删除自定key的缓存 |
exists | 判断key是否存在,可以指定多个key数,返回存在个数 |
expire | 设置key的过期时间 |
ttl | 查看key 还有多少秒过期,-1不会过期,-2不存在该key |
keys | 模式匹配key的名字,返回匹配的key名字 ,需要扫描所有key,谨慎使用 |
move | 将指定的key移动到其他数据库 |
rename | 重命名key名字 |
renamenx | 当名字不存在时,才允许重命名 |
type | 查看key的类型 |
dbsize | 获取key个数 |
字符串类型
应用
- 缓存
业务程序在查询数据库时,先查询缓存,如果缓存存在立即返回数据。否则进行数据库查询,缓存查询结果,下一次进行相同的查询能从缓存返回。 - 计数器
浏览量、点击量,热点指数等计数器 - 生成自增唯一id
由于redis是单进程的,请求是排队执行的。所以可以用作唯一id生成器。在mysql对表进行分片场景中,插入数据行时,利用redis生成自增id,可以保证id在所有分片中是唯一的,并且在一个分片内,主键id是自增的。
命令
名字 | 用途 |
---|---|
set key value [ex] [xx|nx] | 设置一个key,value键值对 |
mset k1 v1 [k2 v2 k3 v3…] | 批量设置多个key,value键值对 |
setnx key value | 不存在时,创建key value键值对,相当于插入 |
setxx key value | 存在时,更新value数值 ,相当于更新 |
get key | 获取key的数值 |
mget k1 [k2 k3 k4 …] | 批量获取数值 |
incr key | 设置key数值自增加1 |
decr key | 设置key数值递减1 |
incrby key number | 设置key增加 number |
decrby key number | 设置key减少number |
append key string | 字符串追加 |
strlen key | 返回字符串长度 |
getset key value | 返回kkey的数值,并且重新设置为value |
incrbyfloat key floatNum | 对key数值,自增长一个浮点数 |
getrange key start end | 返回key对应字符串,从start开始,到end 结束的子字符串 |
setrange key start value | 从字符串start位置开始,依次覆盖设置为value字符串 |
哈希
应用
- 用于保存数据库中的一行数据,key是主键,field是字段,value是字段对应的数值
命令
名字 | 用途 |
---|---|
hset key field value | 设置hash表key中的field字段为value |
hsetnx key field value | 设置hash表key中的field字段为value,当field不存在时,才能设置,只能插入新的属性 |
hget key field | 获取hash表张field字段的数值 |
hdel key field | 删除hash表key中field字段 |
hlen key | 放回hash表key的字段数 |
hmset key field1 value1 [field2 value2 …] | 批量设置hash表key的字段数值 |
hmget key field1 [field2 field3] | 批量获取hash表key字段数值 |
hgetall key | 获取hash表中所有字段数值对 |
hkey key | 获取hash表中所有字段名字 |
hval key | 获取hash表中所有数值 |
hexists key field | 判断hash表field字段是否存在 |
hincre key field | 自增加hash表中的field字段数值 |
列表
应用
- time-line 时间轴
在微博应用中,能够按时间线展示已关注博主发布的内容。当某个博主发布新的消息时,会将消息push到,已关注粉丝的队列头部。 - 实现某些些数据结构
lpush + lpop = 栈
lpush + rpop = 队列
lpush + ltrim = 固定长度的列表
lpush + brpop = 消息队列
命令
名字 | 用途 |
---|---|
lpush key value | 在队列左边插入数据 |
rpush key value | 在队列右边插入数据 |
linsert key <before|after> exists_value value | 在指定元素前面或者后面插入数据 |
lpop key, rpop key | 在队列的左边或者右边弹出数据 |
blpop key timeout , brpop key timeout | 在队列的左边或者右边阻塞弹出数据, 直到有数据返回或者超时结束,timeout等于0会一直阻塞 |
lrange key start end | 返回队列指定开始位置和结束位置的元素 |
lindex | 根据队列下表获取元素 |
llen | 获取队列长度 |
lrem key value count | 删除队列中自定元素,0删除全部,-n从右边开始删除n个,n从左边开始删除n个 |
ltrim key start end | 截取队列从star开始到end结束的元素 |
lset key index value | 根据列表下标,更新队列元素 |
集合
应用
- 标签
文章,视频等资源类型的标签 - 抽奖
把参与抽奖的用户都添加到一个集合中,通过随机从集合中返回一个用户,得到中奖的用户 - 共同关注
A用户把关注的博主保存到集合A,B用户把关注的博主保存到集合B,通过集合A与集合B做交集运行,得到共同关注
命令
名字 | 用途 |
---|---|
sadd key m1 m2 m3 … | 向集合key添加元素 |
srem key m1 | 从集合中删除元素 |
sismember key m1 | 判断集合key中是否有元素m1 |
smembers key | 返回集合中的所有元素 |
srandmember key count | 随机返回集合中的count个元素 |
spop key | 随机返回集合中的一个元素,并从集合中移除 |
scard key | 返回集合元素个数 |
sinner key1 key2 | 集合key1与集合key2 做交集运算 |
sdiff key1 key2 | 集合key1与集合key2 做差集运算 |
sunion key1 key2 | 集合key1与集合key2 做并集运算 |
有序集合
应用
- 排行榜
例如点赞排行榜,音乐排行榜
命令
名字 | 用途 |
---|---|
zadd key [NX|XX] score memnber | 向有序集合中添加成员 |
zcard key | 集合元素个数 |
zrange key start end [withscores] | 按照排名获取元素 |
zrangebyscore key low_score height_score | 按照分值获取元素 |
zrank key member | 获取元素的排名 |
zscore key member | 获取元素的分值 |
zincrby key score member | 改变元素分值 |
zrem key member | 从集合中移除元素 |
zremrangebyrank key start end | 按照排名范围移除元素 |
zremrangebyscore key low_score height_score | 按照分值范围移除元素 |