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 
  • 相关阅读:
    Which is the best software for MANET simulation?
    CORE—Common Open Research Emulator—INSTALL—Network Emulator
    Open-Source Network Simulators—CORE—Cloonix—GNS3—IMUNES
    mutt—linux命令行发带附件邮件—message file too big
    幼儿园复读生
    【codeforces 779D】String Game
    【BZOJ 1014】 [JSOI2008]火星人prefix
    【t004】切割矩阵
    【BZOJ 1015】 [JSOI2008]星球大战starwar
    【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/13338874.html
Copyright © 2011-2022 走看看