redis 应用场景

middleware0 2020-07-19

redis应用场景:

一.string

1.缓存

简单key-value存储

2.分布式锁

setnx key value,当key不存在时,将 key 的值设为 value ,返回1

若给定的 key 已经存在,则setnx不做任何动作,返回0。

当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败。

3.计数器

如知乎每个问题的被浏览器次数

redis 应用场景
set key 0 
incr key // incr readcount::{帖子id} 每阅读一次 
get key // get readcount::{帖子id} 获取阅读量 
二.hash
比如我们要存储用户信息,ID、姓名、电话、年龄、身高 ,怎么存储?
key = userdata用户ID
hashKey = 姓名,value = xx
hashKey = 电话,value = xx
hashKey = 年龄,value = xx
hashKey = 身高,value = xx
查询时,取出key即可。
//新增
$redis->hSet(key, hashKey, value);
$redis->hSet(key, hashKey, value);
$redis->hSet(key, hashKey, value);
//编辑
$redis->hSet(key, hashKey, value);
//查询
$redis->hGetAll(key); //查询所有属性
$redis->hGet(key, hashKey); //查询某个属性
三.list
队列:比如实现一个简单的日志收集功能或发送大量短信、邮件的功能,实现方式是先将数据收集到队列中,然后有一个定时任务去消耗队列,处理该做的事情。
直接使用redis的rpush,lpop和lpush,rpop
//进队列
$redis->lpush(key, value);
//出队列
$redis->rpop(key);  
四.set
可以基于set做交集,并集,差集的操作。如把2个人的粉丝列表弄一个交集,就能看到两个人的共同好友是谁
1.实现点赞,签到,like等功能
//1001用户给8001帖子点赞 sadd like::8001 1001 
srem like::8001 1001 //取消点赞 
sismember like::8001 1001 //检查用户是否点过赞 
smembers like::8001 //获取点赞的用户列表 
scard like::8001 //获取点赞用户数 
2.电商商品筛选:每个商品入库的时候即会建立他的静态标签列表如,品牌,尺寸,处理器,内存
// 将拯救者y700P-001和ThinkPad-T480这两个元素放到集合brand::lenovo 
sadd brand::lenovo 拯救者y700P-001 ThinkPad-T480 
sadd screenSize::15.6 拯救者y700P-001 机械革命Z2AIR 
sadd processor::i7 拯救者y700P-001 机械革命X8TIPlus 
 
// 获取品牌为联想,屏幕尺寸为15.6,并且处理器为i7的电脑品牌(sinter为获取集合的交集) 
sinter brand::lenovo screenSize::15.6 processor::i7 -> 拯救者y700P-001 
五.zset
排序的set,可以去重还可以排序,写进去的时候给一个分数,自动根据根据分数排序,分数可以自定义排序规则
redis的zset天生是用来做排行榜的、好友列表, 去重, 历史记录等业务需求
// user1的用户分数为 10 
zadd ranking 10 user1 
zadd ranking 20 user2 
// 取分数最高的3个用户 
zrevrange ranking 0 2 withscores

相关推荐

DiamondTao / 0评论 2020-08-30