Redis 的五种数据结构及其应用场景
Redis官方文档链接:https://redis.io/commands 中文文档:http://redisdoc.com/
一、字符串
命令 | 解释 |
---|---|
SET key value | 存入字符串键值对 |
MSET key value [key value …] | 批量存储字符串键值对 |
SETNX key value | 存入一个不存在的字符串键值对 |
GET key | 获取一个字符串键值 |
MGET key [key …] | 批量获取字符串键值 |
DEL key [key …] | 删除一个键 |
EXPIRE key seconds | 设置一个键的过期时间(秒) |
INCR key | 将key中储存的数字值加1 |
DECR key | 将key中储存的数字值减1 |
INCRBY key increment | 将key所储存的值加上increment |
DECRBY key decrement | 将key所储存的值减去decrement |
应用场景
-
单值缓存
SET key value GET key
-
对象存储
直接存储对象
SET user:1 "{"name":"zhangsan","age":18}" GET user:1
拆分对象存储
MSET user:1:name zhangsan user:1:age 18 MGET user:1:name user:1:age
-
分布式锁
加锁 SETNX product:10001 true // 第一次执行,返回1代表获取锁成功 SETNX product:10001 true // 再次执行,返回0代表获取锁失败 删锁 DEL product:10001 // 执行完业务释放锁,防止过期不存在可以使用lua脚本 加锁时设置超时时间 SET product:10001 true ex 10 nx // 防止程序意外终止导致死锁
-
分布式系统全局流水
INCRBY id 2000 // redis 批量生成序列号提升性能
-
计数器
例如微信推文的阅读量、视频播放量等 INCR article:readcount:{ 文章id} GET article:readcount:{ 文章id}
-
Web集群 session 共享
spring session 提供了通过 Redis 设置 session 共享的功能
二、Hash
命令 | 解释 |
---|---|
HSET key field value | 存储一个哈希表key的键值 |
HSETNX key field value | 存储一个不存在的哈希表key的键值 |
HMSET key field value [field value …] | 在一个哈希表k |