Redis常用命令以及应用场景
分类:redis数据库
标签:redis数据redis操作redisredis应用
2020-04-10 07:24:38.0
阅读原文
如果存储序已经列化的对象,可以使用如下格式的key
User::id::{id}
缓存
1.可用来缓存对象,将对象序列化为字符串后,使用格式如User::id::{id}
的key存储获取。可使用到命令:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET key
例如:
SET User::id::0001 {"id": 0001, "name": "yawn", "age": 18}
2.如果不序列化对象,也可以使用redis的hash类型进行存储和获取:
HSET key field value
HGET key field
key 依然使用User::id::{id}
的格式,如下:
HSET User::id::0001 id 0001;
HSET User::id::0001 name yawn;
HSET User::id::0001 age 18;
分布式锁
可使用如下命令实现分布式锁:
SETNX key value; # 获取锁
EXPIRE key seconds; # 设置持有锁的最大时间
DEL key; # 释放锁
SETNX 在key不存在时才能设置成功,可以用来实现分布式锁。
计数器
实现浏览量、点击量计数器,value时数值类型,可以进行增减运算。
SET key value
INCR key # 计数器加1
DECR key # 计数器减一
INCRBY key increment
DECRBY key decrement
GET key # 获取计数
INCR可使value自增1,并返回。
分布式全局序列
分布式全局序列,即产生多个应用中不重复的序列,例如uuid等,也可以用redis实现。
SET key value
INCR key # 获取一个序列
INCRBY key increment # 获取多个序列
可将value设置为数值型,然后每次获取时自增即可。
随机抽奖
随机抽奖可以使用set类型实现。
SPOP key [count] # 随机移除并返回集合中count个值
SRANDMEMBER key [count] # 同上,但不移除
用户点赞、签到
用户点赞、签到功能的实现,可将点赞的用户放到同一个set中。
SADD key number [member ...] # 点赞
SCARD key # 返回点赞的数量
SISMEMBER key member # 某用户是否点赞
SMEMBERS key # 返回所有成员
共同好友功能
共同好友功能,将A和B两个用户的好友分别使用两个set存储,则可以通过关系运算,计算出好友之间的关系。
SUNION key [key ...] # 多个集合的并集
SUNIONSTORE destination key [key ...] # 多个集合的并集并存储在destination中
SINTER key [key ...] # 交集
SINTERSTORE destination key [key ...]
SDIFF key [key ...] # 差集
SDIFFSTORE destionation key [key ...]
例如:
SUNION key [key ...] #
SINTER key [key ...] # 共同好友
SDIFF key [key ...] # 可能认识的人
用户消息列表
用户消息列表,给每个用户维护一个未读消息的列表,阅读之后就移出去。
LPUSH key value [value ...] # 将多个值依次插入到表头
LRANGE key start stop # 返回start和stop之间的元素
LLEN key # 返回list的长度
RPUSH key value [value ...]
RPOP key
新闻热度排行
使用zset做新闻热度排行榜,score为某新闻关键词的热度。
zincrby key 1 # 热度增加1
zrevrange key 0 10 withscores # 获取索引区间内的元素(热度排行前十)
zrevrangebyscore key 999 100 withscores # 获取分数区间内的元素,格式是zrevrangebyscore zset的key 终止score 起始score
分类:redis数据库
标签:redis数据redis操作redisredis应用
原文链接:
Redis常用命令以及应用场景
2020-04-10 07:24:38.0