• Redis的数据类型及使用场景


    1.redis 的数据类型

    • String 字符串
    • Hash 哈希
    • List 列表
    • Set 集合
    • ZSet(Sorted Set) 有序集合

    2.使用场景

    2.1 String

    • 用户token

      可以用redis来记录用户token并设置过期时间

      小龙测试:0>set 1001 tokenslkdjflksdjflkdsj ex 600
      "OK"
      小龙测试:0>get 1001
      "tokenslkdjflksdjflkdsj"
      小龙测试:0>TTL 1001
      "592"
      
    • 主键记录

      分布式的服务可以通过redis来记录主键的最大值

      小龙测试:0>set t_user 1
      "OK"
      
      小龙测试:0>incrby t_user 1
      "2"
      
      小龙测试:0>incrby t_user 1
      "3"
      
      小龙测试:0>get t_user
      "3"
      
    • ip访问

      可以通过redis记录ip访问次数进行黑名单的限制

      
      小龙测试:0>set 127.0.0.1 1 ex 600
      "OK"
      
      小龙测试:0>incrby 127.0.0.1 1
      "2"
      
      小龙测试:0>ttl 127.0.0.1
      "556"
      
      小龙测试:0>get 127.0.0.1
      "2"
      

    2.2 Hash

    • 用户信息等对象的存储

      小龙测试:0>HSET zhucw name "zhuchunwang"
      "1"
      
      小龙测试:0>HSET zhucw age "30"
      "0"
      
      小龙测试:0>HSET zhucw id "100"
      "1"
      
      小龙测试:0>HGET zhucw
      "ERR wrong number of arguments for 'hget' command"
      
      小龙测试:0>HGET zhucw id
      "100"
      
      小龙测试:0>HGETALL zhucw
       1)  "age"
       2)  "30"
       3)  "name"
       4)  "zhuchunwang"
       5)  "id"
       6)  "100"
      

    2.3 List

    • 消息队列 & 电商秒杀

      # 从左侧往mq中放入元素
      小龙测试:0>lpush mq message1
      "1"
      小龙测试:0>lpush mq message2
      "2"
      # 从右侧往mq中放入消息
      小龙测试:0>rpush mq 小龙测试:0>message3
      "3"
      # 查看mq长度
      小龙测试:0>llen mq
      "3"
      # 查看mq从第一个到最后一个(所有元素)
      小龙测试:0>lrange mq 0 -1
       1)  "message2"
       2)  "message1"
       3)  "message3"
       # 查看mq从第一个到第二个
      小龙测试:0>lrange mq 0 1
       1)  "message2"
       2)  "message1"
      小龙测试:0>lrange mq 1 2
       1)  "message1"
       2)  "message3"
      # 从左边截取一个
      小龙测试:0>ltrim mq 0 1
      "OK"
      小龙测试:0>lrange mq 0 -1
       1)  "message2"
       2)  "message1"
      小龙测试:0>lpush mq message4
      "3"
      小龙测试:0>lrange mq 0 -1
       1)  "message4"
       2)  "message2"
       3)  "message1"
      # 从左边取出一个
      小龙测试:0>lpop mq
      "message4"
      小龙测试:0>lrange mq 0 -1
       1)  "message2"
       2)  "message1"
      # 从左边添加两个 message 和 5
      小龙测试:0>lpush mq message 5
      "4"
      # 从右边取走一个
      小龙测试:0>rpop message
      null
      小龙测试:0>rpop mq
      "message1"
      小龙测试:0>lrange mq 0 -1
       1)  "5"
       2)  "message"
       3)  "message2"
      

    2.4 SET

    • 好友集合

      # 新增元素
      小龙测试:0>SADD zcw aaa
      "1"
      小龙测试:0>SADD zcw bbb
      "1"
      小龙测试:0>SADD zcw ccc
      "1"
      小龙测试:0>SADD zcw ccc
      "0"
      # 查看元素
      小龙测试:0>smembers zcw
       1)  "aaa"
       2)  "ccc"
       3)  "bbb"
      小龙测试:0>SADD xm aaa
      "1"
      小龙测试:0>SADD xm ddd
      "1"
      小龙测试:0>SADD xm ddd
      "0"
      小龙测试:0>smembers xm
       1)  "ddd"
       2)  "aaa"
      # 以zcw为基准,xm中没有的
      小龙测试:0>sdiff zcw xm
       1)  "ccc"
       2)  "bbb"
      # zcw 和 xm的交际
      小龙测试:0>sinter zcw xm
       1)  "aaa"
      

    2.5 ZSET

    • 电商排序、热搜等

      # 新增元素
      小龙测试:0>ZADD phone 100 huawei
      "1"
      
      小龙测试:0>ZADD phone 90 xiaomi
      "1"
      
      小龙测试:0>ZADD phone 110 apple
      "1"
      
      小龙测试:0>ZADD phone 80 vivo
      "1"
      
      # 查看元素  从小到大
      小龙测试:0>ZRANGE phone 0 10 WITHSCORES
       1)  "vivo"
       2)  "80"
       3)  "xiaomi"
       4)  "90"
       5)  "huawei"
       6)  "100"
       7)  "apple"
       8)  "110"小龙测试:0>
      # 查看元素 分值从大到小
      小龙测试:0>Zrevrange phone 0 10 withscores
       1)  "apple"
       2)  "110"
       3)  "huawei"
       4)  "100"
       5)  "xiaomi"
       6)  "90"
       7)  "vivo"
       8)  "80"
      
  • 相关阅读:
    hdu5587 BestCoder Round #64 (div.2)
    hdu5569 BestCoder Round #63 (div.2)
    hihocoder1257(构造)(2015北京ACM/ICPC)
    hihocoder 1249(2015ACM/ICPC北京)
    hihocoder1258(水)(2015ACM/ICPC北京站)
    hihiocoder 1255(搜索)(2015ACM/ICPC北京站)
    习题9-8 uva1631
    习题9-8 Uva1632
    Orz
    习题9-6 uva 10723
  • 原文地址:https://www.cnblogs.com/zhucww/p/13305108.html
Copyright © 2020-2023  润新知