zoukankan      html  css  js  c++  java
  • 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"
      
  • 相关阅读:
    〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示
    〖Linux〗Kubuntu, the application 'Google Chrome' has requested to open the wallet 'kdewallet'解决方法
    unity, dll is not allowed to be included or could not be found
    android check box 自定义图片
    unity, ios skin crash
    unity, Collider2D.bounds的一个坑
    unity, ContentSizeFitter立即生效
    类里的通用成员函数应声明为static
    unity, Gizmos.DrawMesh一个坑
    直线切割凹多边形
  • 原文地址:https://www.cnblogs.com/zhucww/p/13305108.html
Copyright © 2011-2022 走看看