zoukankan      html  css  js  c++  java
  • redis 应用场景

    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 
  • 相关阅读:
    thinkphp6查询表达式使用between问题
    机器学习纸质作业1
    磁盘挂载
    SQL Server开启READ_COMMITTED_SNAPSHOT
    视觉开发-相机镜头选型
    使用logstash出现报错com.mysql.jdbc.Driver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library
    linux安装tomcat(转自https://blog.csdn.net/fukai8350/article/details/80467224)
    linux 安装java(转自https://www.cnblogs.com/wjup/p/11041274.html)
    如何统计自动化测试用例的ROI 【投入产出比/投资回报率】
    老男孩老师的博客地址
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/13338874.html
Copyright © 2011-2022 走看看