• 基于内存的分布式NoSQL数据库Redis(二)数据结构与通用命令


    知识点05:Redis的数据结构及数据类型

    • 目标:掌握Redis的数据结构及数据类型

    • 路径

      • step1:数据结构
      • step2:数据类型
    • 实施

      • 数据结构:整个Reids中**所有数据以KV结构形式**存在

        • K:作为唯一标识符,唯一标识一条数据,固定为String类型,写入时指定KV,读取时,根据K读取V

        • V:真正存储的数据,可以有多种类型

          • String、Hash、List、Set、Zset、BitMap、HypeLogLog
        • 理解Redis:类似于Java中的一个Map集合,可以存储多个KV,根据K获取V

      • 数据类型

        • 每一种类型的应用场景和命令都是不一样的
        Key:StringValue类型Value值应用场景
        pv_20200101String10000一般用于存储单个数据指标的结果
        person001Hashname:laoer age : 20 sex female用于存储整个对象所有属性值
        uvList{100,200,300,100,600}有序允许重复的集合,每天获取最后一个值
        uv_20200101Set{userid1,userid2,userid3,userid4……}无序且不重复的集合,直接通过长度得到UV
        top10_productZSet【score,element】{10000-牙膏,9999-玩具,9998-电视……}有序不可重复的集合,统计TopN
        user_filterBitMap{0101010101010000000011010}将一个字符串构建位,通过0和1来标记每一位
        product_20200101HypeLogLog{productid1,id2……}类似于Set集合,底层实现原理不一样,数据量大的情况下,性能会更好,结果可能存在一定的误差
        • String类型

          • KV:【String,String】,类似于Java中Map集合的一条KV
        • Hash类型

          • KV:【String,Map集合】:Map集合的嵌套,Map集合中的元素是无序的
        • List类型

          • KV:【String,List】:有序且可重复
        • Set类型

          • KV:【String,Set】:无序且不重复
        • Zset类型

          • KV:【String,TreeMap集合】:Value也类似于Map集合,有序的Map集合
          • 类似于List和Set集合特点的合并:有序且不可重复
    • 小结

      • Redis中的数据是什么结构以及有哪些类型?
        • 数据结构:KV
          • K:String:唯一标识一条数据,用于获取Value
          • V:多种类型:存储的数据
        • Value的数据类型
          • String:Java字符串
            • 【String,String】:一般用于存储单个指标的结果
          • Hash:Java Map集合 / Python 中Dic
            • 【String,Map【k1v1,k2v2……】】
          • List:Java List集合:有序且可重复
            • 【String,List[1,2,3,4,5,6,6,7]】
          • Set:Java Set集合:无序且不可重复
            • 【String,Set[1,2,3,4,5]】
          • Zset:有序且不可重复
            • 【String,TreeMap【k1v1,k2v2 => 按照k排序】】
            • k:score:评分,默认按照评分对元素进行排序
            • v:元素,不能重复

    知识点06:Redis的通用命令

    • 目标:掌握Redis常用的通用命令

    • 实施

      • keys:列举当前数据库中所有Key

      • 语法:keys 通配符

      • del key:删除某个KV

      • exists key :判断某个Key是否存在

      • type key:判断这个K对应的V的类型的

      • expire K 过期时间:设置某个K的过期时间,一旦到达过期时间,这个K会被自动删除

      • ttl K:查看某个K剩余的存活时间

      • select N:切换数据库的

      • Redis默认由16个数据:db0 ~ db15,个数可以通过配置文件修改,名称不能改

        • Redis是一层数据存储结构:所有KV直接存储在数据库中
      • 默认进入db0

      • move key N:将某个Key移动到某个数据库中

      • flushdb:清空当前数据库的所有Key

      • flushall:清空所有数据库的所有Key

      node1:6379> keys *
      1) "s1"
      node1:6379> get s1
      "hadoop"
      node1:6379> set s2 hive
      OK
      node1:6379> get s2
      "hive"
      node1:6379> 
      node1:6379> keys *
      1) "s1"
      2) "s2"
      node1:6379> set a1 spark
      OK
      node1:6379> keys *
      1) "a1"
      2) "s1"
      3) "s2"
      node1:6379> keys a*
      1) "a1"
      node1:6379> keys s*
      1) "s1"
      2) "s2"
      node1:6379> del s1
      (integer) 1
      node1:6379> keys *
      1) "a1"
      2) "s2"
      node1:6379> exists s2
      (integer) 1
      node1:6379> exists s1
      (integer) 0
      node1:6379> 
      node1:6379> hset m1 name zhangsan
      (integer) 1
      node1:6379> hset m1 age 18
      (integer) 1
      node1:6379> keys *
      1) "m1"
      2) "a1"
      3) "s2"
      node1:6379> type m1
      hash
      node1:6379> type s2
      string
      node1:6379> 
      node1:6379> expire a1 20
      (integer) 1
      node1:6379> ttl a1
      (integer) 17
      node1:6379> ttl a1
      (integer) 16
      node1:6379> ttl a1
      (integer) 15
      node1:6379> ttl a1
      (integer) 14
      node1:6379> ttl a1
      (integer) 13
      node1:6379> ttl a1
      (integer) 12
      node1:6379> ttl a1
      (integer) 11
      node1:6379> ttl a1
      (integer) 10
      node1:6379> ttl a1
      (integer) 9
      node1:6379> keys *
      1) "m1"
      2) "s2"
      node1:6379> 
      node1:6379> select 1
      OK
      node1:6379[1]> select 10
      OK
      node1:6379[10]> select 0
      OK
      node1:6379> select 1
      OK
      node1:6379[1]> keys *
      (empty list or set)
      node1:6379[1]> set s1 hue
      OK
      node1:6379[1]> keys *
      1) "s1"
      node1:6379[1]> select 0
      OK
      node1:6379> 
      node1:6379> keys *
      1) "m1"
      2) "s2"
      node1:6379> move m1 1
      (integer) 1
      node1:6379> keys *
      1) "s2"
      node1:6379> select 1
      OK
      node1:6379[1]> keys *
      1) "m1"
      2) "s1"
      node1:6379[1]> flushdb
      OK
      node1:6379[1]> keys *
      (empty list or set)
      node1:6379[1]> select 0
      OK
      node1:6379> keys *
      1) "s2"
      node1:6379> flushall
      OK
      node1:6379> keys *
      (empty list or set)
      node1:6379> 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67
      • 68
      • 69
      • 70
      • 71
      • 72
      • 73
      • 74
      • 75
      • 76
      • 77
      • 78
      • 79
      • 80
      • 81
      • 82
      • 83
      • 84
      • 85
      • 86
      • 87
      • 88
      • 89
      • 90
      • 91
      • 92
      • 93
      • 94
      • 95
      • 96
      • 97
      • 98
      • 99
      • 100
      • 101
      • 102
      • 103
      • 104
      • 105
      • 106
      • 107
      • 108
      • 109
      • 110
      • 111
      • 112
    • 小结

      • 掌握Redis常用的通用命令

    AI副业实战手册:http://www.yibencezi.com/notes/253200?affiliate_id=1317(目前40+工具及实战案例,持续更新,实战类小册排名第一,做三个月挣不到钱找我退款,交个朋友的产品)

    后记

    📢博客主页:https://manor.blog.csdn.net

    📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
    📢本文由 Maynor 原创,首发于 CSDN博客🙉
    📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
    📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12394313.htmls

  • 相关阅读:
    2023计算机毕设选题 python毕业设计如何选题
    springboot接口防抖【防重复提交】
    感悟2022年:玫琳凯公布今年上半年以来的奖项、里程碑和成就
    手撕LRU缓存——LinkedHashMap简易源码
    半小时制作简单版澳大利亚导游地图,太简单了,你也可以
    Linux 权限管理深剖
    小程序导航栏透明,精准设置小程序自定义标题的高度和定位
    树和二叉树的相关概念及结构
    同花顺_代码解析_技术指标_Z_3
    尚医通 (十八) --------- EasyExcel 集成
  • 原文地址:https://blog.csdn.net/xianyu120/article/details/133787874