redis集群架构下不适合大规模使用
列表list list常用操作 LPUSH key value [value ...] //将一个或多个值value插入到key列表的表头(最左边) RPUSH key value [value ...] //将一个或多个值value插入到key列表的表尾(最右边) LPOP key //移除并返回key列表的头元素 RPOP key //移除并返回key列表的尾元素 LRANGE key start stop //返回列表key中指定区间内的元素,区间以偏移量start和stop指定 BLPOP key [key ...] timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待 BRPOP key [key ...] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待 使用list构造数据结构Stack(栈)= lpush+lpop -> FIFO(先进后出,后进先出)
Queue(队列)=lpush+rpop
Blocking MQ(阻塞队列)=LPUSH+BRPOP
List应用场景微信公众号消息
memocoding关注了MacTalk,备胎说车等大V
MacTalk发微博,消息ID为10018
LPUSH msg:{memocoding-ID} 10018备胎说车发微博 消息ID 为10086
LPUSH msg:{memocoding-ID} 10086查看最新微博消息
LRANGE msg:{memocoding-ID} 0 5 集合set 常用操作Set常用操作
SADD key member [member ...] // 往集合key中存入元素 元素存在则忽略 若key不存在则新建 SREM key member [member ...] // 从集合key中删除元素 SMEMBERS key // 获取集合key中所有元素 SISMEMBER key member // 判断member元素是否存在于集合key中 SRANDMEMBER key [count] // 从集合key中选出count个元素 元素不从key中删除 SPOP key [count] // 从集合key中选出count个元素 元素从key中删除Set运算操作
SINTER key [key ...] // 交集运算 SINTERSTORE destination key [key ...] // 将交集结果存入新集合destination中 SUNION key [key ...] // 并集运算 SUNION destination key [key ...] // 将并集结果存入新集合destination中 SDIFF key [key ...] // 差集运算 SDIFFSTORE destination key [key ...] // 将差集结果存入新集合destination中 set应用场景 微信小程序抽奖活动点击参与抽奖加入集合
SADD key {userID}查看参与抽奖所有用户
SMEMBERS key抽取count名中奖者
SRANDMEMBER key [count] // 从集合key中选取count元素,元素不从key中删除 SPOP key [count] //从集合key中选取count元素 元素从key中删除 微信微博点赞 收藏 标签点赞
SADD like:{消息ID} {用户ID}取消点赞
SREM like:{消息ID} {用户ID}检查用户是否点赞
SISMEMBER like:{消息ID} {用户ID}获取点赞的用户列表
SMEMBERS like:{消息ID}获取点赞用户数
SCARD like:{消息ID} 有序集合zset 数据结构ZSet 常用操作
ZADD key score member [[score member] ...] // 往有序集合key中加入带分值元素 ZREM key member [member ...] // 从有序集合key中删除元素 ZScore key member // 返回有序集合key中元素member的分值 ZINCRBY key increment member // 为有序集合key中元素member的分值加上increment ZCARD key // 返回有序集合key中元素个数 ZRANGE key start stop [WITHSCORES] // 正序获取有序集合key从start下标到stop下标的元素 ZREVRANGE start stop [WITHSCORES] // 倒序获取有序集合key从start下标到stop下标的元素ZSet集合操作
ZUNIONSTORE destkey numkeys key [key ...] // 并集计算 destkey: 新生成集合 numkeys:后面所有key的集合数量 ZINTERSTORE destkey numkeys key [key ...] // 交集计算 zset应用场景
ZSet集合操作实现排行榜
点击新闻
ZINCRBY hostNews:20190819 1 守护香港展示当日排行前十
ZREVRANGE hostNews:20190819 0 9 WITHSCORES七日搜索榜单计算
ZUNIONSTORE hostNews:20190813-20190819 7 hostNews:20190813 hostNews:20190814 ... hostNews:20190819展示七日排行前十