• 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 
  • 相关阅读:
    【struts1】--Servlet讲解MVC框架基本原理
    bigDecimal使用方法详解(转载)
    【web】--Ajax data选择性赋值
    【JSTL】--格式化日期--drp217
    2021-01-01:https加解密机制,你了解多少?
    2020-12-31:tcp三次握手,最后一次失败,网络会怎么样?
    2020-12-30:生产环境 CPU 占用过高,你如何解决?
    2020-12-29:mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉吗,还是删除了关系?
    2020-12-28:java中,生产环境服务器变慢,如何诊断处理?
    2020-12-27:网络调试工具都用了什么?
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/13338874.html
Copyright © 2020-2023  润新知